第一部分 DirectX介绍 1
第1章 DirectX组件及其作用 1
1.1 什么是DirectX 1
1.2 DirectX组件 1
1.2.1 DirectX SDK 1
1.2.2 DirectX Media SDK 2
1.3 准备使用DirectX 2
1.3.1 准备编译器 2
1.3.2 在程序中包含SDK 3
1.4 COM简介 3
1.4.1 可重用的接口和兼容性 4
1.4.2 IUnknown基类 4
1.4.3 查询接口 4
1.4.4 COM参考计算器 5
1.5 课时小结 5
1.6 专家答疑 5
1.7 课外作业 6
1.7.1 思考题 6
1.7.2 练习题 6
第二部分 从DirectDraw开始 7
第2章 Windows应用程序中的DirectDraw 7
2.1 视频系统 7
2.2 DirectDraw组件 8
2.2.1 IDirectDraw7接口 8
2.2.2 DirectDraw界面 9
2.2.3 与DirectDraw剪贴板的内部保持一致 10
2.3 在主界面上绘图 11
2.4 第一个DirectDraw应用程序 14
2.4.1 建立项目 14
2.4.2 生成窗口框架 14
2.4.3 初始化DirectDraw并生成剪贴板 17
2.4.4 生成主界面 18
2.4.5 加载图像 19
2.4.6 把图像传到屏幕上 20
2.4.7 在消息循环中将它绑到一起 20
2.4.8 释放接口 21
2.5 课时小结 22
2.6 专家答疑 22
2.7 课外作业 23
2.7.1 思考题 23
2.7.2 练习题 23
第3章 系统的控制 24
3.1 全屏图形 24
3.1.1 得到系统的合作 24
3.1.2 改变屏幕分辨率 25
3.2 翻页 26
3.2.1 创建触发链 26
3.2.2 使用页触发 27
3.3 幻灯片显示:一个简单的界面——触发应用程序 28
3.4 设置应用程序 28
3.4.1 初始化应用程序 29
3.4.2 清除 31
3.4.3 绘制一张幻灯 31
3.4.4 处理幻灯片导航 33
3.4.5 例程输出 34
3.5 课时小结 34
3.6 专家答疑 34
3.7 课外作业 35
3.7.1 思考题 35
3.7.2 练习题 35
第4章 创建游戏循环 36
4.1 游戏循环的概念 36
4.2 写一个更好的消息循环 37
4.3 获取平滑的回放 38
4.3.1 在循环中使用计时器 38
4.3.2 选择计时器 38
4.4 第一个动画:一个活动的背景 39
4.4.1 设置应用程序 40
4.4.2 设置初始化 41
4.4.3 通过键盘输入控制动作 42
4.4.4 清除并退出 43
4.4.5 创建游戏循环 43
4.4.6 表演一个活动的背景 47
4.5 课时小结 48
4.6 专家答疑 49
4.7 课外作业 49
4.7.1 思考题 49
4.7.2 练习题 49
第5章 动起来:DirectDraw动画技术 50
5.1 位块传送 50
5.1.1 颜色锁结的两个方法 50
5.1.2 选择一种锁结色 51
5.1.3 转换锁结颜色 51
5.1.4 在DirectDraw中设置锁结色 53
5.2 使它看上去像3D 54
5.2.1 Z轴排序 54
5.2.2 视差:移动物体的深度感知 54
5.3 将它们放在一起 55
5.4 课时小结 62
5.5 专家答疑 62
5.6 课外作业 63
5.6.1 思考题 63
5.6.2 练习题 63
第三部分 添加音乐和声音 65
第6章 DirectSound:为你的游戏增加情调和声音效果 65
6.1 DirectSound的基础 65
6.1.1 低延迟的音频混合 66
6.1.2 硬件加速 66
6.1.3 3D声音 66
6.1.4 DirectSound与Windows音频 67
6.2 内部DirectSound 67
6.2.1 DirectSound对象 67
6.2.2 创建一个声音缓冲区 68
6.2.3 获取设备能力 69
6.2.4 释放DirectSound 69
6.2.5 设置合作级别 69
6.2.6 DirectSoundBuffer对象 70
6.2.7 锁定与解锁一个声音缓冲区 71
6.2.8 播放与停止一个声音缓冲区 72
6.2.9 获取声音缓冲区的状态 73
6.2.10 设置声音缓冲区的音量 73
6.2.11 控制声音缓冲区的颤动 73
6.2.12 改变声音缓冲区的频率 74
6.2.13 静态和流声音缓冲区 74
6.3 课时小结 74
6.4 专家答疑 74
6.5 课外作业 75
6.5.1 思考题 75
6.5.2 练习题 75
第7章 应用DirectSound 76
7.1 DirectSound和游戏 76
7.2 用波工作 77
7.2.1 波的高级用法 77
7.2.2 创建CWave类 78
7.2.3 使用CWave类 84
7.3 DirectSound播放声音效果 84
7.4 课时小结 90
7.5 专家答疑 90
7.6 课外作业 90
7.6.1 思考题 90
7.6.2 练习题 90
第四部分 欢迎来到3D世界 93
第8章 DirectMusic:交互式音乐 93
8.1 DirectMusic的特点 93
8.1.1 Microsoft Synthesizer 94
8.1.2 交互式音乐的时代 95
8.1.3 音乐的动态生成 95
8.2 数字领域的音乐创作 96
8.2.1 音乐结构的快速启蒙 97
8.2.2 用MIDI形式存储乐曲 98
8.2.3 多轨音乐合成器 98
8.3 DirectMusic体系结构 98
8.3.1 IDiretMusicPerformance接口 98
8.3.2 执行对象的接口 100
8.3.3 乐团的组合 100
8.3.4 音乐模板 101
8.4 课时小结 102
8.5 专家答疑 102
8.6 课外作业 102
8.6.1 思考题 103
8.6.2 练习题 103
第9章 应用DirectMusic 104
9.1 用DirectMusic产生器应用程序创作一首简单的谱子 104
9.1.1 选择工具 105
9.1.2 创建节奏 106
9.1.3 制作简单的旋律 107
9.1.4 生成音乐模板 108
9.1.5 保存演奏 110
9.2 创立DirectMusic 110
9.2.1 初始化演奏接口 110
9.2.2 载入作曲文件 111
9.2.3 确定乐器 112
9.3 DirectMusic演奏 114
9.3.1 演奏段 114
9.3.2 在线改变节奏和结构 115
9.4 在游戏中加入DirectMusic 116
9.4.1 创建接口 117
9.4.2 加载执行组件 118
9.4.3 让音乐烘托气氛 119
9.5 课时小结 121
9.6 专家答疑 121
9.7 课外作业 122
9.7.1 思考题 122
9.7.2 练习题 122
第10章 3D概念介绍 124
10.1 3D处理综述 124
10.1.1 物件定义 124
10.1.2 3D管道 124
10.2 在3D空间中定义位置 126
10.3 在三维环境中创建对象 126
10.4 矩阵:使世界运动起来 127
10.4.1 “世界”变换 128
10.4.2 视窗变换 132
10.5 课时小结 132
10.6 专家答疑 133
10.7 课外作业 133
第11章 生成3D图像 134
11.1 D3D中直接模型的继承关系 134
11.1.1 IDirectD7接口 134
11.1.2 IDirect3DDevice7接口 134
11.2 视域锥面 135
11.2.1 在视域中剪切平截面 135
11.2.2 剪切面的前面和后面 135
11.2.3 工程矩阵 136
11.2.4 定义视见区 137
11.3 隐藏面的消除 138
11.4 背面的选取 138
11.5 Z缓冲 139
11.6 课时小结 140
11.7 专家答疑 140
11.8 课外作业 140
11.8.1 思考题 140
11.8.2 练习题 140
第五部分 输出设备 143
第12章 创建第一个D3D的应用程序 143
12.1 在D3D中建立对象 143
12.2 三种网阵格式 144
12.2.1 三角链法 144
12.2.2 三角带链法 144
12.2.3 三角扇形法 145
12.2.4 画一个网状体 145
12.3 标记网状图 146
12.4 开始第一个Direct3D图形 147
12.4.1 生成一个简单的3D物体 147
12.4.2 物体的处理 150
12.4.3 开始工作 151
12.4.4 球类表面指针 152
12.4.5 初始化操作 153
12.4.6 用Direct3D初始化DirectDraw 155
12.4.7 初始化Direct3D 156
12.4.8 设置视窗部分 157
12.4.9 创建物体 158
12.4.10 使物体运动 158
12.4.11 作出布景 160
12.4.12 处理用户输入 162
12.4.13 完成涉及项目 164
12.4.14 程序运行 166
12.5 课时小结 167
12.6 专家答疑 167
12.7 课外作业 168
12.7.1 思考题 168
12.7.2 练习题 168
第13章 在布景中加入纹理和Z-buffer 169
13.1 准备一个Z-buffer设备 170
13.1.1 选择一个Z-buffer 170
13.1.2 创建并结合Z-buffer 171
13.1.3 开启与关闭Z-buffer 172
13.2 加纹理 173
13.2.1 读入一个纹理 173
13.2.2 准备几何图 177
13.2.3 建立设备与操作 179
13.3 课时小结 181
13.4 专家答疑 181
13.5 课外作业 181
13.5.1 思考题 181
13.5.2 练习题 181
第14章 通过光照增加真实感 182
14.1 建立一个光源 182
14.2 光源类型 182
14.2.1 点光源 183
14.2.2 聚光灯光源 183
14.2.3 方向光源 184
14.3 在项目中添加光照 184
14.3.1 创建光源 188
14.3.2 激活光照管道 191
14.3.3 在场景中实现光源的动画 191
14.3.4 删除光源 193
14.4 课时小结 193
14.5 专家答疑 193
14.6 课外作业 194
14.6.1 思考题 194
14.6.2 练习题 194
第六部分 Direct3D直接模式 195
第15章 向场景中输入3D对象和动画 195
15.1 3D建模软件包简介 195
15.2 Direct3D X文件格式 195
15.2.1 顶点存储 200
15.2.2 顶点颜色 201
15.2.3 顶点法线 202
15.2.4 纹理映射 203
15.2.5 框架层次 203
15.2.6 动画路径 205
15.3 转换3D Studio文件:CONV3DS实用库 206
15.4 读取一个X文件格式 207
15.5 在我们的应用程序中添加传播手段 207
15.5.1 读取模型 207
15.5.2 建立层次 208
15.5.3 对象加入到场景中 209
15.5.4 清除 210
15.6 课时小结 211
15.7 专家答疑 211
15.8 课外作业 211
15.8.1 思考题 212
15.8.2 练习题 212
第16章 模拟一个复杂的世界:物理学和对象层次的应用 213
16.1 反作用和影响:定义真实世界的关系 213
16.1.1 运动动力学 214
16.1.2 前向运动 214
16.1.3 支点和其他运动特性 215
16.1.4 反向运动 216
16.1.5 对象层次 216
16.1.6 用矩阵来合并运动 217
16.2 对象间的相互作用 219
16.2.1 碰撞检测 220
16.2.2 对象的反作用力 221
16.3 在我们的应用程序中添加碰撞检测 223
16.3.1 定义对象的范围 224
16.3.2 碰撞测试 227
16.3.3 反作用力向量的动画实现 228
16.4 课时小结 228
16.5 专家答疑 229
16.6 课外作业 229
16.6.1 思考题 229
16.6.2 练习题 229
第17章 DirectInput简介:获取用户输入 231
17.1 DirectInput基础 231
17.2 内部DirectInput 232
17.2.1 DirectInput对象 232
17.2.2 DirectInputDevice对象 234
17.3 DirectInput内部代码 235
17.3.1 启动DirectInput 235
17.3.2 清除DirectInput 235
17.4 处理键盘输入 236
17.5 处理鼠标输入 239
17.6 处理游戏杆的输入 241
17.7 课时小结 245
17.8 专家答疑 246
17.9 课外作业 246
17.9.1 思考题 246
17.9.2 练习题 247
第18章 用户可以感觉到的:力反馈 248
18.1 认识力反馈 248
18.1.1 力反馈术语 248
18.1.2 效果的类型 250
18.2 内部DirectInput概览 250
18.3 使用力反馈 252
18.3.1 列举和创建力反馈设备 253
18.3.2 列举力反馈效果 255
18.4 创建力反馈效果 256
18.4.1 运行力反馈效果 259
18.4.2 改变力反馈效果 259
18.5 力反馈效果特例 260
18.6 课时小结 261
18.7 专家答疑 261
18.8 课外作业 262
18.8.1 思考题 262
18.8.2 练习题 262
第19章 3D声音:从混音到多普勒效应 263
19.1 3D声音入门 263
19.1.1 声音物理学 263
19.1.2 我们如何感觉声音 264
19.1.3 DirectSound3D的结构 266
19.2 DirectSound 3D的组成 266
19.2.1 DirectSound 3D缓冲区 266
19.2.2 DirectSound 3D接收器 270
19.3 向应用程序中添加DirectSound 3D 274
19.3.1 创建听者 274
19.3.2 载入声音 276
19.3.3 创建3D缓冲区 276
19.3.4 仿真音效 277
19.3.5 释放接口 278
19.4 课时小结 279
19.5 专家答疑 279
19.6 课外作业 279
19.6.1 思考题 279
19.6.2 练习题 280
第七部分 DirectPlay 281
第20章 将你的游戏放入网络:编写多用户标题 281
20.1 DirectPlay结构 281
20.2 创建一个DirectPlay对象 286
20.3 选取一个网络联接 286
20.4 连接一个会话 289
20.5 与玩家通信 291
20.5.1 玩家与分组 292
20.5.2 DirectPlay消息 294
20.6 处理网络等待时间 294
20.6.1 确定性/非确定性数据 296
20.6.2 被担保的消息 296
20.6.3 消息管理 297
20.7 课时小结 297
20.8 专家答疑 298
20.9 课外作业 298
20.9.1 思考题 298
20.9.2 练习题 299
第21章 游戏中枢:创建通道 300
21.1 DirectPlay通道简介 300
21.1.1 将玩家集中到一个场所 301
21.1.2 游戏服务器 302
21.2 使一个DirectPlay应用程序通道化 303
21.3 IDirectPlayDobby3接口 303
21.3.1 通道对游戏客户端的支持 304
21.3.2 将游戏注册成通道型的 305
21.4 用户、分组和会话 307
21.5 提供交谈服务 308
21.6 创建一个会话 310
21.7 启动一个DirectPlay通道应用程序 311
21.7.1 使游戏通道化 312
21.7.2 发送和接收通道消息 312
21.7.3 清除 313
21.8 课时小结 313
21.9 专家答疑 313
21.10 课外作业 314
21.10.1 思考题 314
21.10.2 练习题 314
第八部分 DirectMedia SDK 315
第22章 用DirectShow添加视频 315
22.1 DirectShow简介 315
22.2 视频重放能力 316
22.3 互联网流型视频应用程序 316
22.4 图表过滤器 319
22.5 DirectShow应用程序示例 320
22.5.1 初始化DirectShow 320
22.5.2 建立过滤器 321
22.5.3 建立文件流 322
22.5.4 播放影片 324
22.5.5 清除 325
22.6 课时小结 325
22.7 专家答疑 325
22.8 课外作业 326
22.8.1 思考题 326
22.8.2 练习题 326
第23章 用DirectX Transform为面带来活力 327
23.1 DirectX Transform的功能 327
23.2 通用的DirectDraw面:IDXSurface 328
23.2.1 创建DXSurface 328
23.2.2 从各种文件格式中读取图形 329
23.2.3 自动颜色转换 330
23.3 特殊效果:DirectX Transform 330
23.3.1 创建Transform Factory 330
23.3.2 用工厂来访问转换 331
23.3.3 2D转换 332
23.3.4 过程型面 333
23.3.5 3D转换 335
23.4 DirectX Transform应用程序示例 337
23.4.1 创建DXSurface对象 337
23.4.2 载入图形 338
23.4.3 创建转换 338
23.4.4 实现图形转换动画 339
23.4.5 清除 340
23.5 课时小结 340
23.6 专家答疑 341
23.7 课外作业 341
23.7.1 思考题 341
23.7.2 练习题 341
第24章 用DirectAnimation将媒体集成到网页和应用程序中 342
24.1 DirectAnimation:一个API,多个用户 342
24.2 深入面:接口一览 343
24.2.1 DirectAnimation结构 344
24.2.2 DirectAnimation模型 344
24.3 多功能的编程环境 345
24.3.1 在C++中编写DirectAnimation 346
24.3.2 用脚本在Web上使用DirectAnimation 346
24.4 C++的DirectAnimation应用程序示例 347
24.4.1 初始化DirectAnimation 347
24.4.2 载入2D图形 351
24.4.3 创建3D对象 351
24.4.4 添加某些运动 352
24.4.5 创建照相机和光照 352
24.4.6 添加声音 353
24.4.7 实现场景动画 353
24.4.8 清除 354
24.4.9 用DirectDraw方式完成工作 354
24.5 使用DirectAnimation的网页示例 355
24.6 课时小结 357
24.7 专家答疑 357
24.8 课外作业 357
24.8.1 思考题 357
24.8.2 练习题 358
附录 359
附录A 参考答案 359
附录B 用DirectSetup为应用程序的发行做准备 374