因此,我试图从一个IMU读取传感器数据,并相应地更新角度。我打开传感器数据文件,逐行读取,将四元数转换为旋转,然后更新我的模型。问题是,当从while循环调用glutPostRedisplay()时,循环会继续,而glutPostRedisplay()则在paralell中运行。这使一切似乎都立即发生。我想要做的是迫使程序停止,直到显示更新。
我想不出另一种方法来做到这一点,因为我不想不断地打开和关闭一个文件,也不想跟踪我目前在文件中的位置如果我只需要读取这一行,处理它,然后强制OpenGL渲染,然后读取下一行,那就更容易了。
有人有什么建议吗?
注意:当前while循环在我能够呈现的时候完全执行。我尝试在glutSwapBuffers()之后直接使用glutPostRedisplay()
发布于 2012-04-26 15:19:39
供过于求不是这样的。您将不得不停止您的循环,并从您想要的任何函数返回,以便GLUT发出呈现命令。一般来说,你把这类东西放进一个闲置的漏斗里。
或者您可以使用GLFW,它允许您拥有呈现循环的所有权。或者您可以使用FreeGLUT的glutMainLoopEvent
,它允许您拥有呈现循环的所有权(尽管您需要进行一些代码重写才能完成此工作)。
发布于 2012-04-26 15:30:19
不需要使用with循环,您可以注册一个函数,以便在glutIdleFunc不忙时调用它。在这个空闲函数中从IMU读取,并在需要强制重新显示时调用glutPostRedisplay。
https://stackoverflow.com/questions/10342560
复制相似问题