J'ai du mal à distinguer la différence pratique entre appeler glFlush()
et glFinish()
.
La documentation dit cela glFlush()
et glFinish()
poussera toutes les opérations tamponnées vers OpenGL afin que l'on puisse être assuré qu'elles seront toutes exécutées, la différence étant que glFlush()
retourne immédiatement où sous forme de glFinish()
blocs jusqu'à ce que toutes les opérations soient terminées.
Après avoir lu les définitions, j'ai pensé que si je devais utiliser glFlush()
cela, je me heurterais probablement au problème de soumettre plus d'opérations à OpenGL qu'il ne pourrait en exécuter. Donc, juste pour essayer, j'ai troqué mon glFinish()
pour un glFlush()
et voilà, mon programme a fonctionné (pour autant que je sache), exactement la même chose; taux de trame, utilisation des ressources, tout était pareil.
Je me demande donc s'il y a beaucoup de différence entre les deux appels, ou si mon code les fait fonctionner pas différemment. Ou où l'un devrait être utilisé par rapport à l'autre. J'ai également pensé qu'OpenGL aurait un appel comme glIsDone()
pour vérifier si toutes les commandes tamponnées pour un glFlush()
sont complètes ou non (donc on n'envoie pas d'opérations à OpenGL plus rapidement qu'elles ne peuvent être exécutées), mais je n'ai pas pu trouver une telle fonction .
Mon code est la boucle de jeu typique:
while (running) {
process_stuff();
render_stuff();
}