逐梦旅程:Windows游戏编程之从零开始

0
(0)

逐梦旅程:Windows游戏编程之从零开始

作者:毛星云

出版社:清华大学出版社

出版年:2013-9-16

页数:679

定价:98.00元

装帧:平装

ISBN:9787302337508

内容简介
······

端游开发是目前最热的职业,报酬丰厚且能实现自己的游戏梦想。作者历经一年时间,编写了这本详细讲解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游戏编程之从零开始)》编著者毛星云。

网络昵称“浅墨”,90后,热爱游戏编程的家伙,有点倔的伪IT文艺青年。因为在CSDN上开设《Visual C++游戏开发》博客专栏而被网友熟知。本科毕业于乌克兰国立航空航天大学和南京航空航天大学,目前在南京航空航天大学读研究生。

2012年CSDN年度博客之星。

2013年度十大杰出IT博客。

作者“浅墨“的博客:http://blog.csdn.net/poem_qianmo

目录
······

序 篇 逐梦·游戏开发梦想的重量

第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

"逐梦旅程:Windows游戏编程之从零开始"试读
······

第6章
光与影的交汇——Windows游戏动画技术
对于那些已经不在的人们,就算只是偶尔也好,请想起他们的事。
——《最终幻想10》
章节导读
从本章开始,我们将开始学习2D游戏动画技术了。
在2D游戏中,播放动画的方式一般有两种,第一种是直接播放影片文件(比如AVI、RMVB等等影片格式),这常常用在游戏的开头动画、过场动画与结局动画中。另一种则是在游戏中利用连续贴图的方式,..

  • 第6章 光与影的交汇——Windows游戏动画技术

评论 ······

好书一本~支持浅墨大神!!

情怀作,没必要因为“简单易学”、“说不定以后要用”而花时间学GDI,从零入门DX9还是可以的。各种没版权的资源,还有所谓的文艺,不喜欢。

致我们永不熄灭的游戏开发梦想

代码里有很多瑕疵,虽然不影响程序功能

点击星号评分!

平均分 0 / 5. 投票数: 0

还没有投票!请为他投一票。

推荐阅读

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册