《逐梦旅程:Windows游戏编程之从零开始》简介:

端游开发是目前最热的职业,报酬丰厚且能实现自己的游戏梦想。作者历经一年时间,编写了这本详细讲解Windows游戏开发的入门图书。

《逐梦旅程:Windows游戏编程之从零开始》由浅入深,从Windows游戏开发的基本概念开始讲解,寓教于乐,每个知识点都配有经典的游戏源码 作为实例。让读者可以从零开始,边玩边学,熟练掌握Windows游戏开发。

《逐梦旅程:Windows游戏编程之从零开始》涵盖了市场上最新的DirectX技术,使读者在第一时间接触最新、最前沿的游戏开发技术,同时《逐梦旅程:Windows游戏编程之从零开始》对目前游戏市场里热门的几大游戏引擎都进行了深入浅出的剖析和对比,让读者轻松迈入游戏开发的殿堂。

《逐梦旅程:Windows游戏编程之从零开始》适合Windows游戏开发的初学者阅读,也适合作为高等院校和培训学校相关专业的教学参考书。

书本导读

1. 如果你的编程经验为零:

毫无编程经验的朋友,请先阅读介绍C++编程语言的相关书籍,再来延续我们的梦想,阅读这本书。学习C++推荐书目: C++ Primer和C++ Primer Plus。

2. 如果你有C++编程经验但没有接触过Windows 编程:

有C++编程经验但毫无Windows编程经验的朋友,可以重头到尾顺畅的阅读这本书。因为这本书最准确的定位就是有一点C++编程经验之后从零开始掌握Windows游戏编程。

3. 如果你有Windows 编程经验,但不熟悉GDI:

有Windows编程经验但不熟悉GDI的朋友,推荐适当阅读第一章之后,从第4章开始您的征程。

4. 如果你想了解Windows GDI游戏绘图技巧:

想了解Windows GDI游戏绘图技巧的朋友,请阅读第5章。

5. 如果你想了解Windows游戏动画技巧:

想了解Windows游戏动画技巧的朋友,第6章会满足你的好奇心。

6. 如果你想了解Windows小游戏键盘鼠标编程的相关知识:

需要了解Windows中小游戏对键盘鼠标编程相关知识的朋友,第7章会给你答案。

7. 如果你想看看Windows GDI如何写出好玩的程序:

想看看Windows GDI可以弄出哪些好玩的玩意儿的朋友,第8章会给你惊喜。

8. 如果你想了解一个GDI小游戏完整的开发过程:

想了解一个结构完整的小游戏的开发过程的朋友们,第9章会超出你们的期待。

9. 如果你已经准备好迎接挑战,开始学习DirectX游戏编程:

有一定Windows编程经验,并且了解GDI编程,想开始DirectX 3D游戏编程学习的朋友,请从第10章开始阅读。这本书从第10章往后的内容组织起来是一个系统的DirectX游戏编程教材,其实可以单独成书的。

序 致终将由我们去复兴的国产游戏

我们所有的梦想都可以成真,只要我们有勇气去追求它们(Allour dreams can come true, if we have the courage to pursue them)。

————沃尔特·迪斯尼

依稀记得那还是F4红遍大街小巷,满城都飘扬着《流星雨》的年代。

那个时候的电子游戏,无论是投币式的街机游戏,还是网吧里的《反恐精英》、《流星蝴蝶剑》、《仙剑奇侠传》、《星际争霸》、《帝国时代》等引领时代的游戏界的璀璨明珠,总能深深地吸引住每个纯真无邪的孩童的心,绚烂的游戏画面总是让孩童们流连忘返。

那个时候,每次放学后唯一单纯的想法就是悄悄溜到学校附近的网吧,和电脑游戏亲密接触。口袋里有零花钱的时候就能玩上一会儿,没有零花钱的时候就痴痴地站在屏幕前面看别人操纵着屏幕前的剑侠闯荡世界。年少的我单纯地认为,游戏世界中存在着一个无比恢弘的世界,那是可以装下梦想的地方。应该是我对游戏的痴迷,对游戏开发梦想的虔诚,让我走向了研究游戏开发的这条道路。

还记得那个香樟树覆盖的夏天,年幼无知的我在一帮同学中吹牛说:我长大后,一定要自己开发出比这些游戏还牛、还要好玩的游戏。

现在想想,这几年走过的路途,真应了那句话,“现在的努力,都是为了小时候吹过的牛”。

这些年来,在学习游戏编程的道路上有过惊喜,有过坎坷,有过自豪,有过怅惘,走了不少弯路,最终也算是走上了正途,小有所成。于是,我单曲循环着五月天的《有些事情现在不做一辈子都不会做了》,打开Word,打开Visual Studio,把自己这么多年来的游戏开发经验和心得用文字凝聚起来,开始为大家编写这本书。

而这么一写,就是一整年。

经过一年夙兴夜寐,终于,赶在22岁生日之前,近百万字的书稿随着一声响指而初具雏形。

“谨以此书献给父母,因养育之恩无以回报;谨以此书献给母校南京航空航天大学和乌克兰国立航空航天大学,因赐予我一颗不甘平庸、上下求索的心;谨以此书献给所有怀揣游戏开发梦想的人们,因为,你们不是一个人在战斗。”

当在书稿的开篇写下这三个“谨以”的时候,我终于意识到,这一年的夜以继日,这一年的披星戴月,都是值得的。

然而,因为岁月积累的关系,这本书中渗透的编程思想或许不能和编程界中的泰斗们同日而语。但是我可以捂着胸口说,我把这些年自己悟出来的关于游戏编程的学习方法和真知灼见,毫无保留地呈现给了大家。大家能看到的眼前的这些文字和代码,全都是经过一遍又一遍的深思熟虑,一遍又一遍的修改,小心谨慎地敲出来的。

详细研究过游戏编程的朋友们都应该有这样的共识:“中国人写的书水平上不去,外国人写的书水平有了,但是翻译得往往都强差人意,理解不了”。也许正是这个原因,国内游戏编程的入门门槛一直很高,DirectX一直被人们认为是很难学的。很多怀揣游戏开发梦想的热血青年们,信誓旦旦地开始着手学习游戏编程的时候,往往却被晦涩难懂的游戏编程教材拒之梦想门外,碰了一鼻子灰,从此和最初的梦想失之交臂。我想,这或许是导致国产游戏业界的萎靡,国产游戏一直很难成长起来的原因之一。

在这样的环境的激励下,这本倾注我一年多心血的书出现了,愿它能够改变这样的现状。

愿这本书,能帮助那些热爱游戏编程、怀揣游戏开发梦想,却苦于难以入门的人们,让他们少走弯路。

愿这本书,能为国产游戏、国产游戏引擎的崛起,开启一扇门,迎接新的黎明。

我们都还年轻,该做的梦及时去做,该追寻的梦想用力去追寻。

我有一个梦想,将来的某一天,大家都能玩到拥有自己本土文化的优质游戏。

我有一个梦想,有一天,西游记能出ACT,让老外去体会中国文化西游记中“斗战胜佛”的打击快感,那一定比西方的动作巅峰之作《战神》、《鬼泣》更加深邃。

我有一个梦想,有一天,上海滩能出沙盒游戏,而不是玩《GTA》感受美国梦,亦或是玩着《热血无赖》体验国外公司强行塞给我们的“中国文化”。

我有一个梦想,有一天,不少3A大作不需要汉化,因为是我们自己的游戏,配音是中国的,文化也是中国的。

我有一个梦想,将来的某一天,国产游戏能像中国的其他产业一样,以一个领跑者的姿态,面对全世界,面对全宇宙,器宇轩昂,扬眉吐气。

这会是由我们一起去完成的梦想。

等着我们的好消息!

《逐梦旅程:Windows游戏编程之从零开始》摘录:

因为Windows API是在C语言称王争霸叱咤风云的年代开发的,那时候C++还未发迹,所以我们可以发现,在Windows和应用程序之间传递数据的是结构体而不是类。

《逐梦旅程:Windows游戏编程之从零开始》目录:

序 篇 逐梦·游戏开发梦想的重量
第1章 高瞻远瞩——游戏开发面面观............................................................................... 3
1.1 逐梦——梦想让我们不孤单................................................................................ 4
1.1.1 现在的努力,就是为了证明小时候吹过的牛................................................ 4
1.1.2 为梦想,为国产游戏的未来,请把这本书读下去.......................................... 4
1.2 游戏产业的黎明................................................................................................. 5
1.3 游戏产业的分类——六大游戏市场....................................................................... 6
1.3.1 3A级游戏开发领域................................................................................... 6
1.3.2 社交和休闲游戏开发领域.......................................................................... 8
1.3.3 移动游戏开发领域.................................................................................... 9
1.3.4 功能型游戏开发领域................................................................................. 9
1.3.5 学术型游戏开发领域............................................................................... 10
1.3.6 独立型游戏开发领域............................................................................... 10
1.4 游戏平台与游戏开发编程语言的认知.................................................................. 11
1.5 对游戏类型的认知............................................................................................ 12
1.6 游戏开发中图形API的概念.............................................................................. 14
1.7 游戏编程学习路线总结..................................................................................... 15
1.8 章节小憩......................................................................................................... 16
第一篇 起航 · 夯实游戏程序之根
第2章 开锋你的绝世名刃—— Visual Studio开发环境的安装、配置............................... 19
2.1 Visual Studio、VC++和C++的那些事儿............................................................ 20
2.2 Visual Studio 2010的下载、安装与配置............................................................ 21
2.2.1 下载VisualStudio 2010......................................................................... 21
2.2.2 安装VisualStudio 2010......................................................................... 22
2.2.3 初次配置VisualStudio 2010................................................................... 25
2.2.4 Visual Studio 2010常用设置介绍............................................................ 26
2.3 Visual Studio 2010使用指南............................................................................ 27
2.3.1 集成开发环境简介.................................................................................. 27
2.3.2 Visual Studio界面概述........................................................................... 28
2.3.3 工具栏选项............................................................................................ 29
2.4 百科全书——帮助文档与MSDN....................................................................... 30
2.4.1 MSDN的安装........................................................................................ 31
2.4.2 离线查看MSDN的方法.......................................................................... 33
2.4.3 使用MSDN帮助文档.............................................................................. 34
2.5 Coding路上不孤单——强大的编程助手Visual AssistX...................................... 34
2.6 长征第一步——第一个程序的创建与编写........................................................... 36
2.6.1 关于项目与解决方案............................................................................... 36
2.6.2 第一个程序的创建与编写......................................................................... 37
2.6.3 Visual Studio文件类型分析.................................................................... 41
2.7 章节小憩......................................................................................................... 42
第3章 启程——Windows编程基础................................................................................ 43
3.1 高瞻远瞩——Windows编程体系与游戏编程....................................................... 44
3.2 理解两个术语——API与SDK........................................................................... 45
3.2.1 何为API................................................................................................ 45
3.2.2 什么是SDK........................................................................................... 46
3.3 Windows程序的“心脏”——WinMain函数...................................................... 46
3.3.1 WinMain函数......................................................................................... 46
3.3.2 MessageBox函数.................................................................................. 49
3.3.3 PlaySound函数..................................................................................... 51
3.3.4 示例程序Firstblood!............................................................................ 52
3.4 Windows程序的“外貌”——窗口.................................................................... 55
3.5 Winodows资源的“身份证”——句柄.............................................................. 55
3.6 Windows程序的“邮局”——消息与消息队列................................................... 56
3.6.1 消息的表示形式——MSG结构体............................................................. 56
3.6.2 关于消息队列......................................................................................... 58
3.7 步步为营——窗口创建四步曲........................................................................... 58
3.7.1 窗口类的设计......................................................................................... 58
3.7.2 窗口类的注册......................................................................................... 63
3.7.3 窗口的正式创建...................................................................................... 64
3.7.4 窗口的显示和更新.................................................................................. 66
3.8 各有千秋——两套消息循环体系........................................................................ 68
3.8.1 以GetMessage为核心的消息循环体系.................................................... 69
3.8.2 以PeekMessage为核心的消息循环体系.................................................. 71
3.9 Windows程序的“中枢神经”——窗口过程函数................................................ 73
3.10 做好善后——窗口类的注销............................................................................. 75
3.11 牛刀小试——一个完整的窗口程序的诞生......................................................... 76
3.12 小不忍则乱大谋——关于命名规范................................................................... 80
3.13 章节小憩....................................................................................................... 82
第二篇 初探 · GDI 2D游戏编程
第4章 入门心法——Windows游戏图形基础.................................................................. 85
4.1 Windows图形设备接口(GDI)........................................................................ 86
4.1.1 GDI的初印象......................................................................................... 86
4.1.2 用GDI写游戏的认知.............................................................................. 86
4.1.3 关于GDI+............................................................................................. 87
4.1.4 GDI的特点............................................................................................ 87
4.1.5 GDI中的基本图形.................................................................................. 88
4.1.6 GDI的函数分类...................................................................................... 89
4.2 设备环境(DC)............................................................................................. 90
4.2.1 设备环境的基本概念............................................................................... 90
4.2.2 获取设备环境句柄(HDC)的两种方式..................................................... 91
4.3 Windows屏幕区域相关概念阐述....................................................................... 94
4.3.1 屏幕区、窗口区与客户区......................................................................... 94
4.3.2 坐标点与坐标变换.................................................................................. 94
4.4 写一个GDI程序通用框架................................................................................. 95
4.5 GDI基本几何绘图.......................................................................................... 100
4.5.1 创建画笔.............................................................................................. 100
4.5.2 创建画刷.............................................................................................. 101
4.5.3 图形对象的选择.................................................................................... 102
4.5.4 绘制图形和线条.................................................................................... 103
4.6 游戏随机数系统初步....................................................................................... 105
4.6.1 游戏中的随机系统概述.......................................................................... 105
4.6.2 随机系统初步....................................................................................... 106
4.6.3 几种随机数的简单算法.......................................................................... 108
4.6.4 产生一定范围内随机数的通用算法公式................................................... 109
4.6.5 总结.................................................................................................... 109
4.6.6 示例程序GDIdemo1............................................................................. 110
4.7 文字的输出.................................................................................................... 113
4.7.1 最常用文字输出函数TextOut................................................................. 114
4.7.2 进阶文字输出函数................................................................................. 114
4.7.3 设置文字颜色....................................................................................... 115
4.7.4 设置文字背景透明................................................................................. 116
4.7.5 字体的创建.......................................................................................... 116
4.7.6 总结.................................................................................................... 117
4.7.7 示例程序GDIdemo2............................................................................. 119
4.8 位图绘制基础................................................................................................ 120
4.8.1 位图绘制四步曲.................................................................................... 121
4.8.2 示例程序GDIdemo3............................................................................. 125
4.9 消除闪烁:缓冲显示技术................................................................................ 127
4.10 章节小憩..................................................................................................... 128
第5章 遮羞的艺术——Windows游戏绘图技巧............................................................ 129
5.1 透明贴图的两套体系....................................................................................... 130
5.2 透明遮罩法.................................................................................................... 130
5.2.1 具体实现细节....................................................................................... 131
5.2.2 示例程序GDIdemo4............................................................................. 134
5.3 透明色彩法.................................................................................................... 137
5.3.1 具体实现细节....................................................................................... 137
5.3.2 示例程序GDIdemo5............................................................................. 139
5.4 自己动手处理图片素材................................................................................... 141
5.4.1 游戏素材的来源.................................................................................... 142
5.4.2 Photoshop图像处理软件...................................................................... 142
5.4.3 处理游戏素材图片................................................................................. 143
5.5 章节小憩....................................................................................................... 150
第6章 光与影的交汇——Windows游戏动画技术......................................................... 151
6.1 定时器动画显示............................................................................................. 152
6.1.1 创建定时器.......................................................................................... 152
6.1.2 WM_TIMER消息响应............................................................................ 153
6.1.3 删除定时器.......................................................................................... 154
6.1.4 示例程序GDIdemo6............................................................................. 155
6.2 游戏循环动画显示.......................................................................................... 161
6.3 透明动画....................................................................................................... 165
6.4 排序贴图....................................................................................................... 169
6.5 章节小憩....................................................................................................... 175
第7章 做游戏的主人——Windows游戏输入消息处理.................................................. 176
7.1 Windows键盘消息处理.................................................................................. 177
7.1.1 虚拟键码与键盘消息............................................................................. 177
7.1.2 键盘消息处理....................................................................................... 181
7.1.3 示例程序GDIdemo10........................................................................... 182
7.2 Windows鼠标消息处理.................................................................................. 187
7.2.1 鼠标消息的处理方式............................................................................. 187
7.2.2 鼠标相关常用函数讲解.......................................................................... 189
7.3 章节小憩....................................................................................................... 199
第8章 玄妙的物理——物理建模与粒子系统初步.......................................................... 201
8.1 基础物理建模初步.......................................................................................... 202
8.1.1 匀速与加速运动模拟............................................................................. 202
8.1.2 重力系统模拟....................................................................................... 207
8.1.3 摩擦力系统模拟.................................................................................... 210
8.2 粒子系统初步................................................................................................ 214
8.2.1 基本概念.............................................................................................. 214
8.2.2 雪花飞舞示例程序................................................................................. 215
8.2.3 星光绽放示例程序................................................................................. 219
8.3 章节小憩....................................................................................................... 224
第9章 梦的初现——开发回合制游戏《勇者斗恶龙》................................................... 225
9.1 设计游戏登场角色.......................................................................................... 226
9.2 设计主角角色技能.......................................................................................... 228
9.2.1 “无敌斩”角色技能设计....................................................................... 228
9.2.2 “烈火剑法”角色技能设计.................................................................... 228
9.2.3 “气疗术”角色技能设计....................................................................... 229
9.2.4 “恩赐解脱”角色技能设计.................................................................... 229
9.3 设计反派角色技能.......................................................................................... 230
9.3.1 人工智能技术一瞥................................................................................. 230
9.3.2 反派人物AI的设计............................................................................... 232
9.3.3 “幽冥鬼火”反派技能设计.................................................................... 233
9.3.4 “嗜血咒”反派技能设计....................................................................... 233
9.3.5 “致命一击”反派技能设计.................................................................... 234
9.3.6 “使用梅肯斯姆”反派技能设计............................................................. 234
9.4 书写游戏程序实现代码................................................................................... 235
9.4.1 游戏资源的初始化................................................................................. 235
9.4.2 功能函数的实现.................................................................................... 238
9.4.3 游戏主体部分的实现............................................................................. 240
9.4.4 游戏窗口过程函数的实现....................................................................... 244
9.4.5 玩家动作逻辑与技能特效绘图函数的实现................................................ 245
9.4.6 反派动作逻辑与绘图函数的实现............................................................. 248
9.5 整合代码,完成游戏开发................................................................................ 251
9.6 玩游戏.......................................................................................................... 269
9.7 游戏打法攻略、改进与素材............................................................................. 271
9.8 章节小憩....................................................................................................... 272
第三篇 飞跃 · DirectX游戏编程基础
第10章 快到碗里来——DirectX大局观认知................................................................. 275
10.1 对DirectX的认知......................................................................................... 276
10.1.1 DirectX的目前地位............................................................................. 276
10.1.2 DirectX的两种不同含义...................................................................... 277
10.1.3 DirectX的几套开发方案...................................................................... 278
10.1.4 图形API体系认知............................................................................... 278
10.1.5 微软的宠儿——DirectX....................................................................... 279
10.1.6 不甘做备胎——OpenGL...................................................................... 279
10.2 宿敌的世纪之斗:DirectX与OpenGL的博弈.................................................. 280
10.3 DirectX开发环境的配置................................................................................ 282
10.4 新版DirectXSDK的组件介绍....................................................................... 286
10.4.1 新版DirectXSDK中现存的组件.......................................................... 286
10.4.2 新版DirectXSDK中被移除的组件....................................................... 288
10.4.3 关于当前2D游戏开发可用的图形API................................................... 289
10.5 对DirectXSDK文件组成的剖析.................................................................... 289
10.6 让DirectXSDK物尽其用............................................................................. 294
10.7 选择我们的DirectX学习版本........................................................................ 295
10.7.1 DirectX的几套版本简介...................................................................... 295
10.7.2 DirectX11 vs DirectX9,现阶段学哪个好.............................................. 295
10.8 当前Direct3D中的两套渲染体系................................................................... 297
10.9 Direct3D程序的体系结构.............................................................................. 298
10.10 学习DirectX的两个技巧............................................................................. 300
10.11 章节小憩................................................................................................... 300
第11章 三维内功心法——Direct3D编程基础............................................................... 301
11.1 典型Direct3D程序流程分析.......................................................................... 302
11.2 对COM接口对象的一些介绍......................................................................... 303
11.3 写一个DirectX程序通用框架........................................................................ 304
11.4 化腐朽为神奇——Direct3D初始化四步曲....................................................... 310
11.4.1 Direct3D初始化四步曲概述................................................................. 310
11.4.2 Direct3D初始化四步曲之一:创接口.................................................... 310
11.4.3 Direct3D初始化四步曲之二:取信息.................................................... 311
11.4.4 Direct3D初始化四步曲之三:填内容.................................................... 313
11.4.5 Direct3D初始化四步曲之四:创设备.................................................... 315
11.4.6 Direct3D初始化四步曲代码赏析........................................................... 316
11.4.7 示例程序D3Ddemo1.......................................................................... 317
11.5 深入理解Direct3D动画显示技术——交换链................................................... 319
11.6 对固定功能渲染流水线体系的理解................................................................. 321
11.7 Direct3D中的“绘制金钥匙”—— Direct3D设备接口..................................... 322
11.8 Direct3D中二维文本的绘制.......................................................................... 323
11.8.1 D3DXCreateFont函数........................................................................ 324
11.8.2 DrawText函数.................................................................................... 325
11.9 起承转合的艺术:Direct3D渲染五步曲.......................................................... 326
11.9.1 Direct3D渲染五步曲概述.................................................................... 326
11.9.2 五步曲之一:清屏操作........................................................................ 327
11.9.3 五步曲之二:开始绘制........................................................................ 329
11.9.4 五步曲之三:正式绘制........................................................................ 329
11.9.5 五步曲之四:结束绘制........................................................................ 330
11.9.6 五步曲之五:翻转显示........................................................................ 330
11.9.7 Direct3D渲染五步曲代码整体赏析....................................................... 331
11.9.8 示例程序D3Ddemo2.......................................................................... 331
11.10 章节小憩................................................................................................... 337
第12章 腾飞前的助跑——Direct3D 绘制基础............................................................. 338
12.1 顶点缓存的逆袭........................................................................................... 339
12.1.1 引言.................................................................................................. 339
12.1.2 顶点缓存相关基础知识........................................................................ 339
12.1.3 顶点缓存使用四步曲之一:设计顶点缓存.............................................. 340
12.1.4 顶点缓存使用四步曲之二:创建顶点缓存.............................................. 342
12.1.5 顶点缓存使用四步曲之三:访问顶点缓存.............................................. 345
12.1.6 顶点缓存使用四步曲之四:图形的绘制.................................................. 347
12.1.7 示例程序D3Ddemo3.......................................................................... 350
12.2 索引缓存——顶点缓存的红颜知己................................................................. 354
12.2.1 引言.................................................................................................. 354
12.2.2 索引缓存的使用思路............................................................................ 356
12.2.3 相濡以沫的顶点缓存与索引缓存........................................................... 357
12.2.4 双剑合璧:顶点缓存、索引缓存使用四步曲........................................... 359
12.2.5 示例程序D3Ddemo4.......................................................................... 367
12.3 章节小憩..................................................................................................... 371
第13章 迈向三维世界——Direct3D 的四大变换.......................................................... 372
13.1 四大变换的基本认知..................................................................................... 373
13.2 四大变换之一:世界变换.............................................................................. 373
13.2.1 矩阵的平移......................................................................................... 375
13.2.2 矩阵的旋转......................................................................................... 376
13.2.3 矩阵的缩放......................................................................................... 377
13.3 四大变换之二:取景变换.............................................................................. 378
13.4 四大变换之三:投影变换.............................................................................. 379
13.5 四大变换之四:视口变换.............................................................................. 381
13.6 总结............................................................................................................ 382
13.7 示例程序D3Ddemo5................................................................................... 382
13.8 章节小憩..................................................................................................... 389
第14章 绘制出质感的世界—光照与材质.................................................................. 390
14.1 引言............................................................................................................ 391
14.2 四大光照类型............................................................................................... 391
14.3 三大光源类型............................................................................................... 393
14.4 材质............................................................................................................ 398
14.5 关于顶点法线............................................................................................... 399
14.6 总结与升华.................................................................................................. 402
14.7 几何体的快捷绘制........................................................................................ 402
14.7.1 D3D中内置的几何体概述.................................................................... 402
14.7.2 D3D中几种内置的几何体绘制四步曲.................................................... 403
14.7.3 D3D中几种内置几何体的创建.............................................................. 404
14.8 示例程序D3Ddemo7................................................................................... 415
14.9 章节小憩..................................................................................................... 420
第15章 做游戏的主人——输出控制利器DirectInput.................................................... 421
15.1 引言............................................................................................................ 422
15.2 DirectInput接口概述.................................................................................... 422
15.3 DirectInput使用步骤详解.............................................................................. 424
15.3.1 头文件和库文件的包含........................................................................ 424
15.3.2 创建DirectInput接口和设备................................................................. 424
15.3.3 设置数据格式..................................................................................... 427
15.3.4 设置协作级别..................................................................................... 427
15.3.5 设置特殊属性..................................................................................... 428
15.3.6 获取和轮询设备.................................................................................. 429
15.3.7 读取设备信息..................................................................................... 429
15.4 精炼:DirectInput使用五步曲....................................................................... 431
15.5 DirectInput键盘按键键值总结....................................................................... 433
15.6 DirectInput鼠标按键键值总结....................................................................... 434
15.7 示例程序D3Ddemo8................................................................................... 435
15.8 手把手封装DirectInput到类中....................................................................... 440
15.9 封装好的DirectInput类的使用....................................................................... 444
15.10 示例程序D3Ddemo9.................................................................................. 445
15.11 章节小憩................................................................................................... 451
第16章 起舞不落幕——与纹理映射的华丽邂逅........................................................... 452
16.1 纹理映射的概念........................................................................................... 453
16.2 纹理映射使用四步曲..................................................................................... 454
16.3 总结与升华.................................................................................................. 459
16.4 示例程序D3Ddemo10.................................................................................. 461
16.5 四大纹理过滤方式精讲.................................................................................. 472
16.6 四大纹理寻址方式精讲.................................................................................. 477
16.7 纹理映射知识总结........................................................................................ 480
16.8 示例程序D3Ddemo11................................................................................. 483
16.9 章节小憩..................................................................................................... 489
第17章 他山之石可攻玉——三维游戏模型的载入........................................................ 490
17.1 网格模型技术的前生今世.............................................................................. 491
17.2 认识三维建模软件3DSMax和Maya............................................................. 491
17.3 对X文件的认识........................................................................................... 494
17.4 从3DSMax中导出X文件方法详解............................................................... 495
17.5 网格模型接口ID3DXMESH........................................................................... 498
17.6 文件模型载入三步曲..................................................................................... 500
17.6.1 三步曲之一:通过X文件加载网格模型................................................. 500
17.6.2 三步曲之二:载入材质和纹理............................................................... 501
17.6.3 三步曲之三:绘制网格模型.................................................................. 502
17.6.4 总结与升华......................................................................................... 504
17.7 示例程序D3demo12.................................................................................... 505
17.8 章节小憩..................................................................................................... 510
第18章 水乳交融的艺术——Alpha混合技术................................................................ 511
18.1 初识Alpha通道与混合技术........................................................................... 512
18.2 Direct3D中的融合套路——融合因子............................................................. 512
18.3 融合运算方式的取法..................................................................................... 513
18.4 融合因子的取法........................................................................................... 514
18.5 Alpha的三处来源......................................................................................... 515
18.6 Alpha融合使用三步曲.................................................................................. 517
18.7 示例程序D3Ddemo13.................................................................................. 518
18.8 章节小憩..................................................................................................... 521
第19章 横看成岭侧成峰——深度测试与Z缓存........................................................... 522
19.1 形象化理解深度测试..................................................................................... 523
19.2 深度测试相关概念讲解.................................................................................. 523
19.3 深度测试使用四步曲..................................................................................... 524
19.4 示例程序D3Ddemo14.................................................................................. 527
19.5 章节小憩..................................................................................................... 529
第20章 虚实结合的光影——模板技术......................................................................... 530
20.1 对模板技术中概念的理解.............................................................................. 531
20.1.1 模板缓存............................................................................................ 531
20.1.2 模板测试............................................................................................ 531
20.2 模板测试精细讲解........................................................................................ 532
20.2.1 创建模板缓冲区.................................................................................. 532
20.2.2 清除模板缓冲区.................................................................................. 533
20.2.3 模板测试相关参数介绍........................................................................ 534
20.2.4 对模板测试的一些理解........................................................................ 537
20.3 镜面特效的实现........................................................................................... 538
20.4 通过实例程序讲解........................................................................................ 539
20.5 示例程序D3Ddemo15.................................................................................. 543
20.6 章节小憩..................................................................................................... 548
第四篇 致用 · DirectX游戏编程应用
第21章 翱翔于三维空间——游戏摄像机的构建........................................................... 551
21.1 对摄像机的一些概述..................................................................................... 552
21.2 开始设计摄像机类........................................................................................ 552
21.3 关于向量计算的函数讲解.............................................................................. 555
21.4 计算取景变换矩阵........................................................................................ 557
21.5 类的其余实现细节........................................................................................ 560
21.6 示例程序D3Ddemo16.................................................................................. 566
21.7 章节小憩..................................................................................................... 574
第22章 钟灵毓秀的世界——三维地形的构建............................................................... 575
22.1 三维地形绘制思路分析.................................................................................. 576
22.2 关于高度图.................................................................................................. 577
22.2.1 高度图的概念..................................................................................... 577
22.2.2 高度图的制作..................................................................................... 578
22.2.3 用Photoshop制作高度图................................................................... 579
22.2.4 在程序中读取高度图............................................................................ 581
22.3 地形类轮廓的书写........................................................................................ 582
22.4 地形顶点的计算........................................................................................... 583
22.5 地形索引的计算........................................................................................... 585
22.6 渲染出地形.................................................................................................. 587
22.7 完成地形类的设计........................................................................................ 588
22.8 示例程序D3Ddemo17.................................................................................. 592
22.9 章节小憩..................................................................................................... 597
第23章 向碧蓝的苍穹致敬——三维天空的构建........................................................... 598
23.1 三维天空技术阐述........................................................................................ 599
23.2 天空盒的设计............................................................................................... 600
23.3 天空盒类的实现........................................................................................... 603
23.4 天空盒类的使用........................................................................................... 609
23.5 示例程序D3Ddemo18.................................................................................. 609
23.6 章节小憩..................................................................................................... 615
第24章 让唯美的雪花飘扬——三维粒子系统的实现.................................................... 616
24.1 对粒子系统的基本认知.................................................................................. 617
24.2 粒子系统的基本原理..................................................................................... 618
24.3 雪花粒子系统的设计..................................................................................... 620
24.4 雪花粒子系统的实现..................................................................................... 623
24.5 雪花飞扬粒子类的使用.................................................................................. 628
24.6 示例程序D3Ddemo19.................................................................................. 629
24.7 章节小憩..................................................................................................... 635
第25章 造物主的降临——多游戏模型的载入............................................................... 636
25.1 网格模型的优化........................................................................................... 637
25.2 网格模型的克隆........................................................................................... 639
25.3 文件模型载入类的设计.................................................................................. 640
25.4 文件模型载入类的实现.................................................................................. 641
25.5 文件模型载入类的使用.................................................................................. 645
25.6 示例程序D3Ddemo20.................................................................................. 646
25.7 章节小憩..................................................................................................... 652
第五篇 升华 · 致我们的游戏开发梦想
第26章 站在巨人肩膀上——游戏引擎技术导论........................................................... 655
26.1 游戏引擎的起源、意义和概念........................................................................ 656
26.1.1 游戏引擎的起源和意义........................................................................ 656
26.1.2 游戏引擎的概念理解............................................................................ 656
26.1.3 一款完善的游戏引擎的构成.................................................................. 657
26.1.4 DirectX与游戏引擎的区别................................................................... 657
26.2 人气开源游戏引擎介绍.................................................................................. 657
26.3 游戏引擎排名的权威榜单一瞥........................................................................ 659
26.4 优秀的免费/开源第一人称射击游戏介绍.......................................................... 661
26.5 关于游戏引擎的一些思考.............................................................................. 664
26.6 市面上各类游戏引擎完全列举........................................................................ 665
附录A 进阶游戏编程书籍总结与推荐............................................................................ 668
A.1 零基础游戏编程学习大体阶段概括................................................................... 669
A.2 Windows游戏编程入门书籍推荐..................................................................... 670
A.3 游戏编程进阶书籍推荐................................................................................... 670
A.3.1 DirectX入门........................................................................................ 670
A.3.2 地形方面............................................................................................. 671
A.3.3 物理方面............................................................................................. 671
A.3.4 数学方面............................................................................................. 672
A.3.5 引擎设计方面....................................................................................... 672
A.3.6 实时渲染方面....................................................................................... 673
A.3.7 图形学方面.......................................................................................... 673
A.3.8 AI方面................................................................................................ 673
A.3.9 网络方面............................................................................................. 674
A.3.10 系列书籍方面..................................................................................... 674
A.3.11 策划方面........................................................................................... 675
A.3.12 美工方面........................................................................................... 675
A.3.13 小说&电影......................................................................................... 675
A.3.14 其他.................................................................................................. 676
A.4 开源游戏源代码推荐...................................................................................... 676
后记 总有一天你将破蛹而出......................................................................................... 678
· · · · · ·