Opengl es 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
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
...