DirectX 9.0 3D游戏开发编程基础
查字典图书网
当前位置: 查字典 > 图书网 > 编程> DirectX 9.0 3D游戏开发编程基础

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

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

8.6

作者: Frank D·luna
出版社: 清华大学
原作名: Introduction to 3D Game Programming with DirectX 9.0
译者: 段菲
出版年: 2007-4
页数: 373
定价: 46.00元
ISBN: 9787302130253

我要收藏

内容简介:

《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

展开全文
随机来一本书

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

热门标签:
我想说两句
我要写长评
 想读     在读     读过   
评价:
标签(多个标签以“,”分开):