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

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

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

为了跟随基督徒的说法,你需要自己跟踪模型视图matrix,并操纵它来执行你需要的旋转。 然后,将matrix作为统一传递给着色器,并执行如下操作:

 attribute vec4 position; uniform mat4 modelViewProjMatrix; void main() { gl_Position = modelViewProjMatrix * position; } 

我发现Core Animation CATransform3D辅助函数可以很好的执行正确的matrix操作。 您可以旋转,缩放和翻译CATransform3D,然后读出其4x4matrix元素以创build所需的模型视图matrix。

如果你想看到这个动作,我创build的示例iPhone应用程序展示了如何使用OpenGL ES 1.1和2.0来执行一个立方体的旋转。

没有固定的functionmatrix堆栈,你必须自己pipe理你的转换matrix。 查阅一些关于matrix和vector代数的介绍性资料,特别是关于三维变换。 那么你就会明白,什么是轮回和类似的事情。