C++ Opengl:控制对象移动速度和时间

C++ Opengl:控制对象移动速度和时间,c++,opengl,animation,C++,Opengl,Animation,我正在尝试用它制作一个小动画(2D)。我的初始设置是: glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, 100.0, 0.0, 100.0, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glutSwapBuffers(); 因此,它基本上是一个2D场景。我在场景中有一些多边形。对于每个多边形,它都具有类似于x_pos、x_speed、y_pos和

我正在尝试用它制作一个小动画(2D)。我的初始设置是:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

glOrtho(0.0, 100.0, 0.0, 100.0, -1.0, 1.0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glutSwapBuffers();
因此,它基本上是一个2D场景。我在场景中有一些多边形。对于每个多边形,它都具有类似于x_pos、x_speed、y_pos和y_speed的属性。我想要的是两件事:

  • 根据多边形的x和y速度移动多边形
  • 将多边形移动一段时间(例如1秒),然后通过调用其他函数更改多边形的速度

  • 我现在能做的是使多边形移动。但不是我设定的准确速度。例如,如果一个多边形位于位置(20,20),并且它沿着x轴单独移动到位置(40,20),x_速度=10。然后我想在2秒内完成。当它达到(40,20)时,它停止或以另一种速度移动


    实现这些目标的最佳方法是什么?

    “我现在能做的是使多边形移动。”…如何实现?因此您正在模拟一个物理引擎。通常,这是通过测量自上次更新以来经过的时间量来完成的,然后只根据经过的时间进行更新,而不是使用静态逐帧值。(这是一种基本的方法,不是最好的,甚至不是最现代的)@genpfault我在创建多边形之前使用了glTranslatef(This->x_pos,This->y_pos,0.0),如果我想让它移动,我使用This->x_pos+=This->x_speed;再发现();