2010-05-24 108 views
0

有人可以解释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);opengl:关于glutMainLoop的问题()

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(); 
    } 

回答

1

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

RenderScene()将不会由GLUT调用,直到您致电glutMainLoop()。因此,实际上glClearColor()被首先调用,而不是glClear()

0
glutDisplayFunc(RenderScene); 

这只会回调函数,它实际上并没有调用它,直到它进入在调用glutMainLoop主应用程序循环。所以glClearColor之前glClear