2011-01-25 98 views
0

Hy there!我對OpenGL ES非常陌生,在網上看到很多例子,但是我對旋轉有一些疑問。OpenGL ES學習 - 關於旋轉的一些問題

我怎麼能一次做雙重旋轉?所以我需要在其中心旋轉一個對象,同時我需要將該對象旋轉到空間中具有中心點的圓上。

的第二件事:

我創建這個代碼:

glLoadIdentity... 
glTranslateF 0,0,0.. 
glRotateF... 

drawSomeObject... 

glLoadIdentity... 
glTranslateF 0,3,0.. 
glRotateF... 

drawSomeObject... 

這是非常好的,有了這個代碼,我可以在它自己的中心旋轉我的繪畫對象。但是,我如何將所有對象作爲一個組來旋轉或翻譯?

所以一些這樣的:

//translate, and rotate all in the group1 
glTranslateF 0,0,0.. 
glRotateF... 

GROUP1 

glLoadIdentity... 
glTranslateF 0,0,0.. 
glRotateF... 

drawSomeObject... 

glLoadIdentity... 
glTranslateF 0,3,0.. 
glRotateF... 

drawSomeObject... 

END GROUP1 


//translate, and rotate all in the group1 
glTranslateF 2,0,0.. 
glRotateF... 

GROUP2 

glLoadIdentity... 
glTranslateF 0,0,0.. 
glRotateF... 

drawSomeObject... 

glLoadIdentity... 
glTranslateF 0,3,0.. 
glRotateF... 

drawSomeObject... 

END GROUP2 

回答

1

應用以下方案(僞):

LoadIdentity 
Translate (Group Translation) 
Rotate(Group Rotation) 
PushMatrix 

Translate Object1 
Rotate Object1 
DrawObject1 

PopMatrix 

PushMatrix 

Translate Object2 
Rotate Object2 
DrawObject2 

PopMatrix 

... 

所以不要返回標識爲每個對象,而是返回到該羣的狀態,這可以可以在模型視圖矩陣上使用PushMatrix和PopMatrix輕鬆保存。這些命令將當前狀態存儲在內部OpenGL堆棧(PushMatrix)中,稍後從堆棧中檢索矩陣(PopMatrix)。

以下是指向相關教程的鏈接: http://www.swiftless.com/tutorials/opengl/pop_and_push_matrices.html