我希望保持一个对象向前移动,而无需用户做任何事情。我理解这是glutTimerFunc
的工作,我相信我已正确实施,如下所示。出于某种原因,如果我离开屏幕没有任何更新;但如果我移动鼠标(或创建任何类型的事件'),场景就会更新。如果我等待几秒钟然后自己重新触发更新,则对象会在几秒钟内移动它应该具有的数量(例如,如果它在每秒移动一个单位,等待3秒后重新触发对象跳跃3个单位)。因此计时器正在运行,但我不知道屏幕为什么不经常重新显示。
void myTimer(int v) {
if (forward == 1) {
//increment movement variable
}
if (backward == 1) {
//increment movement variable
}
glutPostRedisplay;
glutTimerFunc(100 / n, myTimer, v);
}
以下是我的上下(前进和后退)键的片段:
if (key == GLUT_KEY_UP)
{
forward = 1;
backward = 0;
}
if (key == GLUT_KEY_DOWN)
{
forward = 0;
backward = 1;
}
我在glutTimerFunc(1000, myTimer, n);
之前的主要内容中也有回调glutMainLoop()
。
为什么我的计时器没有触发它而导致屏幕重新渲染?
答案 0 :(得分:1)
glutPostRedisplay;
^ missing something?
这只是评估glutPostRedisplay
的地址,它实际上没有做任何事情。
你需要空的parens来实际调用 glutPostRedisplay()
:
glutPostRedisplay();