我有一个函数Drwa(),它在屏幕上呈现一个三角形,并且我还有另一个Draw_poly(),它在屏幕上呈现一个Rectangle。而且我也是在同时旋转矩形和三角形。我想保持不同的旋转速度,我会怎么做?在opengl中挂起某个函数
让我们假设我在屏幕上移动一个物体,另一个旋转的话我该怎么办?这就是为什么即时寻找功能运动物体将保持有限的时间和旋转对象将不能保持time.So旋转将是快速和对象的移动将是缓慢的
我有一个函数Drwa(),它在屏幕上呈现一个三角形,并且我还有另一个Draw_poly(),它在屏幕上呈现一个Rectangle。而且我也是在同时旋转矩形和三角形。我想保持不同的旋转速度,我会怎么做?在opengl中挂起某个函数
让我们假设我在屏幕上移动一个物体,另一个旋转的话我该怎么办?这就是为什么即时寻找功能运动物体将保持有限的时间和旋转对象将不能保持time.So旋转将是快速和对象的移动将是缓慢的
旋转少/比其他的要慢
static float rot_a = 0.0;
static float rot_b = 0.0;
rot_a += 1.0;
rot_b += 0.5;
glPushMatrix();
glRotatef(rot_a, 0, 0, 1);
Draw_A();
glPopMatrix();
glPushMatrix();
glRotatef(rot_b, 0, 0, 1);
Draw_B();
glPopMatrix();
或者,你可以旋转一些线程来修改你的对象位置和sleep()
而不会阻塞渲染线程。
Position obj_a;
Position obj_b;
void thread_1()
{
while(!done)
{
sleep(1);
modify_pos(obj_a);
}
}
void thread_2()
{
while(!done)
{
sleep(2);
modify_pos(obj_b);
}
}
void draw()
{
glPushMatrix();
position_object(obj_a);
Draw_A();
glPopMatrix();
glPushMatrix();
position_object(obj_b);
Draw_B();
glPopMatrix();
}
int main()
{
...
launch_thread(thread_1);
launch_thread(thread_2);
...
return 0;
}
首先,定义你的旋转角度为每秒。然后在你的主要绘图函数中,计算秒数的经过时间,乘以角速度,就完成了。
_When I M使用睡眠功能,这是暂停整个function.I要等待1秒只有特定function._你是什么意思是什么呢? – tibur 2011-04-01 20:00:04
我编辑的问题PLZ再次看到它。 – 2011-04-01 20:04:25