2011-04-01 19 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。这应该是一个问题&答案网站...