2

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

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

4

2 回答 2

1

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

attribute vec4 position;

uniform mat4 modelViewProjMatrix;

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

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

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

于 2011-05-26T22:26:26.437 回答
0

如果没有固定函数矩阵堆栈,您必须自己管理转换矩阵。查阅一些关于矩阵和向量代数的介绍性材料,尤其是关于 3d 变换的内容。然后你就会明白,glRotate之类的东西到底是做什么的。

于 2011-05-22T15:44:19.460 回答