Mam problem z odróżnieniem praktycznej różnicy między dzwonieniem glFlush()
a glFinish()
.
Docs powiedzieć, że glFlush()
i glFinish()
pchnie wszystkie buforowane operacje OpenGL, dzięki czemu można mieć pewność, że wszystko będzie wykonane, z tą różnicą, że glFlush()
wraca natychmiast, gdzie jako glFinish()
bloki, aż wszystkie operacje są kompletne.
Po przeczytaniu definicji doszedłem do wniosku, że gdybym użył glFlush()
tego, prawdopodobnie napotkałbym problem przesyłania większej liczby operacji do OpenGL, niż jest w stanie wykonać. Tak więc, żeby spróbować, zamieniłem mój glFinish()
na a glFlush()
i lo i oto mój program działał (o ile mogłem powiedzieć), dokładnie to samo; liczba klatek na sekundę, wykorzystanie zasobów, wszystko było takie samo.
Zastanawiam się więc, czy istnieje duża różnica między tymi dwoma wywołaniami, czy też mój kod sprawia, że działają tak samo. Lub gdzie jeden powinien być używany w porównaniu z drugim. Pomyślałem również, że OpenGL będzie miał wywołanie, glIsDone()
aby sprawdzić, czy wszystkie buforowane polecenia dla a glFlush()
są kompletne, czy nie (więc nie można wysyłać operacji do OpenGL szybciej, niż można je wykonać), ale nie mogłem znaleźć takiej funkcji .
Mój kod to typowa pętla gry:
while (running) {
process_stuff();
render_stuff();
}