如何使用OpenGL ES 2.0旋转对象?

时间:2010-07-26 21:24:03

标签: iphone ios opengl-es opengl-es-2.0

在OpenGL ES 1.1中,您可以使用glRotatef()来旋转模型,但OpenGL ES 2.0中不存在该功能。

因此,如何在OpenGL ES 2.0中执行旋转?

2 个答案:

答案 0 :(得分:1)

要跟随基督徒的说法,你需要自己跟踪模型视图矩阵并操纵它来执行你需要的旋转。然后,您将矩阵作为制服传递到着色器,并执行以下操作:

attribute vec4 position;

uniform mat4 modelViewProjMatrix;

void main()
{
    gl_Position = modelViewProjMatrix * position;
}

我发现核心动画CATransform3D辅助函数非常适合执行正确的矩阵操作。您可以旋转,缩放和转换CATransform3D,然后读出其4x4矩阵元素以创建所需的模型视图矩阵。

如果您希望看到这一点,我创建的this sample iPhone application显示了如何使用OpenGL ES 1.1和2.0执行多维数据集的旋转。

答案 1 :(得分:0)

如果没有固定的函数矩阵堆栈,则必须自己管理转换矩阵。参考关于矩阵和向量代数的一些介绍性材料,特别是关于3d变换的介绍性材料。然后你就会明白,glRotate之类的东西真的如此。