第1部分 Windows和DirectX游戏编程引言 3
第1章 Windows初步 3
1.1 Windows编程概述 4
1.1.1 “获取”Windows 5
1.1.2 理解Windows消息机制 6
1.1.3 多任务 7
1.1.4 多线程 8
1.1.5 事件处理 9
1.2 DirectX快速概览 10
Direct3D是什么 11
1.3 Windows程序基础 12
1.3.1 创建第一个Win32项目 12
1.3.2 理解WinMain 20
1.3.3 完整的WinMain 21
1.4 你所学到的 23
1.5 复习测验 24
1.6 自己动手 25
第2章 侦听Windows消息 26
2.1 编写一个Windows程序 27
2.1.1 理解InitInstance 34
2.1.2 理解MyRegisterClass 36
2.1.3 晒一晒WinProc的秘密 39
2.2 什么是游戏循环 42
2.2.1 老的WinMain 42
2.2.2 WinMain和循环 45
2.3 GameLoop项目 47
GameLoop程序的源代码 47
2.4 你所学到的 54
2.5 复习测验 54
2.6 自己动手 55
第3章 初始化Direct3D 56
3.1 Direct3D初步 56
3.1.1 Direct3D接口 57
3.1.2 创建Direct3D对象 57
3.1.3 第一个Direct3D项目 60
3.1.4 全屏模式的Direct3D 68
3.2 你所学到的 73
3.3 复习测验 73
3.4 自己动手 74
第2部分 游戏编程工具箱 77
第4章 绘制位图 77
4.1 表面和位图 77
4.1.1 主表面 79
4.1.2 从的离屏(off-screen)表面 80
4.1.3 Create Surface示例 82
4.1.4 装载位图 86
4.1.5 Load Bitmap程序 88
4.1.6 代码回收利用 92
4.2 你所学到的 92
4.3 复习测验 93
4.4 自己动手 94
第5章 从键盘、鼠标和控制器获得输入 95
5.1 键盘输入 96
5.1.1 DirectInput对象和设备 96
5.1.2 初始化键盘 97
5.1.3 读取键盘按键 99
5.2 鼠标输入 99
5.2.1 初始化鼠标 100
5.2.2 读取鼠标 101
5.3 Xbox 360控制器输入 102
5.3.1 初始化XInput 103
5.3.2 读取控制器状态 104
5.3.3 控制器振动 105
5.3.4 测试XInput 106
5.4 精灵编程简介 112
5.4.1 一个有用的精灵结构 114
5.4.2 加载精灵图像 115
5.4.3 绘制精灵图像 115
5.5 Bomb Catcher游戏 116
5.5.1 MyWindows.cpp 118
5.5.2 MyDirectX.h 120
5.5.3 MyDirectX.cpp 122
5.5.4 MyGame.cpp 127
5.6 你所学到的 131
5.7 复习测验 132
5.8 自己动手 133
第6章 绘制精灵并显示精灵动画 134
6.1 什么是精灵 134
6.2 加载精灵图像 135
6.3 透明的精灵 137
6.3.1 初始化精灵渲染器 138
6.3.2 绘制透明的精灵 140
6.4 绘制动画的精灵 147
6.4.1 使用精灵表 148
6.4.2 精灵动画演示 150
6.5 你所学到的 154
6.6 复习测验 154
6.7 自己动手 155
第7章 精灵变换 156
7.1 精灵旋转和缩放 156
7.1.1 2D变换 158
7.1.2 绘制变换了的精灵 163
7.1.3 Rotate Scale Demo程序 164
7.1.4 带有变换的动画 166
7.2 你所学到的 169
7.3 复习测验 170
7.4 自己动手 171
第8章 检测精灵碰撞 172
8.1 边界框碰撞检测 172
8.1.1 处理矩形 173
8.1.2 编写碰撞函数 174
8.1.3 新的精灵结构 175
8.1.4 为精灵的缩放进行调整 176
8.1.5 边界框演示程序 176
8.2 基于距离的碰撞检测 180
8.2.1 计算距离 181
8.2.2 编写距离计算的代码 181
8.2.3 测试的碰撞 183
8.3 你所学到的 183
8.4 复习测验 184
8.5 自己动手 185
第9章 打印文本 186
9.1 创建字体 186
9.1.1 字体描述符 187
9.1.2 创建字体对象 188
9.1.3 可重用的MakeFont函数 188
9.2 使用ID3DXFont打印文本 189
9.2.1 使用DrawText打印 189
9.2.2 文本折行 190
9.3 测试字体输出 191
9.4 你所学到的 194
9.5 复习测验 194
9.6 自己动手 195
第10章 卷动背景 196
10.1 卷动 196
10.1.1 背景和布景 198
10.1.2 从图片单元创建背景 198
10.1.3 基于图片单元的卷动 199
10.2 动态渲染的图片单元 205
10.2.1 图片单元地图 205
10.2.2 使用Mappy创建图片单元地图 207
10.2.3 Tile Dynamic Scroll项目 210
10.3 基于位图的卷动 217
10.3.1 基于位图的卷动理论 217
10.3.2 位图卷动演示 218
10.4 你所学到的 221
10.5 复习测验 222
10.6 自己动手 223
第11章 播放音频 224
11.1 使用DirectSound 224
11.1.1 初始化DirectSound 225
11.1.2 创建声音缓冲区 226
11.1.3 装载波形文件 226
11.1.4 播放声音 227
11.2 测试DirectSound 228
11.2.1 创建项目 229
11.2.2 修改“MyDirectX”文件 230
11.2.3 修改MyGame.cpp 232
11.3 你所学到的 238
11.4 复习测验 239
11.5 自己动手 240
第12章 学习3D渲染基础 241
12.1 3D编程简介 242
12.1.1 3D编程的关键组成部分 242
12.1.2 3D场景 242
12.1.3 转移到第三个轴 247
12.1.4 掌握3D管线 248
12.1.5 顶点缓冲区 250
12.1.6 渲染顶点缓冲区 252
12.1.7 创建四边形 253
12.2 带纹理的立方体示例 256
12.3 你所学到的 264
12.4 复习测验 265
12.5 自己动手 266
第13章 渲染3D模型文件 267
13.1 创建以及渲染后援网格 267
13.1.1 创建后援网格 268
13.1.2 渲染后援网格 270
13.1.3 编写着色器代码 270
13.1.4 Stock Mesh程序 272
13.2 装载并渲染模型文件 274
13.2.1 装载.X文件 275
13.2.2 渲染纹理模型 279
13.2.3 从内存中删除一个模型 280
13.2.4 Render Mesh程序 281
13.3 你所学到的 289
13.4 复习测验 289
13.5 自己动手 290
第14章 Anti-Virus(反病毒)游戏 291
14.1 Anti-Virus游戏 291
14.1.1 游戏玩法 292
14.1.2 游戏源代码 302
14.2 你所学到的 329
14.3 复习测验 329
14.4 自己动手 330
第3部分 附录 333
附录A 配置Visual Studio 2013 333
A.1 安装 333
A.2 创建一个新的项目 334
A.3 修改字符集设置 337
A.4 修改VC++路径 338
附录B 各章测验答案 339