我有一個函數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