cocos2dx kazmath 分析

本文详细介绍了cocos2dx游戏引擎中kazmath库的使用,包括mat4、mat3、vec2等基本数据结构及其操作函数。特别地,讨论了矩阵堆栈的管理,如km_mat4_stack,并展示了如何在CCSprite的draw函数中应用这些概念,通过设置矩阵 uniforms 供shader使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在分析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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值