所以我尝试从 IMU 读取传感器数据并相应地更新角度。我打开传感器数据文件,逐行读取,将四元数转换为旋转,然后更新我的模型。问题是,当从 while 循环调用 glutPostRedisplay() 时,循环将继续,而 glutPostRedisplay() 并行运行。这使得一切看起来都是瞬间发生的。我想做的是强制程序停止,直到显示更新。
我想不出另一种方法来做到这一点,因为我不想不断地打开和关闭文件或跟踪我当前在文件中的位置。如果我可以读取该行,处理它,然后强制 OpenGL 渲染,然后读取下一行等,那就更容易了。
有人有什么建议吗?
注意: 目前,当我能够渲染时,while 循环已完全执行。我尝试在 glutPostRedisplay() 之后直接使用 glutSwapBuffers()
最佳答案
GLUT 不是这样工作的。您必须停止循环并从您想要的任何函数返回,以便 GLUT 发出渲染命令。通常你把这种东西放在空闲函数中。
或者您可以使用 GLFW,它允许您拥有渲染循环的所有权。或者你可以使用 FreeGLUT 的 glutMainLoopEvent
,它允许您拥有渲染循环的所有权(尽管您需要重写一些代码才能完成这项工作)。
关于c - OpenGL:从读取文件的 while 循环中调用 glutPostRedisplay(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10342560/