有人可以解释一下glutMainLoop
如何工作的吗? 第二个问题,为什么glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
在glutDisplayFunc(RenderScene);
之后定义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 // 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()
只运行一个特定于平台的事件循环,并根据需要调用任何已注册的glut*Func()
回调函数。
在调用glutMainLoop()
之前,GLUT不会调用RenderScene()
glutMainLoop()
。 所以实际上glClearColor()
调用glClear()
,而不是glClear()
。
glutDisplayFunc(RenderScene);
这只设置了回调函数,它实际上没有调用它,直到它在对glutMainLoop
的调用中进入主应用程序循环。 所以glClearColor
出现在glClear
之前。
以上就是c/c++开发分享opengl:关于glutMainLoop()的问题相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/519024.html