opengl: glFlush() vs glFinish()

Je vais avoir de la difficulté à distinguer la différence pratique entre un appel glFlush() et glFinish().

Les docs disent que glFlush() et glFinish() va pousser tous les tamponnée opérations à OpenGL de sorte que l'on peut être assuré qu'ils seront tous exécutés, la différence étant que glFlush() retourne immédiatement, où que glFinish() blocs jusqu'à ce que toutes les opérations sont terminées.

Avoir lu les définitions, j'ai pensé que si je devais utiliser glFlush() que je serais probablement courir dans le problème de la soumission des opérations à OpenGL qu'il pourrait s'exécuter. Donc, juste pour essayer, j'ai troqué mon glFinish() pour un glFlush() et voilà, mon programme est exécuté (autant que je puisse en juger), exactement le même; taux de rafraîchissement, de l'utilisation des ressources, tout était le même.

Alors je me demandais si il y a une grande différence entre les deux appels, ou si mon code ne fait courir aucun différent. Ou l'endroit où il devrait être utilisé contre l'autre.
J'ai aussi pensé que OpenGL aurait certains appellent comme glIsDone() pour vérifier si oui ou non tous de la mémoire tampon des commandes pour un glFlush() sont complètes ou pas (donc on n'est pas d'envoyer des opérations d'OpenGL plus vite qu'ils ne peuvent être exécutées), mais j'ai pu trouver pas une telle fonction.

Mon code est le jeu typique de la boucle:

while (running) {
    process_stuff();
    render_stuff();
}
InformationsquelleAutor jay.lee | 2010-01-26