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