8

是否可以glutMainLoop()用简单的循环(例如whileor for)替换,并且在这个循环中只调用所有回调?

我已经这样做了,图片显示正常,但窗口(其中显示图片)没有响应(无法移动它)。

glutMainLoop()调用多于回调吗?

4

3 回答 3

22

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

while(...)
{
  glutMainLoopEvent();
  //do other stuff.
}
于 2012-05-21T11:07:42.167 回答
1

glutMainLoop还处理所有窗口通信,因此如果要替换它,您将需要为此使用(另一个)库,或者编写系统特定的代码解析来自操作系统的通信。不过,Internet 上有很多示例,至少对于 MS Windows。

这是关于 Win32 主要功能的 MSDN 文章。

于 2012-05-21T10:59:37.573 回答
1

glutMainLoop() 调用的不仅仅是回调吗?

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

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

于 2012-05-21T14:44:30.610 回答