opengl glutmainloop()

cod*_*max 17 opengl glut

我刚刚开始使用OpenGL,似乎不容易理解glutMainLoop()那里真正发生的事情的工作?在任何函数调用响应之前,它是否一直无所事事?

Str*_*ria 20

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

本质上,在这个函数中是主程序循环,其中GLUT为您完成大部分工作,并允许您在这些回调中简单地设置特定的程序逻辑.我和GLUT合作已经有一段时间了,起初它确实令人困惑.

在您的显示中,回调显然应该是您绘制应该进行的任何事情的主要逻辑.在空闲回调中应该是一些非常轻量级的操作,以确定从上次调用显示到下一次状态的状态变化.例如,如果您正在制作动画,则可以在此处更改其位置或方向.

  • glutMainLoop仅在glut事件触发显示回调时调用显示回调,例如调整窗口大小,取消窗口或调用glutPostRedisplay.您必须在程序中放置代码以触发过剩以适当的帧速率调用显示回调以在程序中生成动画.例如,您可以将对glutPostResdisplay的调用放入空闲回调函数中,因此当GLUT空闲时,将调用显示回调. (7认同)
  • Glut让我终身伤痕累累 (3认同)

Ant*_*ney 5

正是因为StrixVaria曾表示

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

取自这里