সমস্ত টিউটোরিয়ালগুলিতে আমি ভিএও (ভার্টেক্স অ্যারে অবজেক্টস) সম্পর্কে জানতে পারি, তারা ভার্টেক্স অ্যাট্রিবিউটগুলি কনফিগার করে এবং একটি ভিবিও (ভার্টেক্স বাফার অবজেক্ট) বাঁধাই করে কীভাবে সেগুলি ব্যবহার করতে হয় তা দেখায়। তবে আমি একটি ভিএও তৈরি করতে চাই যা স্থির শেডারের সাথে একত্রে ভিবিওর সেটের জন্য কনফিগার করা হবে, যেখানে প্রতিটি বাফার একই ডেটা প্যাটার্ন (ভার্টেক্স, ইউভি, রঙ ইত্যাদি) ব্যবহার করে। সুতরাং, আমি একাধিক ভিবিওর জন্য একটি ভিএওও তৈরি করতে চাই যা একটি শেডার ব্যবহার করে আঁকা হবে।
আমি এটিতে কোনও ডেমো খুঁজে পেলাম না, তাই আমি ঠিক করে দেখলাম এটি চেষ্টা করে দেখুন। কিন্তু এটি কাজ করে না এবং glDrawArrayকলটিতে ক্র্যাশ হয় । দেখে মনে হচ্ছে ভিবিও আবদ্ধ নয়। আমি যে কোডটি ব্যবহার করছি তা এখানে:
রেন্ডারিং:
/* Prepare vertex attributes */
glBindVertexArrayOES(vao);
/* Upload the buffer to the GPU */
glBindBuffer(GL_ARRAY_BUFFER, pool->next());
glBufferSubData(GL_ARRAY_BUFFER, 0, parts * buffer.stride() * 6, buffer.getBuffer());
/* Draw the triangles */
glDrawArrays(GL_TRIANGLES, 0, parts * 6);
glBindVertexArrayOES(0);
ভিএও সৃষ্টি:
glBindVertexArrayOES(vao);
glEnableVertexAttribArray(ls.position);
glVertexAttribPointer(ls.position, 2, GL_FLOAT, GL_FALSE, buffer.stride(), 0);
glEnableVertexAttribArray(ls.color);
glVertexAttribPointer(ls.color, 3, GL_FLOAT, GL_FALSE, buffer.stride(), GL_BUFFER_OFFSET(buffer.dataTypeSize * 2));
glBindVertexArrayOES(0);
lsএমন একটি সাধারণ যেখানে structবৈশিষ্ট্যগুলির অবস্থানগুলি ধারণ করে।
রেন্ডারিং অংশে, অদলবদল করা glBindBufferএবং glBindVertexArrayOESচারপাশে কোনও কাজ হয়নি।
সুতরাং, প্রশ্নটি হল: এটি করা কি সম্ভব, বা প্রতিটি বাফারের জন্য আমাকে ভিএও তৈরি করতে হবে? এবং যদি আমাকে প্রতিটি ভিবিওর জন্য একটি ভিএও তৈরি করতে হয়, তবে কি glBufferSubDataকোনও ভিএওর সাথে মিলিয়ে ভিবিওর ডেটা আপডেট করা সম্ভব ?