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

Iphone 如何使用OpenGL ES 2.0旋转对象?,iphone,ios,opengl-es,opengl-es-2.0,Iphone,Ios,Opengl Es,Opengl Es 2.0,在OpenGL ES 1.1中,可以使用glRotatef()旋转模型,但该函数在OpenGL ES 2.0中不存在 因此,如何在OpenGL ES 2.0中执行旋转?在没有固定函数矩阵堆栈的情况下,您必须自己管理变换矩阵。查阅一些关于矩阵和向量代数的介绍性材料,特别是关于3d变换。然后,您将了解glRotate等的真正作用。要继续Christian所说的,您需要自己跟踪模型视图矩阵,并对其进行操作以执行所需的旋转。然后将矩阵作为统一体传递给着色器,并执行以下操作: attribute vec4

在OpenGL ES 1.1中,可以使用
glRotatef()
旋转模型,但该函数在OpenGL ES 2.0中不存在


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

在没有固定函数矩阵堆栈的情况下,您必须自己管理变换矩阵。查阅一些关于矩阵和向量代数的介绍性材料,特别是关于3d变换。然后,您将了解glRotate等的真正作用。

要继续Christian所说的,您需要自己跟踪模型视图矩阵,并对其进行操作以执行所需的旋转。然后将矩阵作为统一体传递给着色器,并执行以下操作:

attribute vec4 position;

uniform mat4 modelViewProjMatrix;

void main()
{
    gl_Position = modelViewProjMatrix * position;
}
我发现核心动画CATTransferM3D辅助函数非常适合执行正确的矩阵操作。可以旋转、缩放和平移CATTransform3D,然后读取其4x4矩阵元素以创建所需的模型视图矩阵

如果您想看到这一点,我创建了一个演示如何使用OpenGL ES 1.1和2.0执行立方体旋转的程序