在OpenGL ES 1.x中,可以先使用glTranslate,然后再使用glRotate来修改旋转中心的位置(即围绕给定点旋转)。据我所知,在OpenGL ES 2.0中,矩阵计算是在CPU端完成的。我正在使用IwGeom(来自Marmalade SDK)-一个典型的(可能)矩阵包。根据文档:
"IwGeom中的矩阵实际上是4x3格式,包括一个3x3的旋转和一个3分量向量的平移。"
我发现使用这种方法很难获得相同的效果。平移总是在旋转之后应用。此外,在Marmalade中,还设置了模型矩阵:
"IwGeom中的矩阵实际上是4x3格式,包括一个3x3的旋转和一个3分量向量的平移。"
我发现使用这种方法很难获得相同的效果。平移总是在旋转之后应用。此外,在Marmalade中,还设置了模型矩阵:
IwGxSetModelMatrix( &modelMatrix );
显然,旋转和平移也按照一定顺序应用:a)旋转,b)平移。
如何获得OpenGL ES 1.x效果?
V2 = V1 * R * T
。我已经有一段时间没有使用IwGx了,但我几乎可以确定M1 = M1 * M2
是M1.PostMult(M2)
,而M1 = M2 * M1
是M1.PreMult(M2)
。 - Max