DirectX游戏编程

DirectX游戏编程

冯人果, 编著

出版社:清华大学出版社

年代:2009

定价:35.0

书籍简介:

本书主要讲述Direct3D进行图形程序开发的核心技术,从三维向量开始,由浅入深,逐步讲解3D图形编程中的矩阵变换相关知识、投影知识,及视口处理、裁剪处理等。

书籍目录:

第1部分 必备的数学知识

第1章 基本的数学概念 3

1.1 三维空间中的向量 3

1.1.1 向量的相等 6

1.1.2 向量模的计算 7

1.1.3 向量归一化 8

1.1.4 向量加法 8

1.1.5 向量减法 9

1.1.6 数乘 10

1.1.7 点乘 10

1.1.8 叉乘 11

1.2 矩阵 12

1.2.1 矩阵的相等、矩阵数乘和矩阵加法 13

1.2.2 矩阵乘法 13

1.2.3 单位矩阵 15

1.2.4 逆矩阵 15

1.2.5 矩阵的转置 16

1.2.6 D3DX中的矩阵 16

1.2.7 基本变换 19

1.2.8 平移变换 20

1.2.9 旋转矩阵 21

1.2.10 缩放矩阵 23

1.2.11 组合变换 23

1.2.12 一些用于向量变换的函数 25

1.3 平面 25

1.3.1 D3DX中的平面 26

1.3.2 点和平面之间的关系 27

1.3.3 构建平面 27

1.3.4 标准化一个平面 28

1.3.5 对平面进行变换操作 29

1.3.6 求到一个指定点距离最短的平面上的点 29

1.4 射线 30

1.4.1 射线的表达式 30

1.4.2 射线与平面的相交 31

1.5 小结 31

第2部分 Direct3D基础知识

第2章 Direct3D初始化 35

2.1 Direct3D体系结构 35

2.1.1 REF设备 36

2.1.2 D3D设备类型 36

2.2 组件对象模型 37

2.3 预备知识 37

2.3.1 表面缓冲区(Surface) 37

2.3.2 重采样 39

2.3.3 像素格式 40

2.3.4 存储池 40

2.3.5 交换链和页面翻转 41

2.3.6 深度缓冲区 42

2.3.7 顶点处理 43

2.3.8 设备性能 43

2.4 初始化Direct3D 44

2.4.1 获得IDirect3D9接口 45

2.4.2 确认硬件顶点处理能力 45

2.4.3 填充D3DPRESENT_ PARAMETERS结构 46

2.4.4 创建一个IDirect3DDevice9接口 48

2.5 示例:初始化Direct3D 49

2.5.1 d3dUtility.h/cpp文件 50

2.5.2 程序框架 52

2.5.3 D3D初始化示例 52

2.6 小结 55

第3章 渲染管道 57

3.1 描述的模型 57

3.1.1 顶点格式 58

3.1.2 三角形 59

3.1.3 索引 60

3.2 虚拟摄像机 60

3.3 渲染管道 61

3.3.1 本地空间 62

3.3.2 世界空间 62

3.3.3 视图空间 63

3.3.4 背面裁剪 65

3.3.5 光照 66

3.3.6 裁剪 66

3.3.7 投影 67

3.3.8 视口变换 69

3.3.9 光栅化 70

3.4 小结 70

第4章 在Direct3D中绘制图形 71

4.1 顶点/索引缓冲区 71

4.1.1 创建顶点缓冲区和索引缓冲区 71

4.1.2 访问缓冲区内存 74

4.1.3 获得顶点缓冲区以及索引缓冲区的相关信息 75

4.2 渲染状态 76

4.3 渲染前的准备工作 77

4.4 使用顶点/索引缓冲区进行渲染 78

4.4.1 IDirect3DDevice9::DrawPrimitive 78

4.4.2 IDirect3DDevice9::DrawIndexedPrimitive 78

4.4.3 Begin/End Scene 80

4.5 D3DX自带的几何物体 80

4.6 示例:三角形、立方体、茶壶、D3DXCreate* 81

4.7 小结 85

第5章 颜色 87

5.1 颜色的描述方法 87

5.2 顶点颜色 90

5.3 着色处理 90

5.4 示例:带颜色的三角形 91

5.5 小结 93

第6章 光照 95

6.1 光的组成 95

6.2 材质 96

6.3 顶点法线 98

6.4 光源 100

6.5 示例:光照 104

6.6 其他例子 106

6.7 小结 107

第7章 纹理 109

7.1 纹理坐标 109

7.2 创建并应用纹理 111

7.3 纹理过滤 112

7.4 多纹理映射 113

7.4.1 多纹理映射过滤 113

7.4.2 在Direct3D中使用多纹理映射 114

7.5 纹理坐标寻址模式 114

7.6 程序示例:带纹理的四边形 116

7.7 小结 118

第8章 混合技术 119

8.1 混合方程 119

8.2 混合因子 121

8.3 透明 121

8.3.1 Alpha通道 122

8.3.2 指定源像素的Alpha值 122

8.4 用DirectX的纹理工具创建Alpha通道 123

8.5 示例:透明效果 124

8.6 小结 127

第9章 模板缓冲区 129

9.1 使用模板缓冲区 130

9.1.1 获取模板缓冲区 131

8.1.2 模板测试 131

9.1.3 模板测试的控制 131

9.1.4 更新模板缓冲区 133

9.1.5 模板写入掩码 134

9.2 示例:镜子 134

9.2.1 镜面反射的相关数学知识 134

9.2.2 镜面效果的实现概述 136

9.2.3 代码和解释 137

9.3 示例:平面阴影 140

9.3.1 平行光阴影 141

9.3.2 点光源阴影 142

9.3.3 阴影矩阵 142

9.3.4 用模板缓冲区来防止二次混合 143

9.3.5 代码和解释 144

9.4 小结 146

第3部分 Direct3D的应用

第10章 文字处理 149

10.1 ID3DXFont、ID3DXFont接口 149

10.1.1 创建一个ID3DXFont接口 149

10.1.2 文字输出 150

10.1.3 计算帧速(FPS) 151

10.2 CD3DFont、CD3DFont类 152

10.2.1 构造CD3DFont对象 152

10.2.2 DrawText输出文字 153

10.2.3 销毁CD3DFont对象 153

10.3 三维网格(3D Mesh)在文字显示中的应用 154

10.3.1 D3DXCreateText方法 154

10.4 小结 155

第11章 网格(1) 157

11.1 几何信息 157

11.2 网格子集(Subset)和属性缓冲区 158

11.3 网格的渲染 160

11.4 网格优化 160

11.5 网格属性表 162

11.6 邻接信息 164

11.7 网格的克隆(Cloning) 165

11.8 网格的创建 (D3DXCreateMeshFVF) 166

11.9 示例:创建并渲染一个网格 168

11.10 小结 173

第12章 网格(2) 175

12.1 ID3DXBuffer接口 175

12.2 .X文件 176

12.2.1 读取.X文件 177

12.2.2 X文件中的材质 178

12.2.3 X文件实例 178

12.2.4 生成顶点法线 181

12.3 渐进式网格 182

12.3.1 生成渐进式网格 183

12.3.2 顶点属性权重 184

12.3.3 ID3DXPMesh接口的相关方法 185

12.3.4 示例:渐进式网格 186

12.4 包围体 189

12.4.1 新的常量 191

12.4.2 各种不同的包围体 191

12.4.3 包围体示例 192

12.5 小结 194

第13章 构建一个灵活的摄像机类 195

13.1 设计摄像机 195

13.2 摄像机类的实现细节 197

13.2.1 计算视图矩阵 197

13.2.2 绕任意轴的旋转 200

13.2.3 俯仰、偏转和翻滚 200

13.2.4 行走、平移和飞行 203

13.3 示例:摄像机 204

13.4 小结 206

第14章 基本地形渲染 207

14.1 高度图 208

14.1.1 高度图的创建 208

14.1.2 读取RAW文件 209

14.1.3 高度图的访问和修改 210

14.2 生成地形几何数据 210

14.2.1 计算顶点 212

14.2.2 计算索引——定义三角形 214

14.3 纹理 216

14.3.1 用程序生成纹理数据 216

14.4 光照 218

14.4.1 概述 219

14.4.2 计算方格的阴影 219

14.4.3 计算地形阴影 221

14.5 在地形上“行走” 221

14.6 Terrain示例程序 225

14.7 一些改进措施 226

14.8 小结 227

第15章 粒子系统 229

15.1 粒子和点精灵 229

15.1.1 结构格式 230

15.1.2 Point Sprite渲染状态 230

15.1.3 粒子及其属性 232

15.2 粒子系统组件 233

15.2.1 粒子系统的渲染 238

15.2.2 粒子的随机性 241

15.3 实现三个具体的粒子系统:雪景、焰火和粒子枪 242

15.3.1 示例:雪景 242

15.3.2 示例:焰火 244

15.3.3 示例:粒子枪 246

15.4 小结 248

第16章 捡取 249

16.1 屏幕到投影窗口的变换 251

16.2 计算Picking射线 252

16.3 变换射线 253

16.4 射线与物体的相交检测 254

16.5 示例:Picking 256

16.6 小结 257

第4部分 Shader和特效

第17章 高级Shader语言的介绍 261

17.1 使用HLSL编写Shader程序 262

17.1.1 全局变量 263

17.1.2 输入输出结构 264

17.1.3 入口点函数 265

17.2 编译一个HLSL Shader程序 266

17.2.1 常量表 266

17.2.2 编译HLSL Shader程序 270

17.3 变量类型 272

17.3.1 标量类型 272

17.3.2 向量类型 272

17.3.3 矩阵类型 273

17.3.4 数组 275

17.3.5 结构 275

17.3.6 typedef关键字 276

17.3.7 变量前缀 276

17.4 关键字、语句和类型转换 277

17.4.1 关键字 277

17.4.2 基本的程序流程 277

17.4.3 类型转换 278

17.5 运算符 279

17.6 用户自定义函数 280

17.7 内建函数 282

17.8 小结 284

第18章 Vertex Shader的介绍 285

18.1 顶点声明(Vertex Declaration) 286

18.1.1 顶点声明的描述 286

18.1.2 创建顶点声明 289

18.1.3 启用一个顶点声明 289

18.2 顶点数据的用途 290

18.3 使用Vertex Shader的步骤 292

18.3.1 编写与编译 Vertex Shader 292

18.3.2 创建Vertex Shader 292

18.3.3 设置Vertex Shader 293

18.3.4 销毁Vertex Shader 293

18.4 示例:散射光 293

18.5 示例:卡通渲染 (Cartoon Rendering) 299

18.5.1 卡通着色 (Cartoon Shading) 300

18.5.2 卡通着色的Vertex Shader 代码 301

18.5.3 勾画出物体的轮廓 303

18.6 小结 308

第19章 Pixel Shader入门 309

19.1 多重纹理概述 309

19.1.1 启用多重纹理 311

19.1.2 多重纹理坐标 312

19.2 Pixel Shader的输入和输出 313

19.3 使用Pixel Shader的步骤 314

19.3.1 编写并编译Pixel Shader 程序 314

19.3.2 创建一个Pixel Shader 314

19.3.3 设置一个Pixel Shader 315

19.3.4 销毁一个Pixel Shader 315

19.4 HLSL取样对象 315

19.5 示例:通过Pixel Shader实现 多重纹理 317

19.6 小结 324

第20章 特效框架 (Effects Framework) 325

20.1 Technique与Pass 326

20.2 更多的HLSL内建对象 327

20.2.1 texture对象 327

20.2.2 取样器(sampler)对象和取样器状态 328

20.2.3 Vertex Shader对象和Pixel Shader对象 328

20.2.4 字符串(string) 329

20.2.5 注解(Annotations) 330

20.3 特效文件中的设备状态 330

20.4 创建一个特效 331

20.5 设置常量 333

20.6 使用特效 335

20.6.1 获得特效句柄 335

20.6.2 激活特效 336

20.6.3 启用特效 336

20.6.4 设置当前的渲染Pass 337

20.6.5 关闭特效 337

20.6.6 示例 337

20.7 示例:通过特效文件实现光照效果和纹理贴图 338

20.8 示例:雾化效果 343

20.9 示例:卡通效果 345

20.10 特效编辑器(EffectEdit) 347

20.11 小结 347

附录A Windows程序设计简介 349

A.1 概述 349

A.1.1 资源 350

A.1.2 事件、消息队列、消息和

消息循环 350

A.1.3 图形用户接口(GUI) 351

A.2 简单的Windows应用程序 352

A.3 一个更好的消息循环 364

A.4 小结 365

参考文献 366

内容摘要:

本书主要讲述了利用Direct3D进行图形程序开发的核心技术,从三维向量开始,由浅入深,逐步讲解3D图形编程中的矩阵变换相关知识、投影知识,及视口处理、裁剪处理、深度缓存的应用技术。在高级绘图技术中进一步讲解纹理处理、透明及混合技术的应用、模板的应用、光照及阴影技术、网格的应用、利用网格技术处理模型显示、在Direct3D程序中显示文字、粒子系统的创建及应用。书的后半部分讲解游戏设计的高级特性,如摄像机封装技术、地形显示技术、场景中的模型捡取。最后讲解GPU编程相关的知识,让用户了解高级着色的相关内容。本书每章都以简单的实例来辅助对知识点的讲解,力求深入浅出,知识由浅入深,难度是逐渐递增的,另外本书的章节之间没有过分紧密的程序连接,所以有一定基础的人员,可以选择需要的章节单独阅读。本书面向的群体为高校数字媒体艺术程序设计专业的学生,及自考学生,或有一定编程基础的专业图形编程人员。

编辑推荐:

本教材是网络游戏编程的专业课程。《DirectX游戏编程》以游戏开发中的图形技术为主线,着重介绍如何使用DirectX9.0开发交互式3D图形程序。通过对DirectX的基本概念和使用的详细描述,帮助学习者掌握游戏开发界高级三维图形技术,为成为优秀游戏图形工程师打好基础。
第九艺术学院丛书作为RGDC游戏开发课程体系配套教材,由递归教育组织力量,集国内外游戏业内精英人才打造而成。全套丛书共包括:游戏开发基础、游戏美术设计、游戏程序开发3个部分。
游戏开发核心技术
深度剖析计算机图形API
游戏开发真体验
中国文化创意产业技术创新联盟
中国电影电视技术学会数字特效与三维
动画专业委员会
中国系统仿真学会数字娱乐专业委员会推荐教材

书籍规格:

书籍详细信息
书名DirectX游戏编程站内查询相似图书
丛书名第九艺术学院
9787302215936
如需购买下载《DirectX游戏编程》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN
出版地北京出版单位清华大学出版社
版次1版印次1
定价(元)35.0语种简体中文
尺寸23 × 19装帧平装
页数 383 印数

书籍信息归属:

DirectX游戏编程是清华大学出版社于2009.出版的中图分类号为 G899 ,TP311.56 的主题关于 游戏-应用程序-程序设计-高等学校-教材 ,多媒体-软件工具,DirectX-高等学校-教材 的书籍。