Opengl es OpenGL ES学习-关于旋转的一些问题

Opengl es OpenGL ES学习-关于旋转的一些问题,opengl-es,Opengl Es,嘿!我对OpenGL ES非常陌生,我在网上看到了很多例子,但是我对旋转有一些疑问 我怎么能一次做两次旋转?所以我需要旋转一个物体的中心,同时,我需要在一个圆上旋转这个物体,这个圆在空间中有一个中心点 第二件事: 我创建以下代码: glLoadIdentity... glTranslateF 0,0,0.. glRotateF... drawSomeObject... glLoadIdentity... glTranslateF 0,3,0.. glRotateF... drawSomeO

嘿!我对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

应用以下方案(伪代码):

因此,不要返回每个对象的标识,而是返回到组状态,使用modelview矩阵上的PushMatrix和PopMatrix可以很容易地保留组状态。这些命令将当前状态存储在内部OpenGL堆栈(PushMatrix)上,并在稍后从堆栈中检索矩阵(PopMatrix)

以下是相关教程的链接:

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

Translate Object1
Rotate Object1
DrawObject1

PopMatrix

PushMatrix

Translate Object2
Rotate Object2
DrawObject2

PopMatrix

...