Saya mengalami masalah dalam membedakan perbedaan praktis antara menelepon glFlush()
dan glFinish()
.
Docs mengatakan bahwa glFlush()
dan glFinish()
akan mendorong semua operasi yang di-buffer ke OpenGL sehingga seseorang dapat yakin semuanya akan dieksekusi, perbedaannya adalah yang glFlush()
langsung mengembalikan di mana sebagai glFinish()
blok sampai semua operasi selesai.
Setelah membaca definisinya, saya membayangkan bahwa jika saya menggunakannya glFlush()
, saya mungkin akan mengalami masalah dalam mengirimkan lebih banyak operasi ke OpenGL daripada yang bisa dijalankannya. Jadi, hanya untuk mencoba, saya menukar saya glFinish()
untuk a glFlush()
dan lihatlah, program saya berjalan (sejauh yang saya tahu), persis sama; frekuensi gambar, penggunaan sumber daya, semuanya sama.
Jadi saya bertanya-tanya apakah ada banyak perbedaan antara kedua panggilan tersebut, atau jika kode saya membuatnya berjalan tidak berbeda. Atau di mana salah satu harus digunakan vs. yang lain. Saya juga membayangkan bahwa OpenGL akan memiliki beberapa panggilan glIsDone()
untuk memeriksa apakah semua perintah yang di-buffer untuk a glFlush()
lengkap atau tidak (jadi seseorang tidak mengirim operasi ke OpenGL lebih cepat daripada yang dapat dijalankan), tetapi saya tidak dapat menemukan fungsi seperti itu .
Kode saya adalah loop permainan yang khas:
while (running) {
process_stuff();
render_stuff();
}