GLUT Timer/Idle 函数未更新
GLUT Timer/Idle function not updating
我想在用户无需执行任何操作的情况下保持对象向前移动。我知道这是 glutTimerFunc
的工作,我相信我正在正确实施它,如下所示。出于某种原因,如果我保持屏幕不变,则不会有任何更新;但如果我移动鼠标(或创建任何类型的 'event'),场景就会更新。如果我等待几秒钟然后自己重新触发更新,则对象会在那几秒钟内移动它应该拥有的数量(例如,如果它每秒移动一个单位,则在等待 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;
}
我在 glutMainLoop()
之前的主函数中也有回调 glutTimerFunc(1000, myTimer, n);
。
为什么我的定时器没有触发屏幕重新渲染?
glutPostRedisplay;
^ missing something?
这只是评估 glutPostRedisplay
的地址,实际上并没有做任何事情。
您需要空括号才能实际 调用 glutPostRedisplay()
:
glutPostRedisplay();
我想在用户无需执行任何操作的情况下保持对象向前移动。我知道这是 glutTimerFunc
的工作,我相信我正在正确实施它,如下所示。出于某种原因,如果我保持屏幕不变,则不会有任何更新;但如果我移动鼠标(或创建任何类型的 'event'),场景就会更新。如果我等待几秒钟然后自己重新触发更新,则对象会在那几秒钟内移动它应该拥有的数量(例如,如果它每秒移动一个单位,则在等待 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;
}
我在 glutMainLoop()
之前的主函数中也有回调 glutTimerFunc(1000, myTimer, n);
。
为什么我的定时器没有触发屏幕重新渲染?
glutPostRedisplay;
^ missing something?
这只是评估 glutPostRedisplay
的地址,实际上并没有做任何事情。
您需要空括号才能实际 调用 glutPostRedisplay()
:
glutPostRedisplay();