第1章 关于Windows 1
1.1 关于Windows 1
1.2 匈牙利命名法 2
1.3 Windows的一般概念 3
1.4 Windows中的消息处理 4
1.5 Hello World——Windows风格 6
1.6 对窗口几何参数的操作 17
1.7 重要的窗口消息 19
1.8 类的封装 23
1.9 COM:组件对象模型 30
1.10 小结 32
第2章 DirectX 10入门 33
2.1 什么是DirectX 33
2.2 安装 33
2.3 VC++的环境设置 34
2.4 DirectDraw发展史 36
2.5 Direct3D简介 37
2.5.1 2D图形学基础 38
2.5.2 纹理 41
2.5.3 用cGraphicsLayer启动Direct3D 50
2.5.4 Direct3D的初始化 56
2.5.5 关闭Direct3D 63
2.6 例程:Direct3D Sample 63
2.7 小结 65
第3章 输入与音效 67
3.1 DirectInput 67
3.1.1 设备 68
3.1.2 应用程序的焦点和设备 73
3.1.3 DirectInput对象 74
3.2 音效 90
3.2.1 音效的本质 90
3.2.2 DirectSound的概念 91
3.3 加载WAV文件 98
3.4 应用程序:DirectSound Sample 118
3.5 小结 123
第4章 3D数学基础 125
4.1 点 125
4.1.1 point3结构 128
4.1.2 基本的point3函数 129
4.1.3 point3运算符 130
4.2 多边形 137
4.3 三角形 140
4.4 平面 142
4.4.1 确定与平面的位置关系 145
4.4.2 背面剔除 148
4.4.3 线段裁剪 149
4.4.4 裁剪多边形 150
4.5 物体表示法 154
4.6 变换 156
4.6.1 矩阵 157
4.6.2 外接球的碰撞检测 176
4.7 光照 178
4.7.1 颜色的表示 179
4.7.2 光照模型 181
4.7.3 镜面反射 183
4.7.4 光源类型 184
4.7.5 明暗模型 186
4.8 BSP树 189
4.8.1 BSP树相关理论 190
4.8.2 BSP树的构建 190
4.8.3 BSP树相关算法 195
4.8.4 BSP树相关代码 197
4.9 小结 209
第5章 人工智能 211
5.1 起点 212
5.2 操控——基本算法 212
5.2.1 追赶 213
5.2.2 躲避 213
5.2.3 基于模式的AI 214
5.3 操控——高级算法 215
5.3.1 势函数 215
5.3.2 路径跟踪 219
5.4 动机 230
5.4.1 不确定有限自动机 230
5.4.2 遗传算法 232
5.4.3 基于规则的AI 234
5.4.4 神经网络 235
5.4.5 应用程序:NeutralNet 240
5.5 系统扩展 253
第6章 基于UDP的多玩家Internet网络游戏 255
6.1 术语 255
6.1.1 字节序 255
6.1.2 网络模型 257
6.1.3 协议 258
6.1.4 包 258
6.2 实现1:MTUDP 259
6.2.1 设计思路 259
6.2.2 要注意的事情 259
6.2.3 互斥 261
6.2.4 线程、监视器和try/throw/catch结构问题 263
6.2.5 早年的MTUDP 264
6.3 实现2:流畅的网络游戏 294
6.3.1 地理和时域独立 294
6.3.2 时间就是一切 295
6.3.3 仔细挑选 296
6.3.4 预测和推测 296
6.4 小结 298
第7章 Direct3D基础 299
7.1 D3D简介 299
7.2 开始使用Direct3D 300
7.2.1 步骤1:创建ID3D10Device对象和交换链 300
7.2.2 步骤2:创建深度-模板缓存 302
7.2.3 步骤3:创建视区 309
7.2.4 步骤4:创建默认着色器 310
7.2.5 关于深度缓存的更多讨论 323
7.2.6 模板缓存 326
7.2.7 顶点缓存 326
7.3 用着色器进行光照计算 329
7.4 应用程序:D3D View 331
7.4.1 .o3d格式 331
7.4.2 cModel类 332
第8章 高级3D技术 343
8.1 使用层次化对象的动画处理 343
8.1.1 正向运动学 345
8.1.2 反向运动学 347
8.1.3 应用:InvKim 350
8.2 带参数的曲线和曲面 356
8.2.1 贝塞尔曲线和曲面 356
8.2.2 求基础矩阵 361
8.2.3 计算贝塞尔曲线 362
8.2.4 前向差分 363
8.2.5 绘制曲线 367
8.2.6 绘制曲面 368
8.2.7 应用程序:茶壶 369
8.2.8 B样条曲线 377
8.3 细分曲面 380
8.3.1 细分要素 381
8.3.2 改进的蝴蝶法细分方案 383
8.3.3 应用程序:SubDiv 387
8.4 渐进网格 401
8.4.1 渐进网格基础知识 402
8.4.2 选择边 403
8.4.3 实现渐进网格渲染器 406
8.5 辐射度 407
8.5.1 辐射度基本原理 408
8.5.2 渐进辐射度 410
8.5.3 形状因子 411
8.5.4 应用程序:Radiosity 412
8.6 小结 416
第9章 Direct3D高级主题 417
9.1 alpha融合 417
9.1.1 alpha融合方程 417
9.1.2 深度排序的说明 418
9.1.3 激活alpha融合 418
9.2 纹理贴图入门 423
9.2.1 基本原则 423
9.2.2 仿射与透视贴图 424
9.2.3 纹理寻址模式 425
9.2.4 纹理外包 427
9.2.5 纹理走样 428
9.2.6 MIP多级纹理链 429
9.2.7 纹理过滤 430
9.2.8 Direct3D中的纹理 433
9.2.9 加载纹理 434
9.2.10 激活纹理 437
9.3 高级纹理贴图 440
9.3.1 纹理数组 440
9.3.2 多层纹理效果 440
9.3.3 光照贴图(或黑暗贴图) 441
9.3.4 环境贴图 443
9.3.5 镜面贴图 448
9.3.6 细节贴图 448
9.3.7 应用程序:Detail 450
9.3.8 发光贴图 458
9.3.9 光泽度贴图 459
9.3.10 其他效果 460
9.3.11 应用程序:MultiTex 460
9.4 使用模板缓存 480
9.4.1 透支计数器 481
9.4.2 溶解和擦除 481
9.5 小结 482
第10章 场景管理 483
10.1 场景管理问题和解决方案 483
10.1.1 四叉树/八叉树 484
10.1.2 入口渲染 485
10.1.3 入口效果 494
10.1.4 入口生成 498
10.1.5 预先计算的入口渲染(用PVS) 499
10.2 应用程序:Mobots Attack! 500
10.2.1 对象间通信 501
10.2.2 网络通信 505
10.2.3 代码结构 508
10.3 结束感想 508
附录 STL入门 509
A.1 模板 509
A.2 容器 510
A.3 迭代器 512
A.4 仿函数 513