基本变换:平移(translation)、旋转(roration)、缩放(scale)、透视(perspective),这4个基本变换可以单独使用,也可以组合使用(两个基本变换可以使用矩阵乘法组合起来) 注意:当使用组合变换时,顺序很重要,例如平移和旋转组合,先平移和先旋转会得到两个完全不不同的结果
所有的基础变换矩阵,都可以通过GLKit/GLKMatrix4.h里的函数构建
// GLKMatrix4.h为我们提供了一个快速创建透视矩阵的函数 // fovyRadians是视角,它接受一个弧度值,可以用GLKMathDegreesToRadians(30),将角度转换为弧度 // aspect视图宽高比,nearZ近视点,farZ远视点 GLKMatrix4MakePerspective(float fovyRadians, float aspect, float nearZ, float farZ)
projectionMatrix 和 modelviewMatrix 当我们构建好了变换矩阵之后怎么传递的OpenGL呢?GLKBaseEffect有一个transform的属性,其中有两个矩阵分别是projectionMatrix和modelviewMatrix projectionMatrix:投影矩阵,下面就是设置一个正投影的代码
// 伪代码
const GLFloat aspect = view.width/view.hight;
baseEffect.transform.projectionMatrix = GLKMatrix4MakeOrtho(-0.5 * aspect,
0.5 * aspect,
-0.5,
0.5,
-50,
50);
modelviewMatrix:模型矩阵,下面是设置一个沿z轴平移的矩阵
// 伪代码
baseEffect.transform.modelviewMatrix = GLKMatrix4MakeTranslation(0.0f, 0.0f, -3.0f);
Demo下载地址:https://github.com/cdcyd/CCOpenGLES