有人可以解释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();
}
答案 0 :(得分:1)
glutMainLoop()
只运行特定于平台的事件循环,并根据需要调用任何已注册的glut*Func()
回调。
RenderScene()
之前,GLUT不会调用 glutMainLoop()
。所以实际上glClearColor()
首先被调用,而不是glClear()
。
答案 1 :(得分:0)
glutDisplayFunc(RenderScene);
这只设置了回调函数,它实际上没有调用它,直到它在glutMainLoop
的调用中进入主应用程序循环。因此glClearColor
出现在glClear
之前。