我有一个使用openGL,GLUT,GLUI模拟碰撞(圆圈)的程序。一切都运行良好,但当我改变我的代码时,它开始做奇怪的事情。
我有2个按钮,“播放”和“步骤”,“播放”模拟用计时器更新的碰撞,“步骤”也模拟,但你必须点击它才能更进一步。
最初它确实如此,但现在“播放”按钮的行为与“步骤”相同。如果我在我的计时器回调中添加一个printf,那一切都很完美...
我该怎么办?
在我的timer_cb中我只有:
// printf("something\n");
glutPostRedisplay();
glutTimerFunc(getDeltaT(), timer_cb, 0);
答案 0 :(得分:1)
I / O例程(如printf)通过调用它们来引入合理的延迟。要回答一定程度的正确性,请向我们展示用户界面代码,但我想我可以猜到......
你在使用线程吗?也许它可能是并发错误,因为按钮事件处理程序的执行与更新逻辑不同步?