我刚开始使用OpenGL,似乎不容易理解glutMainLoop()
在那里发生了什么?在任何函数调用响应之前,它是否一直无所事事?
答案 0 :(得分:18)
它一遍又一遍地调用你的显示回调,在两者之间调用空闲,以便它可以在可能的情况下保持特定的帧速率,如果有必要,可以保持其他帧率(例如,如果你调整窗口大小或触发输入事件)。
本质上,在此函数中是主程序循环,其中GLUT为您完成大部分工作,并允许您在这些回调中简单地设置特定的程序逻辑。我和GLUT合作已经有一段时间了,起初肯定会让人感到困惑。
在你的显示中,回调显然应该是你绘制应该进行的任何事情的主要逻辑。在空闲回调应该是一些非常轻量级的操作,以确定从上次调用显示到下一次状态的状态变化。例如,如果您正在制作动画,则可以在此处更改其位置或方向。
答案 1 :(得分:4)
glutMainLoop进入GLUT事件处理循环。在GLUT程序中,该程序最多应调用一次。一旦被调用,该例程将永远不会返回。它将根据需要调用已注册的任何回调。
取自here
答案 2 :(得分:2)
一起使用opengl和glut意味着你将编写一个在回调函数中使用opengl命令的“过剩”程序。主要包含过剩功能。许多过剩函数需要注册回调函数。那些回调函数通常包含opengl命令。
提出你的问题,现在当你明确表示你主要编写一个过剩的程序时,还应该认为glutMainLoop函数调用实际上在需要时执行回调函数,然后执行opengl命令。 / p>
答案 3 :(得分:2)
好的glutMainLoop是保持调用和调用显示功能的主要功能,它还可以保持窗口实际打开。你会发现opengl并不那么可怕。