图书目录

第1章  DirectX导论 1

1.1  本书概述 2

1.1.1  编写本书的目的 2

1.1.2  读者对象 3

1.1.3  工具和资源 3

1.2  游戏规划 3

1.2.1  项目Stranded概述 4

1.2.2  设计概述 4

1.2.3  引擎设计概述 5

1.2.4  渲染系统 6

1.2.5  输入系统 6

1.2.6  声音系统 6

1.2.7  物理系统 7

1.2.8  动画系统 7

1.2.9  人工智能(AI)系统 7

1.3  DirectX背景 8

1.3.1  DirectGraphics 8

1.3.2  DirectInput 9

1.3.3  DirectPlay 9

1.3.4  DirectMusic 9

1.3.5  DirectSound 10

1.3.6  安装DirectX 9.0 SDK 10

1.4  手动设置窗口 11

1.4.1  创建和显示Direct3D

窗口 13

1.4.2  使用Direct3D绘制图元 21

1.4.3  Direct3D顶点缓存 22

1.4.4  坐标系 23

1.5  演示程序 24

1.5.1  Lines演示程序 24

1.5.2  Triangle演示程序 32

1.5.3  Quad演示程序 35

1.5.4  Ortho Matrix演示程序 36

1.5.5  Perspective Projection Matrix

演示程序 38

1.5.6  World Matrix演示程序 40

1.5.7  View Matrix演示程序 41

1.5.8  深度测试 42

1.5.9  模板源文件 43

1.5.10  使用DirectX框架设置

Direct3D 47

1.6  总结 48

第2章  游戏:Stranded 49

2.1  游戏规划导论 50

2.2  游戏规划 50

2.1.1  角色模型 50

2.1.2  菜单和界面 51

2.1.3  环境 53

2.1.4  游戏剧本 53

2.3  引擎规划 53

2.3.1  渲染系统 54

2.3.2  输入系统 54

2.3.3  声音系统 55

2.3.4  人工智能 55

2.3.5  数学库 55

2.4  游戏项目概述 55

2.4.1  游戏项目第1部分 56

2.4.2  游戏项目第2部分 56

2.4.3  游戏项目第3部分 56

2.4.4  游戏项目第4部分 56

2.4.5  游戏项目第5部分 56

2.4.6  游戏项目第6部分 56

2.4.7  游戏项目第7部分 57

2.4.8  游戏项目第8部分 57

2.4.9  游戏项目第9部分 57

2.4.10  游戏项目第10部分 57

2.4.11  游戏项目第11部分 57

2.4.12  游戏项目第12部分 58

2.5  游戏项目第1部分:启动

项目 58

2.5.1  游戏源文件 59

2.5.2  引擎源文件和头文件 63

2.5.3  D3DRenderer.cpp 67

2.6  总结 77

第3章  Direct3D光照和物体 79

3.1  Direct3D光照导论 80

3.1.1  光源 80

3.1.2  反射模型 82

3.1.3  光照和绘影技术 85

3.2  使用Direct3D函数创建

物体 87

3.3  在Direct3D中创建光照 91

3.4  游戏项目第2部分:增加对

硬件光照的支持 97

3.5  总结 101

第4章  纹理 103

4.1  Direct3D中的纹理介绍 105

4.2  创建和使用纹理 106

4.2.1  纹理坐标 109

4.2.2  Mipmap 110

4.2.3  纹理质量 111

4.2.4  Textures演示程序 111

4.2.5  多纹理贴图 115

4.2.6  Multitexture贴图演示

程序 116

4.2.7  透明度 121

4.2.8  Transparency演示程序 121

4.2.9  立方体贴图纹理 122

4.3  sprite(子图形) 123

4.3.1  点状sprite 124

4.3.2  Point Sprites演示程序 125

4.4  凸凹贴图 127

4.5  保存纹理 130

4.6  幕外渲染 133

4.7  游戏项目第3部分:增加对

纹理的支持 141

4.8  总结 152

第5章  Direct3D文本和图形用户

界面 153

5.1  在屏幕上显示文本 154

5.2  计算帧率 159

5.3  创建和显示图形用户界面 161

5.3.1  状态显示界面(HUD) 161

5.3.2  GUI演示程序 162

5.3.3  main源文件 178

5.4  游戏项目第4部分:添加文本

和GUI支持 183

5.4.1  游戏源文件 183

5.4.2  游戏项目引擎文件 191

5.5  总结 204

第6章  特效 207

6.1  多采样 207

6.2  雾 211

6.3  细节映射 214

6.4  粒子系统 219

6.5  游戏项目第5部分:增加

特效 230

6.6  总结 237

第7章  基本脚本系统 239

7.1  脚本介绍 239

7.2  属性脚本系统 241

7.3  命令脚本系统 258

7.4  令牌流 273

7.5  其他类型的脚本系统 280

7.6  游戏项目第6部分:增加对

脚本的支持 280

7.7  总结 281

第8章  游戏数学回顾 283

8.1  游戏数学介绍 284

8.2  矢量数学和回顾 285

8.3  矩阵数学 288

8.3.1  矩阵复习 289

8.3.2  Direct3D矩阵 293

8.4  四元组数学 293

8.5  射线数学 296

8.6  平面数学 296

8.6.1  平面复习 297

8.6.2  Direct3D平面 302

8.7  三角形和多边形 303

8.8  物理 304

8.9  游戏项目第7部分:创建

数学库 304

8.10  总结 337

第9章  碰撞检测 339

9.1  碰撞介绍 340

9.2  边界框 340

9.3  边界球 344

9.4  平面碰撞 346

9.5  演示程序 347

9.5.1  边界框碰撞 348

9.5.2  球碰撞 354

9.5.3  平面碰撞 360

9.6  游戏项目第8部分:添加

碰撞检测 366

9.7  总结 376

第10章  输入检测和响应 377

10.1  使用DirectInput 377

10.2  DirectInput演示程序 380

10.3  游戏项目第9部分:添加

输入系统 396

10.4  总结 413

第11章  声音 415

11.1  声音介绍 416

11.1.1  DirectSound 416

11.1.2  DirectMusic 417

11.2  使用DirectMusic和

DirectSound 417

11.3  声音演示程序 422

11.3.1  main源文件 422

11.3.2  演示程序的头文件和

源文件 426

11.4  游戏项目第10部分:添加

声音 432

11.5  总结 441

第12章  模型加载 443

12.1  模型加载介绍 443

12.2  使用X文件 445

12.2.1  X文件格式介绍 445

12.2.2  Material模板 447

12.2.3  Mesh模板 447

12.2.4  MeshMaterialList

模板 448

12.2.5  MeshTextureCoords

模板 448

12.2.6  加载和渲染X模型 449

12.2.7  X Model Loading演示

程序 450

12.3  使用OBJ文件 455

12.3.1  OBJ文件格式介绍 456

12.3.2  OBJ Model Loading演示

程序 458

12.4  使用UMF文件 471

12.4.1  UMF文件格式介绍 471

12.4.2  UMF模型加载演示

程序 473

12.5  游戏第11部分:加载

模型 485

12.5.1  添加模型加载支持 486

12.5.2  加载和渲染等级 487

12.6  总结 511

第13章  模型动画 513

13.1  动画介绍 514

13.2  动画路径 514

13.2.1  直线路径 514

13.2.2  曲线路径 520

13.2.3  圆形路径 526

13.2.4  路线 531

13.3  骨骼动画 543

13.4  X模型动画 550

13.5  游戏项目第12部分:添加

对动画的支持功能 571

13.6  总结 573

第14章  场景管理 575

14.1  场景管理介绍 575

14.2  场景管理技术 576

14.2.1  状态管理 576

14.2.2  闭塞物和平截头体

选择 577

14.2.3  八叉树和四叉树 578

14.2.4  二叉搜索树 579

14.2.5  可能可见度集合 580

14.3  总结 581

第15章  完成游戏引擎设计 583

15.1  日志系统 584

15.2  3D摄像机系统 588

15.3  平截头体选择 595

15.4  游戏项目第13部分:完成

引擎设计 605

15.5  总结 610

第16章  开发游戏:Stranded 611

16.1  本章概述 612

16.2  组织游戏资源 613

16.3  加载和显示最终的游戏 625

16.4  摄像机移动和碰撞检测 634

16.5  游戏元素 641

16.6  代理角色 654

16.7  打包 664

16.8  总结 664

第17章  结束语 667

17.1  最后的思考 667

17.2  下一步的工作 668

附录A  推荐的书籍和网站 669

A.1  推荐的书籍 669

A.1.1  游戏和图形编程 669

A.1.2  通用编程 671

A.1.3  人工智能(AI)和数学 671

A.2  推荐的网站 671

附录B  C++入门 675

B.1  C++基础 675

B.2  动态内存和文件输入/输出 683

B.3  结构和类 687

B.4  总结 689

附录C  关于光盘 691

C.1  文件夹 691

C.2  一般系统要求 691