第1章Irrlicht游戏引擎 1
1.1 Irrlicht使用许可与系统要求 1
1.2获得Irrlicht引擎 2
1.3在Windows下设置编译器 4
1.3.1设置编译器的原理 4
1.3.2设置动态链接库的方法 5
1.3.3其他设置方法 10
1.3.4环境变量的设置方法 11
1.3.5设置过程中常见的问题 12
1.4重新编译Irrlicht引擎 13
1.5测试是否已经正确设置 15
1.6在Linux环境中使用鬼火游戏引擎 16
1.6.1在Linux下编译静态库 16
1.6.2编译Hello World程序并运行 17
1.6.3在Linux下创建第一个项目 18
1.6.4第三方编程工具Code::Blocks 19
第2章 编写第一个Irrlicht程序 20
2.1 Irrlicht引擎的结构 20
2.1.1引入命名空间 20
2.1.2了解Irrlicht引擎的结构 21
2.2分析简单的代码 21
2.3简单的扩展 24
2.4类的形式 26
2.5让窗口显示内容 28
2.6比较成型的模式 29
2.7让我们的程序发生变化 30
第3章 图形学基础 33
3.1计算机显示原理 33
3.1.1图形系统的硬件 33
3.1.2光栅扫描系统 34
3.1.3计算机图形标准 35
3.2图形学的数学基础 36
3.2.1向量及向量运算 36
3.2.2坐标 36
3.2.3基本几何变换 38
3.2.4三维空间的变换 40
3.3双缓存和垂直同步 42
3.4纹理 43
3.5 Z缓冲 45
3.6摄像机 46
3.7粒子系统 47
第4章 网格、纹理、覆盖层 50
4.1网格简介 50
4.2不同格式网格模型的区别 52
4.3初识纹理 54
4.4动态网格模型 56
4.5覆盖层 59
4.6使用精灵表 63
4.7绘制基本图形 67
第5章 场景管理 69
5.1场景节点和实体 69
5.1.1场景节点 69
5.1.2实体 71
5.2场景节点类型 72
5.3场景管理器 74
5.4动态节点 74
5.5场景的应用示例 77
5.5.1场景节点的应用 77
5.2.2动态节点的应用 81
5.5.3自定义场景节点 83
第6章 摄像机 87
6.1摄像机投影 87
6.1.1正交投影 88
6.1.2透视投影 89
6.1.3两种投影在代码上的实现 90
6.2裁剪 92
6.3摄像机观看视角的类型 95
6.3.1普通摄像机 95
6.3.2第一人称射击摄像机 95
6.3.3 Maya摄像机 96
6.4 FPS摄像机的使用示例 96
第7章 地形、纹理和渲染 99
7.1地形场景节点类 99
7.2高度图 101
7.3纹理 102
7.3.1纹理简介 102
7.3.2使用纹理 103
7.4渲染示例 106
7.4.1渲染地形 106
7.4.2纹理渲染 111
7.5创建地形 114
第8章 光照与材质 119
8.1光照模型 119
8.2光源 119
8.3深入光源 120
8.3.1模拟环境光 121
8.3.2模拟漫射光 123
8.3.3灯光的衰减 123
8.4光源 124
8.4.1光源的类型 124
8.4.2光源属性 125
8.4.3添加灯光 126
8.5一些简单的光照示例 127
8.5.1用代码实现环境光 127
8.5.2用代码实现漫射光 129
8.5.3用代码实现镜面反射光 132
8.6材质 135
8.7阴影 136
8.8着色 137
8.8.1着色模式 137
8.8.2设置着色模式 138
8.9示例 138
8.9.1光照和材质示例 138
8.9.2显示实时动态阴影 140
第9章 声音 144
9.1声音基础 144
9.1.1声音的生成 144
9.1.2声音的编码存储 145
9.1.3声音的合成 146
9.2 irrKlang简介 146
9.3 irrKlang的使用 147
9.3.1实践Hello World 147
9.3.2播放3D声音文件 151
9.3.3声音特效 154
第10章 粒子系统 157
10.1粒子系统简介 157
10.2粒子编辑器——irrEdit 158
10.2.1添加自己的粒子系统 158
10.2.2设置粒子系统 159
10.3粒子系统各部分的代码实现 160
10.3.1粒子结构 160
10.3.2发射器 161
10.3.3影响器 163
10.4绘制一个粒子系统 164
10.4.1编写代码完成一个简单的粒子系统 164
10.4.2使用代码制作水面 169
10.4.3环形粒子系统 173
第11章 碰撞检测 177
11.1碰撞检测概述 177
11.2几何和数学知识 178
11.2.1多边形和多面体 178
11.2.2 BSP树 179
11.2.3空间四叉树和空间八叉树 179
11.2.4 Minkowski和与Minkowski差 180
11.2.5包围体 181
11.3常用的碰撞检测算法 183
11.3.1距离跟踪法 183
11.3.2基于图像空间的碰撞检测法 183
11.3.3空间分解法 184
11.3.4层次包围盒法 185
11.4代码解析 185
第12章 数据和文件的处理 192
12.1 Irrlicht文件系统简介 192
12.2文件的读取和写入 194
12.2.1写文件 194
12.2.2普通文件的读写 195
12.2.3一行一行读取和按分隔符读取 198
12.2.4 XML文件的读写 200
12.2.5从XML文件中加载数据 201
12.2.6向XML文件写入数据 204
12.2.7从XML文件中读取特殊数据类型的数据 205
12.3从档案中读取数据 207
第13章 着色器 210
13.1图形渲染管线简介 210
13.2着色器简介 211
13.2.1顶点着色器 211
13.2.2片断(像素)着色器 211
13.2.3几何着色器 212
13.3使用着色器 212
13.3.1安装并使用GLSL demo 212
13.3.2在Irrlicht引擎中使用着色器 214
13.4进一步了解着色器 223
第14章 游戏人工智能 224
14.1什么是智能 224
14.2什么是游戏AI 225
14.3 AI的组成与设计 226
14.3.1抉择与推理 226
14.3.2解决方案的类型 226
14.3.3智能体的反应能力 226
14.3.4系统的真实性 226
14.3.5游戏类型 227
14.3.6游戏内容 227
14.3.7游戏平台 227
14.4 AI的输入处理和感知 228
14.4.1感知系统 228
14.4.2更新规则 229
14.4.3反应时间 229
14.4.4门限 229
14.4.5负荷平衡 229
14.4.6计算代价与预处理 229
14.5 OpenSteer 230
第15章 部署一个Irrlicht应用程序 232
15.1什么是部署 232
15.2针对不同平台打包发布应用 232
15.2.1在Windows平台下部署Irrlicht应用程序 232
15.2.2在Linux平台下部署Irrlicht应用程序 233
15.2.3在Mac OS X平台下部署Irrlicht应用程序 234
15.3部署源代码 236
15.3.1为什么要部署源代码 236
15.3.2如何部署 236