第 1 章 引擎的纷争1
1.1 什么是游戏引擎1
1.2 那些年我们认识的引擎3
1.3 引擎和游戏.4
第 2 章 起航6
2.1 游戏编程6
2.2 游戏引擎的组成7
2.3 游戏引擎编辑器的组成8
2.4 数学10
2.5 空间变换12
2.5.1 坐标系12
2.5.2 不同空间的转换12
2.6 3D 流水线.15
2.7 OpenGL 和DirectX .16
2.8 汇编指令17
2.9 引擎工作流17
练习18
第3 章 基本系统.19
3.1 熟悉开发环境.19
3.2 VSSystem 工程20
3.3 内存管理25
3.3.1 处理内存泄露25
3.3.2 Unreal Engine 3 的内存分配.33
3.3.3 栈内存管理.51
3.3.4 整合.57
3.4 静态类型信息判断59
练习62
示例62
第4 章 基本数据结构64
4.1 基类VSContainer .65
4.2 常用数据结构.66
4.3 其他数据结构.71
4.4 C++代理/委托.72
练习85
示例86
第5 章 数学库88
5.1 基本数学88
5.2 基本数学单元.91
5.3 基本图形单元.98
第6 章 初始化与销毁103
6.1 传统初始化和销毁104
6.2 全局内存管理器的初始化和销毁107
6.3 非单件类的初始化和销毁108
示例115
第7 章 应用程序框架116
7.1 程序框架接口117
7.2 输入/输出映射.124
练习128
示例129
第8 章 对象系统130
8.1 智能指针.130
8.2 RTTI136
8.3 VSObject140
8.4 属性反射.146
8.5 序列化存储159
8.5.1 传统序列化方式159
8.5.2 使用属性表进行序列化存储.162
8.6 克隆186
8.7 属性与UI 绑定* .191
8.7.1 基本控件192
8.7.2 组合控件与属性196
8.7.3 属性绑定208
8.8 函数反射.214
8.9 复制属性与函数.222
8.9.1 对象复制225
8.9.2 属性复制225
8.9.3 函数复制227
8.9.4 小结228
8.10 番外篇——Unreal Engine 4 中的
反射* 231
练习238
示例239
第9 章 资源管理241
9.1 资源类型.241
9.2 资源代理.247
9.3 对象系统——资源251
9.3.1 资源的组织形式251
9.3.2 外部资源管理.256
9.3.3 字符串管理258
9.3.4 内部资源管理.260
练习264
第 10 章 引擎的设计哲学265
10.1 世界抽象265
10.2 万物的关系.267
10.3 引擎层267
10.4 世界与引擎.270
10.5 垃圾回收275
10.5.1 智能指针与垃圾回收276
10.5.2 基于对象系统276
10.5.3 创建可回收的对象277
10.5.4 根对象选择278
10.5.5 联系查找.279
10.5.6 垃圾回收的时机.287
10.5.7 资源的垃圾回收.290
练习295
第 11 章 场景管理297
11.1 根节点与场景298
11.2 空间位置的父子关系299
11.2.1 变换301
11.2.2 包围盒304
11.2.3 空间管理结构与更新309
11.3 相机与相机裁剪315
11.3.1 相机的定义316
11.3.2 根据相机裁剪物体321
11.4 静态物体与动态物体328
11.4.1 采用四叉树管理静态物体.329
11.4.2 入口算法简介和潜在的
可见集合* 334
11.5 光源337
11.5.1 间接光338
11.5.2 局部光340
11.6 相机和光源的更新管理342
11.7 番外篇——浅谈Prez、软硬件
遮挡剔除* 345
练习346
示例347
第 12 章 模型与贴图349
12.1 法线与切线空间349
12.2 引擎中的网格结构.354
12.2.1 数据缓冲区、顶点、网格354
12.2.2 VSGeometry、VSMeshNode、
VSMeshComponent359
12.2.3 一个完整网格的创建过程361
12.3 FBX 模型导入与压缩366
12.4 纹理.380
12.5 给模型添加材质387
12.6 番外篇——3D 模型制作流程* 388
示例391
第 13 章 LOD393
13.1 模型的DLOD 393
13.2 模型的CLOD 401
13.3 地形的DLOD 409
13.4 地形的CLOD 414
13.5 番外篇——地形编辑*417
13.5.1 基于2D 网格的地形系统.417
13.5.2 基于块和悬崖的地形系统421
13.5.3 基于体素的地形系统423
练习425
示例425