opengl: question about glutMainLoop()

2019-09-18 16:22发布

can somebody explain how does glutMainLoop work? and second question, why glClearColor(0.0f, 0.0f, 1.0f, 1.0f); defined after glutDisplayFunc(RenderScene); cause firstly we call glClear(GL_COLOR_BUFFER_BIT); and only then define 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条回答
Melony?
2楼-- · 2019-09-18 16:55

glutMainLoop() just runs a platform-specific event loop and calls any registered glut*Func() callbacks as needed.

RenderScene() won't be called by GLUT until you call glutMainLoop(). So in reality glClearColor() gets called first, not glClear().

查看更多
forever°为你锁心
3楼-- · 2019-09-18 16:57
glutDisplayFunc(RenderScene);

This only sets the callback function, it doesn't actually call it until it enters the main app loop in the call to glutMainLoop. So glClearColor comes before glClear.

查看更多
登录 后发表回答