DirectX游戏编程基础教程
作者 : 王德才 等编著
出版日期 : 2010-09-25
ISBN : 978-7-111-31561-2
适用人群 : 数字媒体专业、动画学院等
定价 : 35.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 293
开本 : 16
原书名 : DirectX游戏编程基础
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书系统全面地介绍了DirectX编程的各个方面,全书共16章,内容涵盖了学习DirectX之前必需掌握的基础知识、DirectX与相关图形技术以及Windows系统本身的关系、Direct3D三维图形和动画开发、DirectX Audio音频开发、DirectInput输入处理以及DXUT程序框架等内容。此外,每章都提供了精心设计的示例程序和课后练习,以及相应的源代码和多媒体课件。
本书非常适合作为高等院校相关专业以及培训机构的教学用书。对于希望进入DirectX游戏开发领域的人员,本书是一本非常好的自学教材。对于希望了解新一代Windows操作系统(Windows Vista和Windows7)图形引擎、以及新一代图形界面开发技术(WPF)底层基础的开发人员,本书也是一本优秀的参考用书。

图书特色

DirectX编程不仅是游戏以及高性能多媒体应用开发人员所必需具备的技能,而且已经成为所有Windows开发人员需要了解的图形技术基础。本书以DirectX SDK(August 2009)和Visual Studio 2008为基础,全面介绍了DirectX开发的各个方面,内容全面、逻辑性强,精心设计了大量的示例程序和课后练习,提供了大量的提示和说明,可以很好地引导初学者入门。

主要内容
DirectX的技术背景、组成与功能、安装与配置。
学习DirectX所需的数学基础、Win32 API编程基础、COM使用基础。
Direct3D图形和动画编程,包括:基本图元绘制、顶点变换、光照、纹理映射、Alpha混合、雾化效果、模板测试、网格模型、粒子系统、虚拟场景漫游、着色器和效果等。
DirectX Audio音频编程,包括:DirectX Audio技术架构以及支持的音频格式、XACT、XAudio2开发等。
DirectInput输入处理与场景交互,包括:使用DirectInput处理键盘和鼠标,以及游戏杆输入、拾取的基本原理和实现等。
DXUT程序框架,包括:DXUT框架的组成和功能、使用DXUT框架绘制文本和控件等。

图书前言

DirectX最初是微软为了弥补Windows 3.1对图形、声音处理能力不足的缺陷,开发的一个附加工具包,主要用于在Windows平台上开发游戏。自从DirectX 1.0发布以来,DirectX的版本不断升级、功能逐渐完善,很快就成为对多媒体系统各个方面都有决定性影响的开发接口。目前DirectX主要由负责三维图形和动画开发的DirectX Graphics、负责音频开发的DirectX Audio以及支持各种输入设备的DirectX Input三部分组成,这三部分各自又包含众多功能组件。
  在DirectX的所有功能组件中,负责3D图形和动画开发的Direct3D是最重要、最复杂、也是更新最快的组件。随着Direct3D版本的不断升级,其功能也越来越强大,图形硬件对Direct3D的支持也越来越好。往往在新版本的Direct3D刚刚发布后,硬件厂商就会生产出支持最新版本Direct3D功能的显卡。
  现在DirectX已经不仅仅是一个用于游戏以及高性能多媒体应用程序开发的附加工具包,而是整体Windows系统的图形基础,成为Windows系统自身的重要组成部分。在最新的Windows Vista以及Windows 7操作系统中,使用Direct3D作为底层的图形引擎,而放弃了自从Windows 3.1以来一直使用的GDI/GDI+。甚至最新的图形界面开发技术WPF在底层也是基于Direct3D开发的,Direct3D也逐渐成为用户界面开发技术的底层基础。因此DirectX编程已经不仅仅是游戏以及高性能多媒体应用开发人员所必须具备的技能,而成为所有Windows开发人员需要了解的技术基础。
  本书主要面向首次接触DirectX的初级开发人员和在校师生。由于DirectX编程相对比较复杂,为了使本书能够成为一本适合DirectX开发入门的优秀图书,在本书的写作过程中,作者有意突出了以下特点。
  1. 内容系统全面、逻辑性强。由于DirectX本身比较复杂,而且需要各种相关基础知识,为了使读者的学习曲线尽可能平滑,一方面精心选择学习内容,另一方面确保各章内容循序渐进,使读者能够顺利进入DirectX开发领域。对于那些较高级的重点内容,以选读的形式给出,以方便读者依据个人情况选择学习内容。为了便于教学,还为教师免费提供配套的多媒体课件,教师可从华章网站(www.hzbook.com)下载。
  2. 精心设计大量的示例程序和课后练习。针对具体的开发技术,作者精心设计了相应的示例程序,并在源代码中给出了详细注释,一方面可以帮助读者加深理解,另一方面也便于读者进行扩展,逐步提高自身的开发水平。所有示例程序均可以从华章网站下载。此外,为了引导读者深入学习并加深对所学内容的理解,每章还提供了相应的课后练习。
  3. 提供大量的提示和说明。对于一些比较难理解和容易犯错的地方,作者结合多年的教学和开发经验,提供了相应的提示和说明。所以对于已经掌握了DirectX开发的人员,本书也具有一定的参考价值。
  本书内容涵盖DirectX开发的各个方面,重点在介绍DirectX开发技术本身,对于应用开发有所涉及但是还不够深入,如果将来准备专门从事大型游戏以及复杂可视化仿真系统的开发,还需要进一步阅读相关资料,不过阅读本书可以为后续深入学习奠定坚实的基础。对于准备使用DirectX进行简单的应用开发和希望了解Windows图形技术基础的开发人员,本书提供的内容就已经足够了。
  本书主要由王德才撰写。吴明飞、唐业军、胡强、余华鸿、孙牧、刘渊、戴君、刘玉达、姜晓佳、周晓敏、姜少孟等也参加了部分章节的撰写以及资料整理、图形绘制、校订等工作。最后还要感谢为本书出版付出辛勤劳动的华章编辑们。
  在本书编写过程中我们力求精益求精,力图为读者奉献一本优秀的书籍,使本书成为学习DirectX开发的优秀教材。但是由于作者水平有限,书中难免有不足之处,敬请读者批评指正。

作  者
2010年7月

上架指导

计算机\图形图像

封底文字

DirectX编程不仅是游戏以及高性能多媒体应用开发人员所必需具备的技能,而且已经成为所有Windows开发人员需要了解的图形技术基础。本书以DirectX SDK(August 2009)和Visual Studio 2008为基础,全面介绍了DirectX开发的各个方面,内容全面、逻辑性强,精心设计了大量的示例程序和课后练习,提供了大量的提示和说明,可以很好地引导初学者入门。
主要内容:
DirectX的技术背景、组成与功能、安装与配置。
学习DirectX所需的数学基础、Win32 API编程基础、COM使用基础。
Direct3D图形和动画编程,包括:基本图元绘制、顶点变换、光照、纹理映射、Alpha混合、雾化效果、模板测试、网格模型、粒子系统、虚拟场景漫游、着色器和效果等。
DirectX Audio音频编程,包括:DirectX Audio技术架构以及支持的音频格式、XACT、XAudio2开发等。
DirectInput输入处理与场景交互,包括:使用DirectInput处理键盘和鼠标,以及游戏杆输入、拾取的基本原理和实现等。
DXUT程序框架,包括:DXUT框架的组成和功能、使用DXUT框架绘制文本和控件等。
--------------------------------------------------------------------
本书示例代码可以从华章网站下载:www.hzbook.com。还为教师免费提供教辅。

图书目录

前言
教学建议

第1章  DirectX与游戏编程简介 1
1.1  DirectX介绍 1
*1.2  OpenGL、XNA与WPF 2
1.2.1  OpenGL 2
1.2.2  XNA 2
1.2.3  WPF 3
1.3  DirectX功能组件 4
1.3.1  DirectX Graphics 5
1.3.2  DirectX Audio 5
1.3.3  DirectX Input 6
1.3.4  其他组件 6
1.4  DirectX与游戏开发 7
1.5  DirectX安装与配置 7
1.5.1  系统配置要求 7
1.5.2  DirectX安装 8
1.5.3  选择调试库和发布库 8
1.5.4  在Visual Studio IDE中配置
DirectX 9
1.5.5  浏览DirectX SDK示例程序 10
1.6  小结 11
练习 12
第2章  预备知识 13
2.1  数学基础 13
2.1.1  向量 13
2.1.2  矩阵 15
2.1.3  平面 18
2.2  Win32 API编程基础 19
2.2.1  开发Win32 API程序的基本步骤 20
2.2.2  Win32 API程序解析 23
2.3  COM使用基础 28
2.3.1  COM对象概述 28
2.3.2  创建COM对象 30
2.3.3  使用COM接口 30
2.3.4  管理COM对象的生命期 31
2.4  小结 31
练习 32
第3章  Direct3D编程入门 33
3.1  Direct3D体系结构 33
3.1.1  硬件抽象层 33
3.1.2  软件参考层 33
3.1.3  Direct3D系统集成 34
3.2  Direct3D表面 34
3.2.1  IDirect3DSurface接口 35
3.2.2  宽度和间距 35
3.2.3  像素格式 35
3.2.4  交换链与表面翻转 35
3.3  Direct3D设备对象 36
3.3.1  Direct3D设备类型 36
3.3.2  顶点运算 37
3.3.3  创建Direct3D设备对象 37
3.3.4  设备丢失与恢复 41
3.4  最简单的Direct3D程序 41
3.4.1  程序基本结构 42
3.4.2  常用宏定义 42
3.4.3  初始化Direct3D 42
3.4.4  渲染图形 43
3.4.5  结束Direct3D程序 45
*3.5  Direct3D 9Ex扩展编程 45
3.5.1  WDDM和Direct3D 9Ex介绍 45
3.5.2  Direct3D 9Ex初始化 46
3.6  小结 47
练习 47
第4章  基本图元和文本绘制 48
4.1  Direct3D坐标系 48
4.2  Direct3D基本图元 48
4.3  Direct3D中的颜色表示 49
4.3.1  使用D3DCOLOR定义颜色 50
4.3.2  使用D3DCOLORVALUE定义
颜色 50
4.3.3  使用D3DXCOLOR定义颜色 50
4.4  使用顶点缓存绘制图形 51
4.4.1  顶点结构和顶点格式 51
4.4.2  内存池类型 52
4.4.3  创建顶点缓存 52
4.4.4  渲染顶点缓存图形 54
4.5  使用索引缓存绘制图形 55
4.5.1  创建顶点缓存和索引缓存 56
4.5.2  使用索引缓存绘制图形 57
4.6  二维文本绘制 58
4.6.1  创建ID3DXFont对象 58
4.6.2  使用ID3DXFont接口绘制二维
文本 59
4.6.3  帧速率计算 60
4.7  渲染状态 60
4.7.1  着色模式 61
4.7.2  多边形填充模式 61
*4.8  图形反锯齿 62
4.8.1  查询设备是否支持多重采样 62
4.8.2  创建使用多重采样的Direct3D
设备对象 62
4.8.3  启用多重采样 63
4.9  小结 63
练习 63
第5章  顶点坐标变换 64
5.1  顶点坐标变换和光照流水线概述 64
5.2  矩阵类型 65
5.2.1  D3DMATRIX 65
5.2.2  D3DXMATRIX 65
5.2.3  D3DXMATRIXA16 67
5.3  坐标变换 67
5.3.1  世界变换 67
5.3.2  观察变换 70
5.3.3  投影变换 71
5.3.4  视区变换 72
5.4  坐标变换示例程序 72
5.5  小结 74
练习 75
第6章  光照 76
6.1  光照计算模型 76
6.1.1  环境光 76
6.1.2  漫反射光 76
6.1.3  镜面反射光 77
6.1.4  自发光 77
6.2  光源 78
6.2.1  光源类型 78
6.2.2  光源属性 79
6.2.3  设置与启用光源 80
6.2.4  对光源的几点说明 81
6.3  材质 81
6.4  光照和材质示例程序 82
6.5  对光照和材质的几点说明 84
6.6  小结 84
练习 84
第7章  纹理映射 85
7.1  纹理元素与纹理坐标 85
7.2  创建纹理对象 85
7.3  纹理过滤方式 86
7.3.1  最近点采样 86
7.3.2  线性纹理过滤 86
7.3.3  各向异性纹理过滤 87
7.3.4  多级渐进纹理过滤 87
7.4  纹理寻址模式 88
7.4.1  重叠纹理寻址模式 89
7.4.2  镜像纹理寻址模式 89
7.4.3  夹取纹理寻址模式 90
7.4.4  边框颜色纹理寻址模式 90
7.5  纹理映射示例程序 91
7.6  纹理阶段混合状态 92
7.6.1  纹理阶段混合状态设置 92
7.6.2  纹理阶段混合状态示例程序 93
7.7  多层纹理映射 94
7.8  小结 96
练习 97
第8章  Direct3D渲染技巧 98
8.1  Alpha混合 98
8.1.1  Alpha混合原理 98
8.1.2  Alpha混合系数 99
8.1.3  Alpha混合示例 99
8.2  雾化效果 101
8.2.1  雾化效果实现原理 101
8.2.2  基于范围的雾化 102
8.2.3  雾化效果示例程序 103
8.2.4  对雾化效果的几点说明 104
*8.3  模板测试 104
8.3.1  模板测试过程 104
8.3.2  模板缓存 105
8.3.3  模板测试设置 106
8.3.4  平面阴影 107
8.4  小结 110
练习 110
第9章  网格模型 111
9.1  网格模型基础 111
9.1.1  几何信息 111
9.1.2  网格子集和属性缓存 112
9.1.3  邻接信息 113
9.1.4  绘制网格模型 113
9.1.5  克隆网格模型 114
9.1.6  创建网格模型 114
9.2  简单几何体和三维文本网格模型 115
9.2.1  创建简单几何体网格模型 115
9.2.2  创建三维文本网格模型 116
9.3  文件网格模型 117
9.3.1  模型文件格式 117
9.3.2  使用.X文件网格模型 118
9.3.3  对网格模型的几点说明 121
9.4  网格模型优化 122
9.4.1  优化函数和优化方式 122
9.4.2  属性表 123
9.4.3  其他网格模型处理函数 124
9.4.4  网格优化示例程序 125
9.5  文件网格模型类 126
9.5.1  CXFileMesh类的定义 126
9.5.2  CXFileMesh的实现 127
9.5.3  使用CXFileMesh类渲染文件
网格模型 129
9.6  物体空间状态的控制 130
*9.7  蒙皮骨骼动画网格模型 132
9.7.1  骨骼动画基本原理 133
9.7.2  图形混合技术 134
9.7.3  蒙皮骨骼动画网格模型类
介绍 136
9.8  小结 141
练习 141
第10章  点精灵与粒子系统 143
10.1  粒子系统基本原理 143
10.2  粒子和点精灵 144
10.2.1  点精灵顶点结构和顶点格式 144
10.2.2  点精灵的大小 144
10.2.3  点精灵的纹理坐标 145
10.2.4  点精灵的渲染 145
10.3  粒子系统的具体实现 146
10.3.1  粒子结构与顶点结构 146
10.3.2  粒子系统类的定义 146
10.3.3  粒子系统的创建和销毁 147
10.3.4  粒子系统的更新 148
10.3.5  粒子系统的渲染 150
10.3.6  粒子系统示例程序 152
10.4  雪景模拟 154
10.4.1  雪花粒子结构 154
10.4.2  雪花粒子运动的控制 154
10.4.3  渲染雪花粒子 155
10.5  小结 156
练习 156
第11章  基本虚拟场景构造 157
11.1  三维地形模拟 157
11.1.1  基本地形网格的构造 157
11.1.2  高度图与高程数据 161
11.1.3  地形上任意点高度的计算 162
11.1.4  法线的计算 163
11.1.5  地形模拟示例程序 164
11.2  天空绘制 165
11.2.1  矩形天空 165
11.2.2  天空盒 166
11.2.3  球形天空 167
11.3  虚拟摄像机与虚拟场景漫游 168
11.3.1  虚拟场景漫游基本原理 168
11.3.2  CCamera类 169
11.3.3  虚拟场景漫游的实现 172
11.4  小结 173
练习 174
第12章  HLSL高级着色语言 175
12.1  数据类型 175
12.1.1  标准数据类型 175
12.1.2  向量 176
12.1.3  矩阵 177
12.1.4  复杂数据类型 179
12.1.5  变量的前缀 181
12.2  运算符和语句 181
12.2.1  运算符 181
12.2.2  类型转换 182
12.2.3  语句 182
12.3  函数 183
12.3.1  自定义函数 183
12.3.2  内置函数 183
12.4  语义 183
12.5  编写HLSL着色器 185
12.5.1  添加文件 185
12.5.2  编写着色器代码 185
12.5.3  编译着色器代码 186
12.6  小结 187
练习 187
第13章  着色器和效果 188
13.1  顶点着色器 188
13.1.1  顶点着色器介绍 188
13.1.2  顶点声明 189
13.1.3  使用HLSL顶点着色器的基本
步骤 190
13.1.4  使用顶点着色器实现基本光
照模型 194
13.2  像素着色器 199
13.2.1  像素着色器介绍 199
13.2.2  使用像素着色器的基本步骤 199
13.2.3  使用像素着色器实现纯亮度
显示 202
13.3  效果 203
13.3.1  效果介绍 203
13.3.2  创建效果 203
13.3.3  使用效果 205
13.3.4  多手法效果 206
*13.3.5  使用效果管理状态 209
13.4  小结 212
练习 212
第14章  DirectX  Audio音频编程 214
14.1  DirectX Audio介绍 214
14.1.1  DirectX Audio技术架构 214
14.1.2  DirectX Audio支持的音频
格式 215
14.2  XACT 216
14.2.1  XACT介绍 216
14.2.2  使用XACT GUI制作声音 218
14.2.3  XACT初始化 219
14.2.4  使用XACT播放声音 221
14.2.5  使用XACT播放流声音 225
14.2.6  代码驱动的XACT API介绍 229
14.3  XAudio2 229
14.3.1  XAudio2介绍 229
14.3.2  XAudio2初始化 231
*14.3.3  使用XAudio2加载音频
数据 232
14.3.4  使用XAudio2播放声音 235
14.4  小结 237
练习 237
第15章  DirectInput与场景交互 239
15.1  DirectInput初始化 239
15.1.1  创建DirectInput对象 239
15.1.2  枚举输入设备 240
15.1.3  创建DirectInput设备对象 241
15.1.4  设置设备对象 241
15.1.5  获取输入设备的访问权 243
15.2  键盘输入处理 244
15.3  鼠标输入处理 246
15.4  游戏杆输入处理 249
*15.5  拾取 251
15.5.1  拾取射线的计算 252
15.5.2  拾取射线的变换 253
15.5.3  拾取射线与物体交点的计算 254
15.5.4  拾取示例程序 254
15.6  小结 255
练习 255
*第16章  DXUT程序框架 256
16.1  DXUT程序框架剖析 256
16.1.1  DXUT框架文件组成和功能 256
16.1.2  DXUT框架回调函数 257
16.2  使用DXUT框架 260
16.2.1  实现并设置回调函数 260
16.2.2  初始化DXUT 261
16.2.3  其他DXUT设置 261
16.2.4  创建窗口 262
16.2.5  创建Direct3D设备 262
16.3  使用DXUT绘制文本 263
16.4  使用DXUT控件 265
16.4.1  初始化对话框 265
16.4.2  渲染控件 266
16.4.3  处理控件事件 267
16.4.4  释放对话框 267
16.5  综合实例 268
16.5.1  生成程序框架 269
16.5.2  构造基本场景 269
16.5.3  添加背景音乐 271
16.5.4  添加输入处理 271
16.5.5  实现场景漫游 272
16.6  小结 273
练习 274
附录A  Direct3D 10与Direct3D 11介绍 275
参考文献 282

教学资源推荐
作者: 王柯柯 主编 崔英志 黄丽丰 崔贯勋 刘恒洋 编著
作者: 孙华志 主编 杨连贺 副主编 孙济洲 主审 孙华志 主编    杨连贺 副主编    孙济洲 主审
作者: 董洁 主编 李晓理 孙铁 王粉花 王丽君 编著
作者: 刘燕君 刘振安 张一叶 编著
参考读物推荐
作者: [芬兰] 卡伦?辛格(Karan Singh)著
作者: 华诚科技 编著
作者: (美)Ray Kurzweil 著
作者: 杜春洋 王宇超 等编著