第1章 游戏开发快速入门 1
1.1 游戏软件开发概述 1
1.1.1 游戏软件开发流程 1
1.1.2 游戏软件的构成 2
1.1.3 游戏软件的运行原理 3
1.2 OpenGL与DirectX简介 3
1.2.1 OpenGL基础知识 4
1.2.2 DirectX基础知识 5
1.3 3D图形学快速入门 7
1.3.1 点和向量 7
1.3.2 坐标系与矩阵 11
1.3.3 3D图形处理流程 14
1.3.4 坐标变换 14
第2章 OpenGL程序框架 23
2.1 窗口渲染环境 23
2.1.1 GDI设备环境 23
2.1.2 OpenGL渲染环境 27
2.2 创建Win32 SDK风格的窗口 31
2.3 面向对象风格的窗口框架 47
2.3.1 窗口类GLWindow的设计及实现 49
2.3.2 键盘类Keys的设计与实现 56
2.3.3 应用程序类GLApplication的设计与实现 57
2.3.4 一个简单的实例 67
第3章 OpenGL变换 71
3.1 OpenGL的数据类型 71
3.2 函数命名的语法 71
3.3 OpenGL是种状态机 72
3.4 OpenGL变换 72
3.4.1 视点变换 73
3.4.2 模型变换 74
3.4.3 投影变换 74
3.4.4 视口变换 76
3.4.5 裁剪变换 76
3.4.6 矩阵堆栈 77
3.5 OpenGL变换实例 77
第4章 OpenGL光照、材质和纹理 87
4.1 真实感图形基本概念 87
4.2 OpenGL光照模型 87
4.2.1 法线向量 88
4.2.2 创建光源 89
4.2.3 选择光照模型 91
4.2.4 光照实例 91
4.3 材质 99
4.3.1 材质RGB值与光源RGB值的关系 99
4.3.2 材质的定义 99
4.3.3 颜色材质模式 100
4.3.4 材质实例 101
4.4 纹理映射 105
4.4.1 纹理资源的载入 105
4.4.2 OpenGL纹理映射 110
4.4.3 OpenGL多重纹理 116
第5章 OpenGL字体 121
5.1 位图字体 121
5.1.1 位图字体类 121
5.1.2 具体实现 122
5.1.3 实例 125
5.2 显示中文 126
5.2.1 字体类 127
5.2.2 具体实现 128
5.2.3 实例 132
第6章 摄像漫游 133
6.1 漫游原理 133
6.2 准备工作 134
6.3 摄像机类 135
6.4 摄像漫游实例 142
第7章 构造天空和地形 151
7.1 天空构造 151
7.1.1 天空盒原理 151
7.1.2 天空类实现 152
7.2 地形 157
7.2.1 地形构造原理 157
7.2.2 地形类实现 158
7.3 实例 170
第8章 模型载入 176
8.1 3DS文件载入 176
8.1.1 3DS文件简介 176
8.1.2 准备工作 176
8.1.3 载入类定义 178
8.1.4 3DS文件载入实例 191
8.2 MD2文件载入 192
8.2.1 MD2文件简介 192
8.2.2 准备工作 193
8.2.3 MD2文件载入类 197
8.2.4 MD2文件载入实例 211
第9章 实时阴影 215
9.1 简介 215
9.2 实时阴影 215
9.2.1 平面投射 215
9.2.2 阴影体 216
9.3 平面投射实例 217
9.4 阴影体实例 226
第10章 DirectInput的使用 237
10.1 DirectInput简介 237
10.2 DirectInput的使用 239
10.2.1 安装和配置DirectX9.0 239
10.2.2 创建DirectInput接口对象 240
10.2.3 创建设备对象 241
10.2.4 设置设备的数据格式 242
10.2.5 设置设备的协作层次 243
10.2.6 设置设备的属性 243
10.2.7 设备的捕获 244
10.2.8 设备输入的获取 244
10.2.9 关闭 245
10.3 建立输入系统 245
10.3.1 键盘类CKeyboard 245
10.3.2 鼠标类CMouse 248
10.3.3 游戏杆类CJoystick 252
10.3.4 输入系统类CInputSystem 254
10.4 DirectInput应用实例 257
10.4.1 键盘实例 257
10.4.2 鼠标实例 257
第11章 DirectSound的使用 259
11.1 声音的基础知识 259
11.2 DirectSound介绍 260
11.3 DirectSound的使用 262
11.3.1 创建DirectSound对象 262
11.3.2 设置设备的协作级别 262
11.3.3 创建主缓冲区 263
11.3.4 创建辅助缓冲区 264
11.3.5 加载声音数据 266
11.3.6 声音的播放与控制 268
11.4 3D音效 269
11.4.1 3D空间与缓冲区 269
11.4.2 最大最小距离 269
11.4.3 处理模式 270
11.4.4 声音圆锥 270
11.4.5 声源的创建 271
11.4.6 听者对象的创建 271
11.5 封装音频处理模块 272
11.6 音频实例 274
第12章 游戏中的物理模拟 276
12.1 物理学基础知识 276
12.1.1 基本概念 276
12.1.2 牛顿运动定律 277
12.1.3 冲量、动量 278
12.2 物理规律的模拟 279
12.2.1 匀速运动模拟 279
12.2.2 平抛运动模拟 280
12.2.3 摩擦力模拟 282
12.3 碰撞检测 282
12.3.1 碰撞检测概述 282
12.3.2 碰撞检测 283
12.3.3 碰撞检测实例 283
第13章 粒子系统 293
13.1 粒子系统简介 293
13.1.1 概述 293
13.1.2 分类 293
13.1.3 粒子系统的生命周期 293
13.2 粒子系统设计 294
13.2.1 形式描述 294
13.2.2 数据结构 295
13.3 粒子系统的实现 295
13.4 粒子系统实例1——雪花 298
13.5 粒子系统实例2——喷泉 304
第14章 构造游戏引擎 311
14.1 游戏引擎简介 311
14.2 游戏引擎的体系结构 312
14.3 基础公用模块 313
14.3.1 基础结构和操作 313
14.3.2 数学运算模块 315
14.3.3 计时器CTimer类 317
14.3.4 字体类 317
14.3.5 摄像机类 318
14.3.6 INI文件读取类 319
14.4 窗口引擎模块 320
14.5 输入系统模块 324
14.5.1 输入法IME编程 324
14.5.2 输入系统类 326
14.6 场景管理模块 327
14.6.1 对象管理模块 327
14.6.2 游戏场景模块 335
14.6.3 场景管理模块 337
14.7 资源管理模块 337
14.8 GUI界面设计模块 340
14.8.1 GUI模块构架 342
14.8.2 按钮类CButton 344
14.8.3 复选框类CCheckBox 345
14.8.4 文本编辑类Edit 345
14.8.5 对话框类Dialog 347
14.8.6 滚动条类CScrollBar 347
14.8.7 列表框类ListView 348
14.8.8 进度条类CProgressBar 349
14.8.9 小地图类MapView 350
14.9 消息系统模块 351
14.10 音频系统模块 354
14.11 粒子特效模块 356
第15章 3D RPG游戏 359
15.1 游戏简介 359
15.2 角色设计 359
15.3 加入怪物 362
15.4 游戏场景 365
15.5 光标动画 367
15.6 游戏界面 369
15.7 运行界面 377
第16章 Quake室内场景实例 379
16.1 BSP技术 379
16.1.1 为什么要使用BSP 379
16.1.2 BSP原理 380
16.1.3 渲染BSP 380
16.2 隐藏面剔除 381
16.3 Quake室内场景绘制 381
16.3.1 Quake3 BSP文件格式 381
16.3.2 Quake3 BSP文件的载入 384
16.3.3 运行结果 385
第17章 指环王动画特效 386
17.1 实例介绍 386
17.2 关键技术 386
17.2.1 ASE模型读取 386
17.2.2 火焰的绘制 388
17.2.3 场景的绘制 389