Ich habe Probleme, den praktischen Unterschied zwischen Anrufen glFlush()
und zu unterscheiden glFinish()
.
Die Dokumente sagen dies glFlush()
und glFinish()
werden alle gepufferten Operationen an OpenGL senden, so dass man sicher sein kann, dass sie alle ausgeführt werden. Der Unterschied besteht darin, dass sie glFlush()
sofort als glFinish()
Blöcke zurückgegeben werden, bis alle Operationen abgeschlossen sind.
Nachdem ich die Definitionen gelesen hatte, stellte ich fest, dass ich bei Verwendung glFlush()
wahrscheinlich auf das Problem stoßen würde, mehr Operationen an OpenGL zu senden, als ausgeführt werden könnten. Also, nur um es zu versuchen, tauschte ich meine glFinish()
gegen a glFlush()
und siehe da, mein Programm lief (soweit ich das beurteilen konnte), genau das gleiche; Bildraten, Ressourcennutzung, alles war gleich.
Ich frage mich also, ob es einen großen Unterschied zwischen den beiden Aufrufen gibt oder ob mein Code sie nicht anders laufen lässt. Oder wo einer gegen den anderen verwendet werden sollte. Ich dachte mir auch, dass OpenGL einen Aufruf haben würde, um glIsDone()
zu überprüfen, ob alle gepufferten Befehle für a glFlush()
vollständig sind oder nicht (so sendet man Operationen nicht schneller an OpenGL, als sie ausgeführt werden können), aber ich konnte keine solche Funktion finden .
Mein Code ist die typische Spielschleife:
while (running) {
process_stuff();
render_stuff();
}