Arama glFlush()
ile arasındaki pratik farkı ayırt etmekte güçlük çekiyorum glFinish()
.
Dokümanlar şunu söylüyor glFlush()
ve glFinish()
tüm tamponlu işlemleri OpenGL'ye itecek, böylece hepsinin yürütüleceğinden emin olabilir, aradaki fark, tüm işlemler tamamlanana kadar bloklar halinde glFlush()
hemen glFinish()
dönmesidir.
Tanımları okuduktan sonra, kullanacak glFlush()
olursam, muhtemelen OpenGL'ye yürütebileceğinden daha fazla işlem gönderme problemiyle karşılaşacağımı düşündüm . Yani, sadece denemek için, glFinish()
a glFlush()
ve lo'yu değiştirdim ve işte, programım çalıştı (söyleyebildiğim kadarıyla), tamamen aynı; kare hızları, kaynak kullanımı, her şey aynıydı.
Bu yüzden iki arama arasında çok fark olup olmadığını veya kodumun onları farklı çalıştırıp çalıştırmadığını merak ediyorum. Veya birinin diğerine göre nerede kullanılması gerektiği. Ayrıca glIsDone()
, OpenGL'nin a için tüm arabelleğe alınmış komutların glFlush()
tamamlanmış olup olmadığını kontrol etmek gibi bir çağrısı olacağını düşündüm (bu nedenle, OpenGL'ye çalıştırılabileceklerinden daha hızlı işlemler gönderilmez), ancak böyle bir işlev bulamadım .
Benim kodum tipik oyun döngüsü:
while (running) {
process_stuff();
render_stuff();
}