c - OpenGL:从读取文件的 while 循环中调用 glutPostRedisplay()

标签 c opengl glut

所以我尝试从 IMU 读取传感器数据并相应地更新角度。我打开传感器数据文件,逐行读取,将四元数转换为旋转,然后更新我的模型。问题是,当从 while 循环调用 glutPostRedisplay() 时,循环将继续,而 glutPostRedisplay() 并行运行。这使得一切看起来都是瞬间发生的。我想做的是强制程序停止,直到显示更新。

我想不出另一种方法来做到这一点,因为我不想不断地打开和关闭文件或跟踪我当前在文件中的位置。如果我可以读取该行,处理它,然后强制 OpenGL 渲染,然后读取下一行等,那就更容易了。

有人有什么建议吗?

注意: 目前,当我能够渲染时,while 循环已完全执行。我尝试在 glutPostRedisplay() 之后直接使用 glutSwapBuffers()

最佳答案

GLUT 不是这样工作的。您必须停止循环并从您想要的任何函数返回,以便 GLUT 发出渲染命令。通常你把这种东西放在空闲函数中。

或者您可以使用 GLFW,它允许您拥有渲染循环的所有权。或者你可以使用 FreeGLUT 的 glutMainLoopEvent ,它允许您拥有渲染循环的所有权(尽管您需要重写一些代码才能完成这项工作)。

关于c - OpenGL:从读取文件的 while 循环中调用 glutPostRedisplay(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10342560/

相关文章:

opengl - 在 OpenGL 中,背景对象绘制在前景对象的前面?

python - GTK 网络应用程序 : need design pattern

c - 将固定大小的数组传递给具有指针参数的函数

OpenGL FBO 不发送深度缓冲区

opengl - 为什么模型 View 矩阵?

c - SDL 和 GLUT 之间的区别

c - 从内核模块内部发送原始以太网数据包

C、使用动态内存分配的矩阵转置乘法

c++ - 有没有办法在 OpenGL 上获取旋转纹理

C++ OpenGL 用鼠标拖动多个对象