是否可以使用简单循环替换glutMainLoop()
(例如while
或for
)并在此循环中调用所有回调?
我已经完成了这个并且图片显示正常但是窗口(其中显示的图片)没有响应(无法移动它)。
glutMainLoop()
调用的次数多于回调吗?
答案 0 :(得分:19)
如果您使用的是FreeGLUT,则可以使用glutMainLoopEvent
。它执行一个循环处理事件循环,因此您可以循环调用它。
while(...)
{
glutMainLoopEvent();
//do other stuff.
}
答案 1 :(得分:2)
glutMainLoop
也处理所有窗口通信,因此如果要替换它,您将需要使用(另一个)库,或者编写系统特定代码来解析来自操作系统的通信。但是,互联网上有很多例子,至少对于MS Windows而言。
答案 2 :(得分:1)
glutMainLoop()调用的次数多于回调吗?
是的,它负责整个事件管理,比如从图形系统获取事件。然后它使用事件数据调用回调。
如果您想进行自己的事件处理,请不要使用GLUT。还有其他框架可以让您对事件进行较低级别的访问,并期望您进行所有事件调度。看看GLFW和SDL。