acabo de empezar a usar OpenGL y parece que no es fácil entender el funcionamiento de glutMainLoop()
¿qué ocurre realmente allí? ¿Permanece ahí sin hacer nada hasta que responde alguna de las funciones?opengl glutmainloop()
Respuesta
Llama a su pantalla de devolución de llamada una y otra vez, llamando al ralentí para que pueda mantener un framerate específico si es posible, y otros si es necesario (como cambiar el tamaño de la ventana o desencadenar un evento de entrada).
Básicamente, dentro de esta función se encuentra el bucle de programa principal, donde GLUT hace la mayor parte del trabajo por usted y le permite simplemente configurar la lógica de programa específica en estas devoluciones de llamada. Ha pasado un tiempo desde que trabajé con GLUT, y ciertamente es confuso al principio.
En su pantalla, la devolución de llamada obviamente debe ser su lógica principal para dibujar lo que sea que debería estar sucediendo. En la devolución de llamada inactiva debe haber algunas operaciones muy livianas para determinar cuál debe ser el cambio de estado desde la última vez que se llamó a la pantalla a la próxima vez. Por ejemplo, si está animando algo, aquí es donde cambia su posición u orientación.
Es exactamente como StrixVaria ha declarado.
glutMainLoop ingresa al ciclo de procesamiento de eventos GLUT. Esta rutina debe ser llamada como máximo una vez en un programa GLUT. Una vez llamado, esta rutina nunca volverá. Llamará según sea necesario a todas las devoluciones de llamada que se hayan registrado.
Tomado de here
usando OpenGL y GLUT juntos significa que estaría escribiendo un programa de 'exceso' que utiliza comandos de OpenGL en las funciones de devolución de llamada. main contiene funciones de exceso. muchas funciones de saturación necesitan una función de devolución de llamada para ser registradas. Esas funciones de devolución de llamada generalmente contienen comandos opengl.
En respuesta a su pregunta, ahora cuando está claro que está escribiendo principalmente un programa de exceso, también debe tenerse en cuenta que la función glutMainLoop ejecuta las funciones de devolución de llamada cuando sea necesario, que a su vez ejecuta los comandos de apertura.
Bien glutMainLoop es la función principal que sigue llamando y llamando a las funciones de visualización y que también mantiene su ventana realmente abierta. Descubrirás que OpenGL no es tan aterrador.
- 1. color de fondo en OpenGL
- 2. OpenGL u OpenGL ES
- 3. ¿Cómo usar la transparencia alfa en OpenGL?
- 4. Cuda y OpenGL Interop
- 5. OpenGL textura invertida
- 6. GCC - ld no vincula opengl
- 7. OpenGL antialiasing no funciona
- 8. OpenGL niebla contra OpenGL ES niebla
- 9. OpenGL ES y sombreadores compatibles con OpenGL
- 10. referencia indefinida a `GlewInit' - OpenGL
- 11. OpenGL GLUT ventana muy lenta, ¿por qué?
- 12. WindowGL OpenGL
- 13. OpenGL SubTexturing
- 14. Animación OpenGL
- 15. OpenGL Rotación
- 16. Diferencia entre OpenGL ES 2.0 y OpenGL 4
- 17. Diferencia en iOS OpenGL ES y Android OpenGL ES
- 18. ¿Es OpenGL compatible con versiones anteriores de OpenGL ES?
- 19. ¿Guía para escribir código compatible con OpenGL y OpenGL ES?
- 20. Transición de OpenGL ES 1.1 a OpenGL ES 2.0
- 21. Elija OpenGL ES 1.1 u OpenGL ES 2.0?
- 22. opengl: glFlush() vs. glFinish()
- 23. OpenGL Core y compatibilidad
- 24. depreciación GLEW y openGL
- 25. OpenGL 3.2 con NSOpenGLView
- 26. Animación de esqueleto OpenGL
- 27. Ejemplo 2D con OpenGL
- 28. Aprendizaje OpenGL en Ubuntu
- 29. iPhone OpenGl render texto
- 30. OpenGl con Python
Glut me ha marcado una cicatriz de por vida –
GLUT es doloroso y no es bonito ... en realidad me desconectó de la programación de gráficos. – StrixVaria
La rotación era una locura para mí, como 'wtf, ¿hay una coordenada z?' Una vez que tomé la física y aprendí algunas reglas, todo se calmó. –