Saya melihat bahwa OpenGL versi 3 dan lebih tinggi menghilangkan penggunaan rendering sisi klien. Mode segera telah dihilangkan, dan array vertex tampaknya sudah usang. Sebaliknya, jika saya mengerti dengan benar, VBO adalah cara utama rendering simpul.
Sementara saya melihat logika di balik memiliki cara yang seragam untuk merender semuanya, apakah ini kasus bahwa VBO tidak memiliki kerugian besar atas array vertex? Saya pikir VBO seharusnya adalah buffer besar yang mengandung> 1MB data, secara umum. Bagaimana jika saya memiliki pemandangan yang memiliki banyak geometri yang lebih kecil? Saya memiliki grafik adegan dengan sejumlah besar node, yang masing-masing membutuhkan transformasi sendiri, dll. Setiap node juga harus dapat dihapus secara terpisah, ditambahkan secara terpisah, dll. Saya menggunakan array vertex sebelumnya. Jadi pertanyaan pertama saya adalah apakah, jika saya beralih ke VBO, akan ada overhead yang lebih besar untuk objek grafik adegan saya sekarang karena VBO perlu dialokasikan untuk setiap objek.
Kekhawatiran lain adalah bahwa geometri yang saya render bisa sangat dinamis. Dalam kasus terburuk, mungkin ada saat-saat ketika semua geometri perlu dikirim ulang setiap frame untuk beberapa periode waktu. Akankah VBO memiliki kinerja yang lebih buruk daripada array vertex dalam kasus penggunaan ini, atau apakah VBO paling buruk berfungsi seperti halnya array vertex tetapi tidak lebih?
Jadi, dalam format yang lebih ringkas, pertanyaan saya adalah:
1) Apakah ada overhead yang substansial untuk mengalokasikan / membatalkan alokasi VBO (maksud saya hanya tindakan mendirikan buffer)?
2) Jika saya memperbarui data dari CPU setiap frame, dapatkah ini jauh lebih buruk daripada jika saya menggunakan array vertex?
Dan akhirnya, saya ingin tahu:
3) Jika jawaban untuk salah satu dari pertanyaan di atas adalah "ya", mengapa mencabut mode rendering lain yang dapat memiliki keunggulan dibandingkan VBO? Apakah ada sesuatu yang saya lewatkan di sini, seperti teknik yang seharusnya saya gunakan untuk mengurangi beberapa biaya alokasi potensial ini, dll.?
4) Apakah jawaban untuk semua pertanyaan ini berubah secara substansial tergantung pada versi OpenGL apa yang saya gunakan? Jika saya refactor kode saya menjadi OpenGL 3 atau 4 yang kompatibel dengan maju dengan menggunakan VBO dengan cara yang performan, apakah teknik yang sama akan berfungsi dengan baik dengan OpenGL 2, atau kemungkinan teknik tertentu jauh lebih cepat dengan OpenGL 3 + dan yang lainnya dengan OpenGL 2?
Saya mengajukan pertanyaan ini pada stack overflow, tetapi saya memposting ulang di sini karena saya menyadari situs ini mungkin lebih sesuai untuk pertanyaan saya.