是否可以用简单的循环替换glutMainLoop()?

时间:2012-05-21 10:56:14

标签: opengl glut

是否可以使用简单循环替换glutMainLoop()(例如whilefor)并在此循环中调用所有回调?

我已经完成了这个并且图片显示正常但是窗口(其中显示的图片)没有响应(无法移动它)。

glutMainLoop()调用的次数多于回调吗?

3 个答案:

答案 0 :(得分:19)

如果您使用的是FreeGLUT,则可以使用glutMainLoopEvent。它执行一个循环处理事件循环,因此您可以循环调用它。

while(...)
{
  glutMainLoopEvent();
  //do other stuff.
}

答案 1 :(得分:2)

glutMainLoop也处理所有窗口通信,因此如果要替换它,您将需要使用(另一个)库,或者编写系统特定代码来解析来自操作系统的通信。但是,互联网上有很多例子,至少对于MS Windows而言。

Here's MSDN arcticle about Win32 main function.

答案 2 :(得分:1)

  

glutMainLoop()调用的次数多于回调吗?

是的,它负责整个事件管理,比如从图形系统获取事件。然后它使用事件数据调用回调。

如果您想进行自己的事件处理,请不要使用GLUT。还有其他框架可以让您对事件进行较低级别的访问,并期望您进行所有事件调度。看看GLFW和SDL。