আপনার যদি এমন একটি ভার্টেক্স বাফার থাকে:
var vertices = [
0.0, 0.0, 0.0,
1.0, 0.0, 0.0,
0.0, 0.6, 0.0,
1.0, 0.6, 0.0,
0.5, 1.0, 0.0
]
এবং কেবল এটিকে এটির মতো আঁকুন:
// Create an empty buffer object
var vertex_buffer = gl.createBuffer();
// Bind appropriate array buffer to it
gl.bindBuffer(gl.ARRAY_BUFFER, vertex_buffer);
// Pass the vertex data to the buffer
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
/* [...] */
// Draw the lines
gl.drawArrays(gl.LINES, 0, 5);
এটি প্রতিটি লাইন বিভাগের জন্য দুটি উত্সর্গীকৃত স্থানাঙ্ক প্রয়োজন। সঙ্গে vertices
উপরের হিসাবে সংজ্ঞায়িত, এটি শুধুমাত্র সম্ভব হবে দুই আঁকা দুই লাইন :
আপনার যদি নিম্নলিখিত সূচকগুলি সংজ্ঞায়িত করা থাকে:
var indices = [
0, 2,
2, 4,
4, 3,
3, 2,
2, 1,
1, 0,
0, 3,
3, 1
]
একই লম্বগুলি বার বার ছেদ করে এমন লাইনগুলি আঁকানো সম্ভব। এটি অপ্রয়োজনীয়তা হ্রাস করে। যদি আপনি সূচক বাফারটিকে আবদ্ধ করেন এবং GPU কে indecies অ্যারেতে নির্দিষ্ট আদেশ অনুসারে শীর্ষে সংযোগকারী লাইন বিভাগগুলি আঁকতে বলুন:
var index_buffer = gl.createBuffer();
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, index_buffer);
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), gl.STATIC_DRAW);
// draw geometry lines by indices
gl.drawElements(gl.LINES, 16, gl.UNSIGNED_SHORT, index_buffer);
বারে বারে একই শিখুনকে নতুন সংজ্ঞা না দিয়েই জটিল চিত্র অঙ্কন করা যায়। এটি ফলাফল:
সূচকগুলি ছাড়াই একই ফলাফল অর্জন করতে, ভারটিেক্স বাফারটি নিম্নলিখিতগুলির মতো হওয়া উচিত:
var vertices = [
0.0, 0.0, 0.0,
0.0, 0.6, 0.0,
0.0, 0.6, 0.0,
0.5, 1.0, 0.0,
0.5, 1.0, 0.0,
1.0, 0.6, 0.0,
1.0, 0.6, 0.0,
0.0, 0.6, 0.0,
0.0, 0.6, 0.0,
1.0, 0.0, 0.0,
1.0, 0.0, 0.0,
0.0, 0.0, 0.0,
0.0, 0.0, 0.0,
1.0, 0.6, 0.0,
1.0, 0.6, 0.0,
1.0, 0.0, 0.0
]
/* [...] */
// Draw the lines
gl.drawArrays(gl.LINES, 0, 16);
একই চিত্রে যার ফলাফল:
সঞ্চিত কোণে বিশাল রিডানডেন্সি নোট করুন।