opengl: question sur glutMainLoop ()

quelqu’un peut-il expliquer comment fonctionne glutMainLoop ? et deuxième question, pourquoi glClearColor(0.0f, 0.0f, 1.0f, 1.0f); défini après glutDisplayFunc(RenderScene); parce que nous appelons d’abord glClear(GL_COLOR_BUFFER_BIT); et seulement alors définir glClearColor(0.0f, 0.0f, 1.0f, 1.0f);

 int main(int argc, char* argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(800, 00); glutInitWindowPosition(300,50); glutCreateWindow("GLRect"); glutDisplayFunc(RenderScene); glutReshapeFunc(ChangeSize); glClearColor(0.0f, 0.0f, 1.0f, 1.0f); <-- glutMainLoop(); return 0; } void RenderScene(void) { // Clear the window with current clearing color glClear(GL_COLOR_BUFFER_BIT); // Set current drawing color to red // RGB glColor3f(1.0f, 0.0f, 1.0f); // Draw a filled rectangle with current color glRectf(0.0f, 0.0f, 50.0f, -50.0f); // Flush drawing commands glFlush(); } 

glutMainLoop() exécute simplement une boucle d’événement spécifique à la plate-forme et appelle les rappels de glut*Func() enregistrés, le cas échéant.

RenderScene() ne sera pas appelé par GLUT avant que vous glutMainLoop() appelé glutMainLoop() . Donc, en réalité, glClearColor() est appelé en premier, pas glClear() .

 glutDisplayFunc(RenderScene); 

Cela définit uniquement la fonction de rappel, il ne l’appelle pas avant d’entrer dans la boucle principale de l’application dans l’appel à glutMainLoop . Donc, glClearColor vient avant glClear .