Irrlicht 源码学习笔记 【Irrlicht.h/cpp】 【irrTypes.h】 【KeyCodes.h】 【irrmath.h】


这是我看的第一批里面的几个代码文件


把它们几个放在一篇笔记里面是因为他们几个 太嚣张  都是一些定义性的内容比较简单




【Irrlicht.h】 


Irrlicht.h 是使用鬼火引擎需要引入的头文件

里面是包含的是其它58个头文件 (一共有59个头文件)

还有一个 createDevice() 函数的声明以及一个 主要命名空间 和 五个子命名空间 的声明


irr :  Irrlicht 的命名空间,包含所有Irrlicht中的内容


core : Irrlicht 中使用的一些基本类,如:vectors,planes,arrays,lists 等


gui : 包含创建用户图形界面的一些接口


io : 包含输入输出接口, 文件读取存储以及压缩等


scene : 有关场景的管理, 网格资源加载, 八叉树以及广告牌等


video : 访问视频驱动,以及2D和3D场景的渲染





【Irrlicht.cpp】


动态链接库的源文件,只有一行DEBUG代码

用来在DEBUG模式下检测内存泄漏

#ifdef _DEBUG
	_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF);
#endif


在Irrlicht中看到了好几个调试时候使用的预处理指令和其它技巧是以前没有见过的





【irrTypes.h】


定义了Irrlicht中的一些数据类型

由于Irrlicht是跨平台的,所以对一些常用的数据类型进行了封装


s 表示有符号的        u表示无符号的        f表示浮点数          c表示字符

后面跟数据类型所占的空间 - bit数

比如 : 占用32bit的int使用 s32, 64bit的long用s64


另外还定义了一个 wchar_t 的宽字符类型

因为一个 wchar 占用两个字节, 和 short 一样一样的

所以就用了unsigned short 定义成 wchar_t

这样为的是不需要包含一个庞大的 stdlib.h 或者 wchar.h





【Keycodes.h】


主要是一个两个半屏幕那么高的枚举 EKEY_CODES

定义了鼠标和键盘的按键编码并留出了足够的空间  -  比如 F1 ~ F24 !

枚举的最后一个元素是一个 KEY_KEY_CODES_COUNT 用来标识枚举的数量

这个技巧其实是很常见的,至少对我来说吧,因为已经在好几个游戏源代码中看到过这种在枚举中添加标记的技巧





【irrmath.h】


属于 core命名空间

只有四个数学中常用的数值定义


PI  -  圆周率, 定义为 3.14159f 


GRAD_PI - 将弧度转换为角度使用的常量  (180.0 / 3.1415926535897932384626433832795)

比如弧度 rad 转换为角度需要 ( rad / PI * 180 ),所以可以直接 ( rad * GRAD_PI )


GRAD_PI2 - 将角度转换为弧度使用的常量,原理和上面一样啦

( 但是这个命名有点过分了,一眼看上去还以为是 (GRAD_PI²


ROUNDING_ERROR - 浮点数比较时的容错精度

( 浮点数比较不宜用 f == 0.0f ,应该酱婶儿: abs(f) <= 0.001f ,ROUNDING_ERROR 就是那个 0.001f )





最后。。。 发一张我惹不起的袋鼠

Irrlicht 源码学习笔记 【Irrlicht.h/cpp】 【irrTypes.h】 【KeyCodes.h】 【irrmath.h】_第1张图片


你可能感兴趣的:(Irrlicht)