《DirectX 9 3D图形程序设计》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:陈卡等编著
  • 出 版 社:上海:上海科学技术出版社
  • 出版年份:2003
  • ISBN:7532370720
  • 页数:366 页
图书介绍:本书详细介绍了三维图形坐标变换,位图操作,顶点渲染,光照,纹理映射,阴影,雾化,以及DirectX 9中新增的可编程顶点渲染和像素渲染特性等内容。

第1部分 Direct3D入门 1

第1章 DirectX简介 1

1.1 什么是DirectX和Direct3D 2

1.1.1 DirectX 2

1.1.2 DirectX SDK 2

1.2 基于COM的DirectX 3

1.2.1 什么是COM对象 3

1.2.2 AddRef()和Release() 5

1.3 小结 6

第2章 一个简单的Direct3D程序 7

2.1.1 对WNDCLASS类赋值并注册 10

2.1 创建一个Windows窗口 10

2.1.2 创建窗口 12

2.2 初始化Direct3D程序 14

2.2.1 创建Direct3D对象并得到Direct3D接口 15

2.2.2 查询显示卡的显示模式GetAdapterDisplayMode() 16

2.2.3 创建Direct3D设备对象并得到接口 17

2.3 处理消息循环 21

2.4 图形显示 22

2.4.1 IDirect3DDevice9::Clear()函数 22

2.4.2 BeginScene()和EndScene() 24

2.4.3 IDirect3DDevice9::Present()函数 25

2.5 结束Direct3D程序 25

2.6 一个简单的Direct3D范例程序 26

2.7 小结 30

第3章 几何模型显示 33

3.1 3D坐标系 34

3.2 Direct3D基础图形表示 35

3.3 使用顶点缓冲区绘制图形 40

3.3.1 创建顶点缓冲区 41

3.3.2 顶点缓冲区图形显示 44

3.4 使用索引缓冲区绘制图形 52

3.5 小结 61

第4章 三维坐标变换 63

4.1 顶点坐标变换和光照流水线概述 64

4.2.1 平移(Translate) 67

4.2 模型几何变换 67

4.2.2 旋转(Rotate) 69

4.2.3 缩放(Scale) 69

4.2.4 复合变换 71

4.3 取景变换 72

4.4 投影变换 74

4.4.1 正交投影 74

4.4.2 透视投影 76

4.5 视区变换 77

4.5.1 视区(D3DVIEWPORT9结构) 77

4.5.2 IDirect3DDevice9::SetViewport() 78

4.6 三维坐标变换程序范例 79

4.7 获得Direct3D坐标变换矩阵 88

4.8 小结 89

第5章 光照 91

5.1 3种不同的光照计算模型 92

5.1.1 环境光(Ambient Light) 92

5.1.2 漫反射(Diffuse Reflection) 93

5.1.3 镜面反射(Specular Reflection) 94

5.2 Direct3D支持的光源类型 94

5.2.1 光源类型 95

5.2.2 光源属性 97

5.3 设置物体表面材质属性 98

5.4.1 激活光照运算 100

5.4 Direct3D中设置光照 100

5.4.2 设置物体表面材质 101

5.4.3 设置方向光、点光源或者聚光灯 101

5.4.4 在多边形顶点信息中增加法线向量 103

5.5 光照程序范例 103

5.6 小结 112

第6章 纹理 113

6.1 基本纹理概念 114

6.1.1 纹理位图 114

6.1.2 纹理坐标:(U,V)坐标 114

6.1.3 分配纹理坐标 115

6.2.1 载入纹理 116

6.2 Direct3D纹理绘制过程 116

6.2.2 分配顶点纹理坐标 121

6.2.3 设置当前渲染纹理IDirect3DDevice9::SetTexture() 122

6.2.4 设置纹理渲染状态IDirect3DDevice9::SetTextureStageState() 123

6.2.5 渲染顶点缓冲区 125

6.3 纹理采样属性 131

6.3.1 纹理过滤(Texture Filtering) 131

6.3.2 纹理寻址(Texture Address) 137

6.4 DXT纹理压缩 141

6.5 小结 142

第7章 用DirectX数据文件绘制三维数据模型 143

第2部分 Direct3D进阶 143

7.1 将三维模型输出为Direct3D数据文件 145

7.2 在Direct3D程序中载入X文件 147

7.2.1 Direct3D多边形网格(ID3DXMESH) 147

7.2.2 载入X文件并生成多边形网格 149

7.3 绘制Direct3D多边形网格 153

7.4 小结 154

第8章 Direct3D图形绘制技巧 155

8.1 深度测试 156

8.2 Alpha混合 159

8.3 Alpha测试 166

8.4 多边形填充模式 167

8.5 Flat渲染和Gouraud渲染 169

8.6 图形反锯齿 171

8.6.1 查询设备是否支持多重采样 171

8.6.2 创建使用多重采样的Direct3D设备 172

8.6.3 启用多重采样的全景图形反锯齿 173

8.7 小结 174

第9章 雾化 175

9.1 雾化计算方法 176

9.2 创建雾化效果 177

9.2.1 激活雾化处理 177

9.2.2 设置雾化计算公式 178

9.2.3 设置雾化参数 178

9.3 基于发散的雾化效果 179

9.4 雾化程序范例 180

9.5 小结 182

第10章 高级纹理应用 183

10.1 多层纹理映射 184

10.1.1 设置纹理层混合方法 186

10.1.2 设置纹理层坐标索引 189

10.1.3 设置渲染纹理 190

10.2 纹理坐标自动生成 197

10.2.1 纹理坐标生成 197

10.2.2 纹理坐标变换 198

10.2.4 纹理坐标自动生成应用 199

10.2.3 选择纹理坐标输出 199

10.3 凹凸纹理映射 207

10.3.1 凹凸纹理像素格式 207

10.3.2 查询是否支持凹凸纹理 211

10.3.3 凹凸纹理状态设置 212

10.3.4 凹凸纹理计算 214

10.3.5 凹凸纹理范例 215

10.4 小结 216

第11章 在Direct3D中显示二维字体 217

11.1 使用ID3DXFont显示字体 218

11.1.1 D3DXCreateFont() 218

11.1.2 ID3DXFont::DrawText() 219

11.1.3 其他相关的ID3DXFont接口函数 221

11.2 小结 221

第3部分 深入了解Direct3D 223

第12章 使用模板缓冲区 223

12.1 模板缓冲区 225

12.1.1 创建模板缓冲区 225

12.1.2 清除模板缓冲区 227

12.1.3 设置模板缓冲区状态参数 228

12.1.4 双面模板缓冲区 230

12.2.2 贴花效果 231

12.2.3 消融、淡入淡出和滑入效果 231

12.2.1 图像合成 231

12.2 使用模板缓冲区创建特殊效果 231

12.2.4 轮廓线和侧影效果 232

12.3 阴影 232

12.4 小结 249

第13章 顶点渲染 251

13.1 顶点渲染基本步骤 253

13.1.1 查询顶点渲染版本 253

13.1.2 创建顶点缓冲区和顶点声明对象 254

13.1.3 创建顶点渲染对象 257

13.1.4 设置顶点渲染函数并绘制图元 260

13.1.5 程序范例 261

13.2 顶点渲染指令简介 269

13.2.1 顶点渲染版本声明 270

13.2.2 顶点元素声明 270

13.2.3 渲染处理 271

13.3 顶点渲染寄存器 275

13.4 顶点渲染寄存器控制 275

13.4.1 目标寄存器元素屏蔽(Masking) 276

13.4.2 源寄存器元素替换(Swizzling) 276

13.4.3 源寄存器修改符(Source Modifiers) 277

13.5 顶点渲染范例1——坐标变换 277

13.6 顶点渲染范例2——光照与纹理映射 282

13.7 小结 292

第14章 像素渲染 293

14.1 像素渲染简介 295

14.1.1 查询像素渲染版本 296

14.1.2 创建像素渲染指令 296

14.1.3 编译并载入像素渲染指令 297

14.1.4 创建像素渲染对象 299

14.1.5 执行像素渲染 299

14.2 像素渲染指令简介 299

14.2.1 版本声明指令 300

14.2.2 常量定义和寄存器声明指令 300

14.2.3 像素渲染处理指令 301

14.2.4 像素输出指令 303

14.4 像素渲染指令控制 304

14.3 像素渲染寄存器 304

14.4.1 指令修改符(Instruction Modifier) 305

14.4.2 源寄存器修改符(Source Modifiers) 305

14.4.3 目标寄存器元素屏蔽(Masking) 305

14.4.4 源寄存器元素替换(Swizzling) 306

14.5 像素渲染范例1——模拟夜视图像 306

14.6 像素渲染范例2——景物模糊处理 317

14.7 小结 329

附录1 D3DFile.h代码 331

附录2 D3DFile.cpp代码 335

附录3 Direct3D渲染状态 361

附录4 顶点元素数据类型D3DDECLTYPE 365