2011-04-01 17 views
-1

我有一個函數Drwa(),它在屏幕上呈現一個三角形,並且我還有另一個Draw_poly(),它在屏幕上呈現一個Rectangle。而且我也是在同時旋轉矩形和三角形。我想保持不同的旋轉速度,我會怎麼做?在opengl中掛起某個函數

讓我們假設我在屏幕上移動一個物體,另一個旋轉的話我該怎麼辦?這就是爲什麼即時尋找功能運動物體將保持有限的時間和旋轉對象將不能保持time.So旋轉將是快速和對象的移動將是緩慢的

+1

_When I M使用睡眠功能,這是暫停整個function.I要等待1秒只有特定function._你是什麼意思是什麼呢? – tibur 2011-04-01 20:00:04

+0

我編輯的問題PLZ再次看到它。 – 2011-04-01 20:04:25

回答

-1

旋轉少/比其他的要慢

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; 
} 
+0

這很好,我可以不給定任何預定義的函數,以便在有限的時間內不執行定時器。讓我們假設我正在屏幕上移動一個對象,而另一個旋轉我將如何執行?這就是爲什麼我尋找對象的功能移動將保持時間有限,旋轉的對象不會保持時間。所以旋轉將會很快,對象的移動將會很慢。 – 2011-04-01 20:11:06

+1

旋轉線程來更新轉換?!這是過度殺傷! – rotoglup 2011-04-01 20:54:58

+0

@rotoglup:哦,這裏沒有任何爭論。 – genpfault 2011-04-01 21:05:32

2

首先,定義你的旋轉角度爲每秒。然後在你的主要繪圖函數中,計算秒數的經過時間,乘以角速度,就完成了。

0

我想與我的一個答案partecipate。

genpfault的答案可能會很好,但如果您想製作一個好的動畫,則需要設計一個更好的軟件。

Here,看看我的答案。然而,讀另一個你的question,我想你錯過了一些基本點:學習OpenGL架構,練習每個OpenGL入門點,讀書。

最後但並非最不重要的是,我建議您搜索已知的答案,stackoverflow。這應該是一個問題&答案網站...