在分析CCDirector的时候再设置投影矩阵的函数里分别对 view matrix 与 projection matrix进行了设置,用到了kazmath模块里面相关的功能,在cocos2dx的节点系统里面的CCNode也用到了kazmath,来实现坐标的变换。
总的感觉kazmath是一个非常有用的一个底层类,封装了 很多有用的函数(研究函数的实现能够加强对相关数学知识的理解),想要灵活的使用这个游戏引擎我想你不懂这个是万万不能的。
下面开始分析:
(首先得说明 kazmath 是由c语言实现的,没有类)
1.文件:mat4.h
一个4X4矩阵定义的类
/*
A 4x4 matrix
| 0 4 8 12 |
mat = | 1 5 9 13 |
| 2 6 10 14 |
| 3 7 11 15 |
*/
typedef struct kmMat4 {
kmScalar mat[16];
} kmMat4;
该矩阵是以列的顺序进行存储的,是直接传给opengl的矩阵
该文件定义了很多很有用的矩阵操作的函数,(例如projection matrix,view transform matrix 的生成就直接调用了相关的函数来实现的)我就不一一列举了,感兴趣的自己看看代码。
其他的基本数据定义文件:
mat3.h - kmMat3(3X3矩阵)与其对应的操作函数
vec2.h - kmVec2 (二维向量)与其对应的操作函数
vec3.h - kmVec3(三维向量)与其对应的操作函数
vec4.h - kmVec4(四维向量)与其对应的操作函数
//扩展数据结构
quaternion.h - kmQuaternion(四元数)与其对应的操作函数
kmPlane - kmPlane(平面)与其对应的操作函数
ra