GLUT定时器/空闲功能未更新

时间:2017-12-03 17:52:14

标签: c++ opengl timer glut

我希望保持一个对象向前移动,而无需用户做任何事情。我理解这是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()

为什么我的计时器没有触发它而导致屏幕重新渲染?

1 个答案:

答案 0 :(得分:1)

glutPostRedisplay;
                 ^ missing something? 

这只是评估glutPostRedisplay的地址,它实际上没有做任何事情。

你需要空的parens来实际调用 glutPostRedisplay()

glutPostRedisplay();
相关问题