第1章 C/C++基础回顾 1
1.1浅谈编程行为 1
1.2程序结构和分割编译 4
1.3编译预处理指令 5
1.4程序的注释 7
1.5变量的使用 7
1.6函数的使用 9
1.7指针和引用 10
1.8流程控制语句 13
1.9结构体和联合体 16
1.10用类封装模块 18
1.11类的继承 21
1.12函数的重载、覆盖和隐藏 22
1.13访问权限 23
1.14本章小结 24
第2章 Win32 API编程基础 25
2.1基于回调的Windows程序运行机制 25
2.2一个简单的Windows示例程序 26
2.3 WinMain函数及读取消息的循环体 32
2.4注册窗口类 35
2.5创建应用程序窗口实例 38
2.6回调的窗口过程函数 39
2.7编译和调试程序 43
2.8匈牙利变量命名方法 45
2.9本章小结 46
第3章 DirectX 3D游戏开发入门 47
3.1三维物体的基本成像流程 47
3.1.1 世界坐标系的引入 48
3.1.2摄影坐标系的引入 49
3.1.3剪裁和透视投影 51
3.1.4视口变换和像素的光栅显示 52
3.2光栅显示器的基本原理 54
3.3显示卡的3D渲染管道线 55
3.4浅谈COM组件技术 56
3.4.1 直接调用C++类的函数 57
3.4.2 将C++类打包成DLL提供调用 59
3.4.3 利用抽象基类改进C++类 61
3.5 DirectX 9.0的安装和配置 64
3.6本章小结 67
第4章 3D游戏中的数学基础 68
4.1 向量 68
4.1.1 向量相加 70
4.1.2 向量相减 71
4.1.3 向量的标量乘法 72
4.1.4向量长度的计算 73
4.1.5向量的单位化 74
4.1.6向量的点积 75
4.1.7向量的叉积 76
4.2矩阵 78
4.2.1 矩阵的基本运算 80
4.2.2矩阵的求逆 82
4.2.3矩阵的转置 84
4.3坐标变换 85
4.3.1平移变换 86
4.3.2放大缩小变换 89
4.3.3旋转变换 90
4.4平面 94
4.4.1 三点确定一个平面 94
4.4.2直线与平面的交点 96
4.4.3点和平面的位置关系 97
4.4.4平面的单位化 98
4.5.2复数的符合逻辑的定义 99
4.5 四元数 99
4.5.1 四元数的数学史 99
4.5.3 复数的高维推广——四元数 100
4.5.4四元数在旋转变换中的应用 101
4.6 DirectX中的一些具体数学问题的计算 104
4.6.1世界坐标系到摄影坐标系的变换 104
4.6.2 齐次剪裁透视投影变换 106
4.6.3视截体的平面计算 107
4.6.4透视投影空间到屏幕视口的变换 111
4.7本章小结 113
第5章 键盘、鼠标和游戏杆的输入处理 114
5.1 配置DirectInput的动态链接库 114
5.2创建DirectInput接口对象 115
5.3使用DirectInput接口函数 117
5.4设置DirectInput设备的数据格式 118
5.5设置DirectInput设备的协调级别 119
5.6获取输入设备的访问权 120
5.7设置DirectInput设备的属性 120
5.8读取键盘的输入 122
5.9读取鼠标的输入 128
5.10读取游戏杆的输入 137
5.11本章小结 147
第6章 游戏框架、输入和时钟引擎类 148
6.1游戏框架类CGameEngine_App 148
6.2输入类CGameEngine_Input 151
6.3时钟类CGameEngine_Timer 159
6.4本章小结 163
第7章 基本三角形面的绘制 164
7.1 DirectXGraphics基本应用架构 164
7.2创建IDirect3D9接口对象 166
7.3创建Direct3D设备 166
7.4创建顶点缓冲区 170
7.5启动管道流水线进行渲染 173
7.6实例——绘制一个基本的三角形面 175
7.7本章小结 179
第8章 基本立体面的绘制 180
8.1 3D原始类型 180
8.2顶点顺序和背面剔除 181
8.3顶点索引缓冲区 183
8.4在世界坐标系中放置物体 186
8.5架设摄影机进行取景和投影 187
8.6屏幕视口的设置 188
8.7实例——绘制一个基本的立体面 189
8.8本章小结 196
第9章 材质和光照处理 197
9.1颜色与光照 197
9.2光源设置 200
9.2.1 点光源 201
9.2.2聚焦光源 202
9.2.3方向光源 203
9.3材质设置 204
9.2.4环境光 204
9.4顶点的法向量 205
9.5实例——点光源渲染 207
9.6本章小结 214
第10章 纹理贴图 215
10.1顶点的纹理坐标 215
10.2创建纹理对象 216
10.3纹理过滤技术 217
10.4纹理地址模式 219
10.5实例——纹理贴图 226
10.6本章小结 234
11.1颜色混合原理 235
第11章 Alpha颜色混合 235
11.2 Alpha颜色混合例子 237
11.3 利用ID3DXSprite实现颜色透明 242
11.4利用Alpha测试实现颜色透明 248
11.5本章小结 254
第12章 XFile网格的应用 256
12.1.x文件的基本格式 256
12.2.x文件的数据装入 262
12.3 Mesh数据的处理 264
12.4 Mesh数据的优化 267
12.5实例——.x文件的网格渲染 269
12.6本章小结 275
13.1骨骼动画的基本原理 276
第13章 骨骼动画的实现 276
13.2.x文件的动画格式 279
13.3.x文件动画数据的装入 284
13.4骨骼蒙皮的渲染 292
13.5实例——骨骼动画的实现 300
13.6本章小结 308
第14章 视点相关的LOD地形渲染 310
14.1地形高度图 310
14.2地表的四叉树分割 312
14.3视点距离相关的细节层级判别 319
14.4地形节点的渲染 326
14.5规范节点的分割 335
14.6实例——LOD地形渲染 338
14.7本章小结 346
第15章 基本3D渲染引擎类 347
15.1场景管理类CGameEngine_SceneManager 347
15.2纹理处理类CGameEngine_Texture 357
15.3顶点处理类CGameEngine_VertexBuffer 359
15.4光照处理类CGameEngine_Light 363
15.5材质处理类CGameEngine_Material 366
15.6本章小结 368
第16章 天空和广告牌技术 369
16.1矩形面天空 369
16.2球面天空 378
16.3广告牌技术 386
16.4本章小结 391
第17章 雾化处理 392
17.1雾化原理 392
17.2雾化融合 393
17.3雾化颜色 394
17.4选择雾化模式 394
17.5顶点雾化 394
17.6像素雾化 397
17.7本章小结 398
第18章 文字和能量格渲染 399
18.1 ID3DXFont接口的应用 399
18.2字体引擎类CGameEngineFont 400
18.3能量格引擎类CGameEngine_EnergyBar 404
18.4实例——文字和能量格渲染 408
18.5本章小结 414
第19章 粒子系统 415
19.1用PointSprite实现粒子 415
19.2粒子引擎类CGameEngineParticle 417
19.3实例——爆炸粒子渲染 425
19.4本章小结 427
第20章 Stencil蒙板阴影处理 428
20.1 Stencil蒙板缓冲区 428
20.2平面阴影计算 431
20.3实例——平面阴影渲染 433
20.4 ShadowMap阴影映射图技术 443
20.5 ShadowVolume阴影体技术 445
20.6本章小结 448
第21章 DirectSound声音播放 449
21.1声音的播放原理 449
21.2创建IDirectSound8对象 451
21.3设置设备的协调级别 451
21.4 Primary主缓冲区的创建 452
21.5 Secondary次缓冲区的创建 454
21.6装入声音数据到次缓冲区 457
21.7声音的播放与控制 458
21.8 CGameEngine_Sound声音引擎类 460
21.9实例——DirectSound的声音渲染 466
21.10 3D声效的使用 468
21.11本章小结 472