我在屏幕上画了一个球体。当我按下按钮时,我希望球体缓慢向右移动。我正在努力做到这一点

for (int i = 0;i<10;i++)
{
sphere.moveToRight(0.1);
glutPostRedisplay();
sleep(1000);
}


但是它没有动画,而是等待几秒钟,然后在最终位置绘制球体。我认为是因为睡眠停止了glutPostRediplay()。关于如何完成此基本动画的任何想法?

最佳答案

您使用的glutPostRedisplay错误。

检出:http://www.opengl.org/resources/libraries/glut/spec3/node20.html


  glutPostRedisplay将当前窗口的法线标记为需要
  重新显示。 glutPostWindowRedisplay使用指定的窗口
  由于需要重新显示。在任一调用之后,下一次迭代
  通过glutMainLoop,将调用窗口的显示回调
  重新显示窗口的法线平面。多次致电
  glutPostRedisplay在下一个显示回调机会之前
  仅生成一个重新显示回调。 glutPostRedisplay可能是
  在窗口的显示或覆盖显示回调中调用
  重新标记该窗口以重新显示。


这意味着10秒钟后,您的图片将刷新一次。

10-07 23:50