2011-01-25 7 views
0

Hyがあります!私は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

関連する問題