Al leer el libro rojo que encontré:La comprensión de la relación entre glutDisplayFunc y glutPostRedisplay
glutDisplayFunc (void (* func) (void)) es la primera y más importante función de devolución de llamada de eventos verá. Siempre que GLUT determine que el contenido de la ventana debe mostrarse , la función de devolución de llamada registrada por glutDisplayFunc() es ejecutada. Por lo tanto, debe poner todas las rutinas que necesita para volver a dibujar la escena en la función de devolución de llamada .
Si el programa cambia el contenido de la ventana, a veces tendrá llamar glutPostRedisplay(), que da glutMainLoop() un empujón para llamar la devolución de llamada de visualización registrado en su próxima oportunidad
¿En qué ocasiones se debe llamar a glutPostRedisplay()? A partir de este párrafo, no entiendo por qué se necesita su funcionalidad.
No entiendo por qué no deberías llamar a glutDisplayFunc en lugar de glutPostRedisplay en el caso que menciones teniendo en cuenta que glutPostRedisplay finalmente termina llamando a glutDisplayFunc. ¿Cuál es la importancia de la cola? ¿Puede retrasar el procesamiento mientras se espera una condición? – andandandand
@omgzor: en el ejemplo anterior, podrías hacer eso. Pero esa no es la mejor opción. Verá, es mejor no llamarlo directamente, sino ponerlo en una cola. Si, por ejemplo, desea animación y llama a displayFunc directamente desde displayFunc, su programa no responderá. Porque habrás bloqueado el ciclo. Es por eso que es mejor publicar el evento y dejar que el lazo principal lo maneje en su turno –
@omgzor: No retrasará la renderización. Se retrasará todo lo demás :) –