DirectX 9.0 3D游戏开发编程基础

当前位置:首页 > 教材 > 研究生/本专科 > DirectX 9.0 3D游戏开发编程基础

出版社:清华大学
出版日期:2007-4
ISBN:9787302130253
作者:Frank D.luna
页数:373页

作者简介

《DirectX 9.0 3D游戏开发编程基础》主要介绍如何使用DirectX 9.0开发交互式3D图形程序,重点是游戏开发。全书首先介绍了必要的数学工具,然后讲解了相关的3D概念。其他主题几乎涵盖了Direct3D中的所有基本运算,例如图元的绘制、光照、纹理、Alpha融合、模板,以及如何使用Direct3D实现游戏中所需的技术。介绍顶定点着色器和像素着色器的章节(包含了效果框架和新的高级着色语言的内容)对这些关键运算进行了较为集中的讨论。

书籍目录

目录
第Ⅰ部分 基础知识
必备的数学知识 3
3D空间中的向量 3
向量相等 7
计算向量的长度 7
向量的规范化 8
向量加法 9
向量减法 9
数乘 10
点积 11
叉积 11
矩阵 12
矩阵相等、矩阵数乘和矩阵加法 13
矩阵乘法 14
单位矩阵 15
逆矩阵 15
矩阵的转置 16
D3DX矩阵 16
基本变换 19
平移矩阵 20
旋转矩阵 21
比例变换矩阵 23
几何变换的组合 24
向量变换的一些函数 25
平面(选读) 26
D3DXPLANE 27
点和平面的空间关系 27
平面的创建 28
平面的规范化 29
平面的变换 29
平面中到某一点的最近点 30
射线(选读) 31
射线 31
射线与平面的相交 32
小结 32
第Ⅱ部分 Direct3D基础
第1章 初始化Direct3D 37
1.1 Direct3D概述 37
1.1.1 REF设备 38
1.1.2 D3DDEVTYPE 38
1.2 COM(组件对象模型) 38
1.3 预备知识 39
1.3.1 表面 39
1.3.2 多重采样 41
1.3.3 像素格式 42
1.3.4 内存池 42
1.3.5 交换链和页面置换 43
1.3.6 深度缓存 44
1.3.7 顶点运算 45
1.3.8 设备性能 45
1.4 Direct3D的初始化 46
1.4.1 获取接口IDirect3D9的指针 47
1.4.2 校验硬件顶点运算 47
1.4.3 填充D3DPRESENT_PARAMETER结构 48
1.4.4 创建IDirect3DDevice9接口 50
1.5 例程:Direct3D的初始化 51
1.5.1 d3dUtility.h/cpp 52
1.5.2 例程框架 53
1.5.3 例程:D3D初始化 54
1.6 小结 56
第2章 绘制流水线 58
2.1 模型表示 59
2.1.1 顶点格式 60
2.1.2 三角形单元 60
2.1.3 索引 61
2.2 虚拟摄像机 62
2.3 绘制流水线 63
2.3.1 局部坐标系 64
2.3.2 世界坐标系 64
2.3.3 观察坐标系 65
2.3.4 背面消隐 67
2.3.5 光照 68
2.3.6 裁剪 68
2.3.7 投影 69
2.3.8 视口变换 70
2.3.9 光栅化 72
2.4 小结 72
第3章 Direct3D中的绘制 73
3.1 顶点缓存与索引缓存 73
3.1.1 创建顶点缓存和索引缓存 73
3.1.2 访问缓存内容 76
3.1.3 获取顶点缓存和索引缓存的信息 77
3.2 绘制状态 78
3.3 绘制的准备工作 78
3.4 使用顶点缓存和索引缓存进行绘制 79
3.4.1 IDirect3DDevice9::DrawPrimitive 79
3.4.2 IDirect3DDevice9::DrawIndexedPrimitive 80
3.4.3 Begin/End Scene 81
3.5 D3DX几何体 81
3.6 例程:三角形、立方体、茶壶、D3DXCreate* 83
3.7 小结 87
第4章 颜色 89
4.1 颜色表示 89
4.2 顶点颜色 92
4.3 着色 92
4.4 例程:具有颜色的三角形 93
4.5 小结 95
第5章 光照 97
5.1 光照的组成 97
5.2 材质 98
5.3 顶点法线 100
5.4 光源 102
5.5 例程:光照 105
5.6 一些附加例程 108
5.7 小结 108
第6章 纹理映射 109
6.1 纹理坐标 110
6.2 创建并启用纹理 111
6.3 纹理过滤器 112
6.4 多级渐进纹理 113
6.4.1 多级渐进纹理过滤器 114
6.4.2 使用多级渐进纹理 114
6.5 寻址模式 114
6.6 例程:纹理四边形 116
6.7 小结 118
第7章 融合技术 119
7.1 融合方程 119
7.2 融合因子 121
7.3 透明度 122
7.3.1 Alpha通道 122
7.3.2 指定Alpha来源 123
7.4 用DirectX Texture Tool创建Alpha通道 123
7.5 例程:透明效果 125
7.6 小结 127
第8章 模板 128
8.1 模板缓存的使用 129
8.1.1 模板缓存格式的查询 129
8.1.2 模板测试 130
8.1.3 模板测试的控制 130
8.1.4 模板缓存的更新 132
8.1.5 模板写掩码 132
8.2 例程:镜面效果 133
8.2.1 成像中的数学问题 133
8.2.2 镜面效果实现概述 134
8.2.3 代码解析 135
8.3 例程:Planer Shadows 139
8.3.1 平行光阴影 139
8.3.2 点光源产生的阴影 140
8.3.3 阴影矩阵 141
8.3.4 使用模板缓存防止二次融合 142
8.3.5 代码解析 143
8.4 小结 144
第Ⅲ部分 Direct3D的应用
第9章 字体 149
9.1 ID3DXFont接口 149
9.1.1 创建一个ID3DXFont接口对象 149
9.1.2 绘制文本 150
9.1.3 计算每秒绘制的帧数 151
9.2 CD3DFont 152
9.2.1 创建CD3DFont类的实例 152
9.2.2 绘制文本 152
9.2.3 清理 153
9.3 D3DXCreateText函数 153
9.4 小结 155
第10章 网格(一) 156
10.1 几何信息 156
10.2 子集和属性缓存 157
10.3 绘制 159
10.4 网格优化 159
10.5 属性表 161
10.6 邻接信息 163
10.7 克隆 164
10.8 创建网格(D3DXCreateMeshFVF) 165
10.9 例程:网格的创建与绘制 167
10.10 小结 172
第11章 网格(二) 174
11.1 ID3DXBuffer 174
11.2 XFile 175
11.2.1 加载XFile文件 175
11.2.2 XFile材质 176
11.2.3 例程:XFile 177
11.2.4 生成顶点法线 180
11.3 渐进网格 181
11.3.1 生成渐进网格 182
11.3.2 顶点属性权值 183
11.3.3 ID3DXPMesh接口方法 183
11.3.4 例程:Progressive Mesh 184
11.4 外接体 187
11.4.1 一些新的特殊常量 189
11.4.2 外接体的类型 189
11.4.3 例程:Bounding Volumes 190
11.5 小结 192
第12章 设计一个灵活的Camera类 193
12.1 Camera类的设计 193
12.2 实现细节 195
12.2.1 观察矩阵(取景变换矩阵,View Matrix)的计算 195
12.2.2 绕任意轴的旋转 198
12.2.3 俯仰、偏航和滚动 199
12.2.4 行走、扫视和升降 201
12.3 例程:Camera 202
12.4 小结 205
第13章 地形绘制基础 206
13.1 高度图 207
13.1.1 创建高度图 207
13.1.2 加载RAW文件 208
13.1.3 访问和修改高度图 209
13.2 创建地形几何信息 210
13.2.1 顶点的计算 212
13.2.2 索引的计算 214
13.3 纹理映射 216
13.4 光照 219
13.4.1 概述 219
13.4.2 坐标方格的明暗度计算 220
13.4.3 对地形进行着色 222
13.5 在地形中“行走” 222
13.6 例程:Terrain 226
13.7 一些改进 228
13.8 小结 229
第14章 粒子系统 230
14.1 粒子和点精灵 230
14.1.1 结构格式 230
14.1.2 点精灵的绘制状态 231
14.1.3 粒子及其属性 233
14.2 粒子系统的组成 234
14.2.1 绘制一个粒子系统 238
14.2.2 随机性 243
14.3 具体的粒子系统 243
14.3.1 例程:Snow System 244
14.3.2 例程:Firework 246
14.3.3 例程:Particle Gun 248
14.4 小结 250
第15章 拾取 251
15.1 屏幕到投影窗口的变换 253
15.2 拾取射线的计算 254
15.3 对射线进行变换 255
15.4 射线/物体相交判定 256
15.5 例程:Picking 258
15.6 小结 259
第Ⅳ部分 着色器和效果
第16章 高级着色语言(HLSL)入门 263
16.1 HLSL着色器程序的编制 264
16.1.1 全局变量 266
16.1.2 输入和输出结构 266
16.1.3 入口函数 267
16.2 HLSL着色器程序的编译 268
16.2.1 常量表 268
16.2.2 HLSL着色器程序的编译 272
16.3 变量类型 274
16.3.1 标量类型 274
16.3.2 向量类型 274
16.3.3 矩阵类型 275
16.3.4 数组 277
16.3.5 结构体 277
16.3.6 关键字typedef 277
16.3.7 变量的前缀 278
16.4 关键字、语句及类型转换 279
16.4.1 关键字 279
16.4.2 基本程序流程 279
16.4.3 类型转换 280
16.5 运算符 281
16.6 用户自定义函数 282
16.7 内置函数 284
16.8 小结 286
第17章 顶点着色器入门 287
17.1 顶点声明 288
17.1.1 顶点声明的描述 288
17.1.2 顶点声明的创建 291
17.1.3 顶点声明的启用 291
17.2 顶点数据的使用 291
17.3 使用顶点着色器的步骤 293
17.3.1 顶点着色器的编写与编译 294
17.3.2 顶点着色器的创建 294
17.3.3 顶点着色器的设置 294
17.3.4 顶点着色器的销毁 295
17.4 例程:Diffuse Lighting 295
17.5 例程:Cartoon Rendering 302
17.5.1 卡通着色 303
17.5.2 卡通着色的顶点着色器代码 304
17.5.3 轮廓的勾勒 307
17.5.4 实现轮廓勾勒的顶点着色器代码 310
17.6 小结 312
第18章 像素着色器入门 313
18.1 多重纹理概述 313
18.1.1 启用多重纹理 315
18.1.2 多重纹理坐标 316
18.2 像素着色器的输入和输出 317
18.3 使用像素着色器的步骤 318
18.3.1 像素着色器的编写和编译 318
18.3.2 像素着色器的创建 318
18.3.3 像素着色器的设置 319
18.3.4 像素着色器的销毁 319
18.4 HLSL采样器对象 319
18.5 例程:像素着色器中的多重纹理 321
18.6 小结 329
第19章 效果框架 331
19.1 手法与路径 331
19.2 更多HLSL的内置对象 333
19.2.1 纹理对象 333
19.2.2 采样器对象与采样器状态 333
19.2.3 顶点着色器对象和像素着色器对象 334
19.2.4 字符串 335
19.2.5 注释 335
19.3 效果文件中的设备状态 336
19.4 创建一种效果 337
19.5 常量的设置 338
19.6 使用一种效果 340
19.6.1 效果句柄的获取 341
19.6.2 效果的激活 341
19.6.3 效果的启用 341
19.6.4 当前绘制路径的设置 342
19.6.5 效果的终止 342
19.6.6 一个例子 342
19.7 例程:效果文件中的光照和纹理 343
19.8 例程:雾效 349
19.9 例程:卡通效果 352
19.10 EffectEdit 353
19.11 小结 354
附录 Windows编程入门 355
参考文献 372

内容概要

Prank Luna是Hero
lnteractive的程序员,从事交互式3D图形编程已有八年多。他最早接触DirectX可以追溯到DirectX5发布之时,目前居住在加州的洛杉矶市。

图书封面


 DirectX 9.0 3D游戏开发编程基础下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计10条)

  •     D3D编程,想明白数学原理,读Andrew Lamothe的书;想明白D3D的API与实现方式,读这本书。
  •     个人认为这是目前国内引进的最好的一本介绍 DirectX 9 的书。各种概念讲解得非常清晰,尤其是其C++的用法非常地道(应该是我看过的第一本真正用“C++的方式”来写C++的同类书籍)。原书在国外的评价也很高,这次中文版由清华引进,“令人意外的”翻译得也很不错。推荐!
  •     作者Frank维护的该书相关资源的网站地址更新了http://www.d3dcoder.netThis is the supplement website for the books:Introduction to 3D Game Programming with DirectX 9.0Introduction to 3D Game Programming with DirectX 9.0c: A Shader ApproachIntroduction to 3D Game Programming with Direct3D 10.0

精彩短评 (总计101条)

  •     重点阅读对象,入门好书~从它开始正式打开D3D的大门。。
  •     书很不错,我是看这本入门的。作者的代码写得很棒。还有个shader版本,更深入点。
  •     2008.08.01---2009.06.20
  •     学习directx基础的经典教程
  •     这本书讲得很好,如果你需要学习DirectX,这本书讲得绝对实用易懂
  •     就是内容简单单薄了,入门还可以
  •     2012-04-25
  •     对基础知识讲得很透彻
  •     2014初读过一遍,现在2015年初了。。。
  •     非常好的direct3d入门教程,内容相对现在有些旧,但不失为之前的经典教程。学完后可以快速上手游戏开发,有一定的实践指导价值。
  •     入门不错,了解一下基本思想。就技术内容而言DX9基本已经过时了
  •     在DX游戏编程上很出名的书籍,读了很有收获
  •     过时的产物
  •     封面很帅。。内容更帅!!
  •     太入门级了,没能系统的降解D9的内容,只能作为初步了解Directx的工具吧,目前书本相关的网站已经关闭了,所以源码难找。
    但,终究还是好书吧,不妨一读的。
  •     这本书比较不错
  •     关于3D方面基础类的书,很全面。很有参考价值,如果指望看完就会写游戏还是不可能。
  •     DirectX 9.0D游戏开发编程基础
  •     还行
  •     准备自学3d开发这本书应该可以入门了
  •     选修课教材,对于三维编程很有帮助,不过翻译怪怪的
  •     很好的一本书,个人学习经历是先写soft renderer,这时候看本书就会不迷茫硬件到底做了什么
  •     我还看不懂,数学基础部分还行,C++还没搞定。
  •     当年靠这个入门 怀念下
  •     书里的内容从游戏开发所涉及到的3D基础讲起,很适合初学者阅读
  •     不错的一本书,市面上介绍d3d的书好像不错,挺
  •     这本书不应该有这么高的分,随大流4分吧。
  •     一本不错的初级入门DX游戏开发书籍
  •     这是一本由外文翻译过来的书,看原文眼睛疼。这本书不错,据说是红宝书。
    没法子,谁让游戏编程书这么少呢。
  •     之前看过几本OpenGL的书,回头再看看D3D。觉得D3D确实是比较复杂。不过这本书对D3D9技术,讲解的很易懂。作为D3D的入门书,值得一看。
  •     看了一点而已。。。
  •     没有传说中那么经典
  •     错误不少啊.....最起码的代码排版都有问题,看着不爽
  •     对于这本书我是完全的自学的,在没有学习过图形学的条件下,自己慢慢摸索,经过反复的debug,实现了书上示例的代码,过程十分辛苦不要紧,收获当然颇大,就是自己的学习周期太长了,有时会有一种离游戏编程原来越远的感觉。个人建议再来一本direct3D的书籍同时对照阅读,多找小伙伴和大牛交流,上网查阅资料。
  •     DirectX 的引路人,以后积累更多了写个详细评价吧。
  •     推荐,不因为多经典,只是那个时候稍微靠谱点的介绍dx的书少
  •     我觉得是一本非常好的入门书!
  •     粗略的看了一下,写得非常好.比我以往看过的任何一本国产游戏书都要好.
  •     书的内容挺好的,正用着
  •     哈哈,终于在号称游戏编程的书上看到我最爱的C++代码了。
  •     龙书。没怎么看,但入门还不错
  •     正在读着呢,听说不错。。。
  •     最近关注客户端相关的东西,非常适合入门
  •     必看的游戏编程经典。
  •     不错。。。算了解了吧,作者还写了d9c。d10.d11三本书。。。基础
  •     讲解浅显易懂,适合初学者,我看了一半了,写的非常好!!!
  •     书写的很不错。内容写得深入浅出,很容易理解,且能举一反三。
    这本书不算厚,但估计要全吃透就需要自己查找一摞参考资料了。
    呵呵,很适合初学者来学习。
  •     有3d数学和c++基础的情况下,还是比较容易明白的,内容不涉及高级技术,但确实有必要一看。很幸运的是: 我看完了,很不幸的是:我没看懂。。。
  •     再也不想碰计算机图形学了
  •     名词解释
  •     书挺不错,很基础。看完后对图形引擎会有初步的概念
  •     要不是这本书,我的大研都无法开始了。翻译得挺好,而且思路清晰,随书例子也相当实用。(Jim Adams 的《DirectX高级动画制作》也不错,当然它是高级应用的,可惜的是它被翻译得一塌糊涂,强烈推荐它的英文版《[Advanced Animation with DirectX][EN]》;他还有一本书叫《DirectX角色扮演游戏编程》,这应该是入门好书了,尚未拜读,但从《DirectX高级动画制作》一书可以看出,它应该也不赖的)
  •     入门必读
  •     这一本书我学习directx的入门书籍,非常适合初学者,相信大家读完一定会非常有帮助的!
  •     d3d...肯跌啊...应该直接看dx sdk document
  •     讲解通俗易懂,内容也很实用,同时还能多少了解些内部原理,让人难以释卷。一口气看了5个小时!
  •     内容很详细,适合初学,挺好
  •     这本书的作者非常负责,内容丰富,生动,并且把学习过程中出现的小问题也提出并提供解决办法。不像国内很多书,说个框框,看书的同时还得花很多时间去google其中的小问题。

    另外这边书的开发工具选择的VC++2005,这点很好。很多书都是采用VC6.0的,落后了。

    缺点是纸张很薄。
    另外当当选的快递非常慢,成都到重庆居然花了7天时间才拿到书,杯具得很。当然和这本书没关系,在这里发个牢骚而已。


    总之,想学游戏编程的话,这本书相当值得拥有
  •     好书,正好适合我们这里初学者
  •     内容太肤浅
  •     图形方面的入门书籍。
  •     难得的好书,对于刚入门的和我一样的人很适合.
  •     这本书终于出中文版了,难得啊,游戏开发类这种经典的书真是太少了,内容浅显易懂,非常适于入门
  •     三百七十多页,黑白版,封面看着太合哥胃口了(如果把这条龙编进游戏里,化名为洪荒祖龙,而这条龙的扮演者就是哥,那就更爽了)
  •     书籍小巧,纸张很好。关键是内容非常的好,由浅入深,非常好的入门书
  •     内容不错,强烈推荐入门选这本
  •     质量上乘,不可多得的入门好书。
  •     对于DirectX的3D图形开发来说是入门的原理性书籍,看看很有好处的。
  •     学习DX的第一本书,话说去年开始编程的,但是但是并没有细致的学习。后来再看HLSL的时候发现基础知识太欠缺了,于是现在要买一本好好重新巩固一下!非常喜欢Frank.D Luna的书,都很不错。但是Shader Approach的没有中文版
  •     技术书 挺好的
  •     送的太慢了!半个月后告诉我东西丢失了!不错后来都补上了!书还是不错的!
  •     入门书,一般吧
  •     看的是shader approach那本,还没有做代码示例,确实适合3D入门。
  •     入门3d游戏书,标记下作为参考。
  •     学习游戏图形库的经典数籍,正在学习。
  •     本书是我见过的最好的一本DirectX的入门书。把学习DirectX所需要的最基础的知识用最易懂的方式讲解出来了,是学习DirectX的初学者必备的书
  •     C++ Directx入门书籍,不过感觉版本有点老了,现在好像已经出来directx11了,学习3D推荐学习opengl。
  •     DirectX基础书籍。
  •     传说中的龙书,特地当时买了没评论,看完再评论,确实经典,很多细节讲解和实例能解决不少疑问,给力推荐!!
  •     大学时代。大四
  •     写的太简单。真正做图形学最好还是从OpenGL开始
  •     非常好的基础书籍,建议先看点3D数学基础再来看这本书。这样效率会高很多。
  •     DirectX 9入门书,讲的很详细。
  •     上下班时间在地铁里看完了,看得最快的一本书之一
  •     读的是英文原版的,真的不错,推荐所有d3d编程人员人手一本!圣经!
  •     这本书不赖!
  •     我看过不下十本游戏开发教材。不说别的,这是唯一一本书中代码可以成功运行的。刚开始我找不到源代码下载网站,给书的原作者和译者分别发邮件询问,两位老师都很快回复并告知更改后的网站。我想这就是经典的教材和负责的老师。我会挤时间仔细学习的。
  •     大多数都是DX的官方文档中的内容,甚至很多还没官方文档解释得易懂
  •     粗略看过龙书,类速查文档和批量复习。
  •     very good book,now i'm reading it .
  •     书发货很快,不过书的印刷质量不是很好。
    因为我是初学,对于游戏的具体内容还不是很了解。但我个人认为,这本书是本引导人如何去学习游戏编程的。里面很多内容都是些基础。它还从某些方面提示人应该还要具备哪些方面的知识,应该再看哪些方面的书、
    所以,总体上说还是不错的。
  •     这本书讲的东西不多,DX9的新特性都没讲到所以大家不要指望能做出DX11的效果。但这本书就是面相刚接触D3D的人的,从这个角度看介绍的很详细,如果具备其他知识足以做一个游戏了
  •     对得起龙书的尊称。
  •     3d入门必备
  •     这本书讲得很有规则,逻辑清楚,非常好。
  •     有些例子很浅。。。只能算是很入门的教材吧
  •     directx终于入门了,这部书有功劳,但是最重要的是不要陷入到细节中去!!!
  •     书讲的很清晰,很适合打基础
  •     对于入门还是有点难度的,Jonathan.S.Harbour也指出这本书是中、高难度,但是一旦入门,这本书就是很好的权威书籍!
  •     第一次在当当买书,这次我买两本书,我看了一下淘宝,京东价格都差不多我选择当当是因为当当的广告比较少,当当也要继续努力;昨天晚上10点多付款的今天早上9点多就送到了,天气还蛮热哦!什么都不说了以后继续支持当当
  •     很不错的3d图形编程入门书,概念讲的很清楚,代码倒是次要的。
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024