opengl glutmainloop()

opengl glutmainloop(),opengl,glut,Opengl,Glut,我刚开始使用OpenGL,似乎不容易理解glutMainLoop()那里到底发生了什么?在任何函数调用响应之前,它会一直保持在那里不做任何事情吗?它会反复调用您的显示回调,在这两个回调之间调用idle,以便在可能的情况下保持特定的帧速率,在必要的情况下调用其他回调(如调整窗口大小或触发输入事件) 本质上,在这个函数中是主程序循环,GLUT为您完成大部分工作,并允许您在这些回调中简单地设置特定的程序逻辑。我已经有一段时间没有处理过过剩问题了,一开始肯定会让人困惑 在显示中,回调显然应该是绘制应该发

我刚开始使用OpenGL,似乎不容易理解
glutMainLoop()
那里到底发生了什么?在任何函数调用响应之前,它会一直保持在那里不做任何事情吗?

它会反复调用您的显示回调,在这两个回调之间调用idle,以便在可能的情况下保持特定的帧速率,在必要的情况下调用其他回调(如调整窗口大小或触发输入事件)

本质上,在这个函数中是主程序循环,GLUT为您完成大部分工作,并允许您在这些回调中简单地设置特定的程序逻辑。我已经有一段时间没有处理过过剩问题了,一开始肯定会让人困惑

在显示中,回调显然应该是绘制应该发生的任何内容的主要逻辑。在空闲回调中,应该有一些非常轻量级的操作来确定从上次调用display到下次调用display的状态变化。例如,如果您正在为某个对象设置动画,则可以在此处更改其位置或方向。

确实如此

glutMainLoop进入GLUT事件处理循环。在GLUT程序中,此例程最多应调用一次。一旦调用,此例程将永远不会返回。它将根据需要调用任何已注册的回调


取自

同时使用opengl和glut意味着您将编写一个在回调函数中使用opengl命令的“glut”程序。main包含glut函数。许多glut函数需要注册回调函数。这些回调函数通常包含opengl命令


说到你的问题,现在很清楚你主要是在写一个glut程序,也应该认为glutMainLoop函数调用实际上在需要的时候执行回调函数,作为回报,它会执行opengl命令。

嗯,glutMainLoop是主函数,它会不断调用显示函数,也会保持窗口实际打开。你会发现opengl并没有那么可怕。

GLUT很痛苦,也不好看……事实上,它让我对图形编程失去了兴趣。旋转对我来说太疯狂了,比如“wtf,这里有一个z坐标”?有一次我学了物理,学到了一些规则,当glut事件触发显示回调时,everything calmed DownGLUTMain循环仅调用显示回调,例如调整窗口大小、打开窗口或调用glutPostRedisplay。您必须在程序中放入代码,以触发glut以适当的帧速率调用显示回调,从而在程序中生成动画。例如,您可以将对glutPostResdisplay的调用放入空闲回调函数中,以便在GLUT空闲时调用显示回调。