opengl:关于glutMainLoop()的问题

时间:2010-05-24 16:08:26

标签: c opengl graphics glut

有人可以解释glutMainLoop的工作原理吗? 第二个问题,为什么glClearColor(0.0f, 0.0f, 1.0f, 1.0f);定义了 在glutDisplayFunc(RenderScene);之后,首先我们致电glClear(GL_COLOR_BUFFER_BIT); 然后才定义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
    //         R     G     B
    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();
    }

2 个答案:

答案 0 :(得分:1)

glutMainLoop()只运行特定于平台的事件循环,并根据需要调用任何已注册的glut*Func()回调。

在致电RenderScene()之前,GLUT不会调用

glutMainLoop()。所以实际上glClearColor()首先被调用,而不是glClear()

答案 1 :(得分:0)

glutDisplayFunc(RenderScene);

这只设置了回调函数,它实际上没有调用它,直到它在glutMainLoop的调用中进入主应用程序循环。因此glClearColor出现在glClear之前。