第1章 Direct3D/DirectX的历史 3
1.1 DirectX2.0 3
第1部分 DirectX图形:Don't Hurt Me 3
1.2 DirectX6/7 4
1.3 DirectX8 4
1.3.1 Point Sprite 5
1.3.2 3D纹理 5
1.3.3 Direct3DX实用程序库 5
1.3.4顶点Shader和像素Shader 6
1.4 DirectX9 6
1.5小结 7
2.1硬件抽象层(Hardware Abstraction Layer,HAL) 8
第2章 HAL和COM概述 8
2.2插件式软件设备(Pluggable Software Device) 11
2.3参考光栅器(Reference Rasterizer) 12
2.4设备控制 12
2.5COM 13
2.6小结 15
第3章 编程约定 16
3.1访问COM对象 16
3.2命名约定 18
3.3调试DirectX 20
3.4返回码 21
3.5小结 22
第4章 3D基础、Gouraud着色、纹理映射基础 23
4.13D基础 23
4.2理解顶点 25
4.3使用朝向 25
4.4理解面(face) 26
4.5理解多边形(polygon) 26
4.6理解法线(normal) 27
4.7理解法线和Gouraud着色 27
4.8纹理映射(Texture-Mapping)基础 28
4.9小结 30
5.1编译示例 31
第5章 基础 31
5.2 DirectX Graphics通用体系结构 33
5.3Basic示例 34
5.3ConfirmDevice()、OneTimeSceneInit()和InitDeviceObjects()函数 37
5.3.2 RestoreDeviceObjects()方法 37
5.3.3 FrameMove()函数 45
5.3.4 Render()函数 46
5.3.5 InvalidateDeviceObjects()函数 49
5.3.6 DeleteDeviceObjects()函数 50
5.3.7 FinalCleanup()函数 50
5.4 Basic2示例 51
5.4.1 InitDeviceObjects()函数 53
5.4.2 RestoreDeviceObjects()函数 54
5.4.3 Render()函数 56
5.4.4 InvalidateDeviceObjects()函数 58
5.4.5 DeleteDeviceObjects()函数 58
5.4.6 FinalCleanup()函数 58
5.5 Basic3示例 59
5.6 Basic4示例 60
5.7 Basic5示例 66
5.8小结 66
第6章 动画初步 67
6.1 理解变换与视口 67
6.1.1世界变换 68
6.1.2观察变换 88
6.1.3投影变换 94
6.1.4使用视口 96
6.1.5深度缓冲(Depth Buffering) 99
6.2附加资源 102
6.3小结 103
6.4第一部分提问 103
第2部分 深入DirectX图形编程 109
第7章纹理映射基础 109
7.1纹理的要点是什么 109
7.2使用纹理坐标 112
7.3.1包装纹理寻址模式 114
7.3使用纹理寻址模式(texture-addressing mode) 114
7.3.2镜像纹理寻址模式 116
7.3.3夹持纹理寻址模式 117
7.3.4边框颜色纹理寻址模式 118
7.3.5一次镜像纹理寻址模式 118
7.4纹理包装(Texture Wrapping) 118
7.5纹理过滤和抗锯齿(Anti-Aliasing) 120
7.5.1 Mipmap 121
7.5.2最近点采样 122
7.5.3线性纹理过滤 122
7.5.4各向异性过滤 123
7.5.5抗锯齿(Anti-Aliasing) 125
7.5.6 alpha混合(blending) 126
7.6小结 128
第4章 指令系统层 132
4.1 80x86 CPU 132
4.1.1 8086/8088 CPU 133
4.1.2 80386/80486 CPU 135
4.1.3 Pentium系列CPU 137
4.2 80x86 CPU的寄存器和主存储器 141
4.2.1 80x86 CPU的寄存器 141
4.2.2 80x86的主存储器 146
4.3 80x86 CPU的指令系统 157
4.3.1 80x86寻址方式 158
4.3.2 80x86 CPU指令系统 166
10.3 折射/反射环境映射 176
10.3.1 动态折射/折射环境映射 178
10.3.2 凹凸的动态折射/反射环境映射 181
10.4使用阴影 183
10.4.1阴影体(Shadow Volume) 184
习题4 195
10.4.2使用阴影体所需考虑的问题 196
10.5小结 196
第11章 使用文件 197
11.1 3D文件格式 197
11.2 X文件格式 198
11.2.1 首部(Header) 199
11.2.2 网格 199
第5章 汇编语言层 201
11.2.3 网格材质列表 201
5.1概述 201
11.2.4法线 203
5.2汇编语言语句格式 203
11.2.5 纹理 204
5.3.2变量 205
5.3.1常数 205
5.3 80x86宏汇编语言数据、表达式和运算符 205
11.2.6变换矩阵 209
5.3.3标号 209
5.3.4表达式与运算符 210
11.2.7 动画 212
5.4 80x86宏汇编语言伪指令 214
5.4.1符号定义语句 214
11.3 使用X文件 215
5.4.2处理器选择伪指令 215
5.4.3段结构伪指令(SEGMENT/ENDS) 215
11.4扩展X文件 217
11.6 小结 218
11.5.1 X文件格式 218
11.5附加资源 218
11.5.2蒙皮网格(Skinned Mesh) 218
第12章 使用*.md3文件 219
12.1文件格式探索 219
5.4.4段组伪指令(GROUP) 220
5.4.5内存模式和简化段定义伪指令 221
5.4.6定位和对准伪指令 222
12.1.1 Animation.cfg 223
5.4.7过程定义伪指令(PROCENDP) 223
5.4.8包含伪指令(INCLUDE) 224
5.4.9标题伪指令(TITLE) 224
5.5宏指令 224
12.1.2 .skin文件 225
12.1.3纹理与Shader文件 226
5.6汇编语言程序设计基本技术 231
5.6.1程序设计步骤 231
12.1.4 自定义声音 231
12.1.5 .md3格式 232
5.6.2顺序程序设计 232
5.6.3分支程序设计 235
12.2 CharacterEngine示例程序 235
5.6.4循环程序设计 243
5.6.5子程序设计 251
12.3更多的改进 258
12.4 附加资源 258
12.5 小结 258
第4部分 附录 261
附录A Windows游戏编程基础 261
A.1 如何看待窗口 261
A.2 Windows如何与你的游戏交互 261
A.3 窗口的组成部分 262
A.4 窗口框架 262
5.6.6系统功能子程序的调用 262
5.6.7汇编语言程序的开发 263
A.4.1步骤1:定义一个窗口类 266
习题5 269
A.4.2步骤2:注册窗口类 269
A.4.3步骤3:创建一个该类的窗口 269
A.4.4步骤4:显示窗口 272
A.4.5步骤5:创建消息循环 272
A.4.6窗口过程 275
A.5为游戏而优化的窗口框架 276
A.6窗口资源 280
附录B C++入门 284
B.1什么是面向对象程序设计 284
B.1.1抽象 285
B.1.2类 287
B.1.3封装 288
B.1.4声明一个类 289
B.1.5构造函数 292
B.1.6析构函数 292
B.1.7类层次和继承 294
B.1.8虚函数 298
B1.9多态性 299
B.1.10内联(inline)数 300
B.1.11 C++相对与C增强的内容 301
B.2附加资源 306
C.1 3D中的点(Point) 307
附录C 数学入门 307
C.2.1 受限向量(BoundVector) 309
C.2 向量(Vector) 309
C.2.2 自由向量(FreeVector) 310
C.2.3单位向量(Unit Vector) 315
C.3矩阵 315
C.3.1矩阵与向量的乘法 316
C.3.2矩阵加法和减法 317
C.3.3矩阵乘法 317
C.3.5 缩放矩阵 318
C.3.6 旋转矩阵 318
C.3.4平移矩阵 318
C.4小结 320
附录D 使用D3DXCreateTextureFromFileEx()创建纹理 321
附录E 游戏程序设计资源 324
E.1 常规 324
E.2 DirectX图形 324
附录F 随书光盘内容 326
F.1 DirectX 9.0 SDK 326
F.2 ATI RenderMonkey 326
F.3 NVIDIA Cg工具包 327
F.4教学演示动画 327