如何精细控制过剩的内环

时间:2011-12-15 16:28:21

标签: opengl callback glut timing

我想在过剩程序中控制主循环,我想更好地理解以下回调的执行顺序是什么:

glutDisplayFunc(drawGLScene);
glutIdleFunc(idle);
glutTimerFunc(TIMER_MS, update, 0);

我很难理解在程序中如何调用这个过滤器。

2 个答案:

答案 0 :(得分:6)

只要您想要精确控制事件循环,就可以放弃GLUT了。使用SDL,GLFW或从头开始。了解GLUT的内部工作原理无助于您获得良好的控制。

答案 1 :(得分:1)

你不能。如果你想控制主循环,你将不得不使用像GLFW这样的东西。 Freeglut,一个更现代的过剩扩展可能会让你这样做。 GLUT的工作方式是指定一些回调,启动主循环,然后在适当的时候调用回调。

它可能在帧的开头调用定时器回调,以便您可以更新自上一帧时间后的值,它可能在需要渲染帧时调用显示回调,并且它可能调用空闲在呈现下一帧之前必须等待的回调(可能在你的帧速率被限制在60 fps的情况下,因此如果你在小于.017秒内渲染帧,那么它可能会调用空闲回调,直到它准备好将一个框架推到屏幕上。)