《Direct3D技术内幕》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)Peter J.Kovach著;李晔等译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2001
  • ISBN:7900635270
  • 页数:361 页
图书介绍:

第1章 DirectX基础 1

1.1 DirectX API 2

1.1.1 DirectDraw 2

1.1.2 Direct3D 2

1.1.3 DirectMusic 3

1.1.4 DirectSound 3

1.1.5 DirectPlay 3

1.1.6 DirectInput 4

1.1.7 DirectSetup 4

1.2 Direct3D作为DirectX API时的工作方式 4

1.3 使用DirectX API所应了解的知识 5

1.3.1 什么是COM对象 5

1.3.2 AddRef和Release方法的用途 6

1.3.3 C和C++调用DirectX方法的差别 6

1.3.4 返回代码 7

1.5 结束语 8

1.4 Direct3D Framework 8

第2章 Direct3D程序中的Windows代码 9

2.1 Windows代码的组织方法 9

2.1.1 用于指定所包含文件和定义CUID的代码 10

2.1.2 CMyD3DApplication和CD3DApplication类 11

2.1.3 建立主窗口和消息处理 14

2.1.4 建立消息处理循环 16

2.1.5 建立应用程序的窗口进程 21

2.2 目前的程序代码 28

2.3 结束语 29

第3章 创建Direct3D程序的DirectDraw 30

3.1 DirectDraw和多显示器 31

3.2 建立DirectDraw 32

3.3 创建保存所列举设备的数据结构 33

3.4 列举DirectDraw设备 34

3.5 创建DirectDraw对象 38

3.6 列举显示模式 39

3.7 列举Direct3D设备 41

3.8 选择Direct3D设备 44

3.9 利用CD3DFramework7对象初始化DirectDraw 46

3.10 设定协作级别 52

3.11 创建表面 54

3.11.1 前缓冲区、后缓冲区和裁剪程序 55

3.11.2 全屏幕缓冲区 55

3.11.3 窗口模式缓冲区 59

3.12 界面的翻动 62

3.13 目前的程序代码 64

3.14 结束语 65

第4章 用于DirectX应用程序的Direct3D 66

4.1 Direct3D Immediate Mode的对象和接口 66

4.1.1 DirectDraw对象 66

4.1.2 DirectDrawSurface对象 66

4.1.3 Direct3DDevice对象 67

4.2 创建Immediate Mode的应用程序 68

4.1.4 Direct3DVertexBuffer对象 68

4.2.1 步骤1:初始化应用程序 70

4.2.2 步骤2:判定DirectX的版本 70

4.2.3 步骤3:列举可用的Direct3D设备 71

4.2.4 步骤4:选择Direct3D设备 71

4.2.5 步骤5:获取IDirectDraw7接口 72

4.2.6 步骤6:从IDirectDraw7获取IDirect3D7接口并创建Direct3D设备 73

4.2.7 步骤7:创建深度缓冲区 82

4.3 目前的程序代码 87

4.4 结束语 88

第5章 Direct3D顶点及转换和照明流水线 89

5.1 T L流水线概述 89

5.1.1 世界转换 90

5.1.2 视图转换 91

5.1.3 照明 92

5.1.4 投影转换和观察平截面 92

5.1.5 裁剪 93

5.1.6 除以w或非均匀 94

5.1.7 视口缩放 94

5.2 顶点 94

5.2.1 灵活的顶点格式 95

5.2.2 左手和右手坐标系 96

5.2.3 跨距顶点格式 96

5.2.4 顶点缓冲区 98

5.3 建立T L流水线矩阵 99

5.3.1 世界矩阵 99

5.3.2 观察矩阵 104

5.3.3 投影矩阵 104

5.4 视口 105

5.4.1 创建视口 106

5.4.2 建立视口 106

5.4.3 清理视口 107

5.5 照明 108

5.5.1 环境光 109

5.5.2 直射光 110

5.5.3 光的颜色与材料颜色 111

5.5.4 光的类型 111

5.5.5 光的属性 113

5.5.6 设置光的属性 116

5.5.7 检索光的属性 117

5.5.8 启用和禁用照明引擎 118

5.5.9 启用和禁用某种光 118

5.6 目前的程序代码 118

5.7 结束语 119

第6章 渲染3D图元 120

6.1 BeginScene和EndScene方法 120

6.2 索引和无索引图元 121

6.3 DrawPrimitive方法 122

6.3.1 DrawPrimitive 122

6.3.2 DrawPrimitiveStrided 123

6.3.3 DrawPrimitiveVB 124

6.3.4 DrawIndexedPrimitive 125

6.3.5 DrawIndexedPrimitiveStrided 126

6.3.6 DrawIndexedPrimitiveVB 127

6.4 图元的类型 127

6.4.1 点列表 128

6.4.2 线列表 130

6.4.3 线条 131

6.4.4 三角形列表 133

6.4.5 三角条形 134

6.4.6 三角扇形 136

6.5 设置渲染状态 137

6.5.1 Alpha混合状态 139

6.5.2 Alpha测试状态 139

6.5.3 环境光状态 140

6.5.4 消除锯齿状态 140

6.5.7 清除状态 141

6.5.5 裁剪状态 141

6.5.6 颜色键控状态 141

6.5.8 深度缓冲状态 142

6.5.9 填充状态 143

6.5.10 雾化状态 143

6.5.11 照明状态 144

6.5.12 轮廓状态 144

6.5.13 单项点颜色状态 144

6.5.14 阴影状态 145

6.5.15 模板缓冲状态 145

6.5.16 纹理透视状态 146

6.5.17 纹理包装状态 147

6.5.18 顶点颜色照明状态 147

6.5.19 Z偏差状态 147

6.6 内插值:Gouraud阴影和扩散照明 148

6.7.1 调用模型 149

6.7 创建3D应用程序 149

6.7.2 设备初始化 150

6.7.3 处理每帧的活动性 151

6.7.4 渲染帧 151

6.8 目前的程序代码 151

6.9 结束语 152

第7章 键盘和游戏杆输入 154

7.1 创建DirectInput对象 154

7.2 获取键盘、鼠标或游戏杆 160

7.3 力反馈 173

7.3.1 创建力 175

7.3.2 创建DirectInput力 176

7.4 结束语 185

第8章 纹理 186

8.1 纹理坐标 186

8.2 创建纹理表面 187

8.3 纹理管理 195

8.4 纹理压缩 197

8.4.1 DXT格式 197

8.4.2 使用DXT表面 199

8.5 多纹理映射 203

8.5.1 创建多纹理映射纹理 204

8.5.2 访问多纹理映射级别 206

8.5.3 设置多纹理映射LOD偏移量 207

8.6 纹理过滤 208

8.6.1 最近点取样 208

8.6.2 线性纹理过滤 209

8.6.3 各向异性的纹理过滤 210

8.6.4 多纹理映射纹理过滤 210

8.7 纹理接口指针 211

8.8 纹理阶段 212

8.9 纹理混合 215

8.9.1 多遍纹理混合 215

8.9.2 单遍多纹理混合 217

8.9.3 凸起花纹映射 220

8.10 纹理寻址模式 226

8.10.1 边框颜色纹理寻址模式 226

8.10.2 夹持纹理寻址模式 227

8.10.3 镜像纹理寻址模式 227

8.10.4 包装纹理寻址模式 228

8.11 纹理包装处理 229

8.12 目前的程序代码 230

8.13 结束语 231

第9章 雾化处理 232

9.1 雾化处理公式 233

9.2 创建雾化效果 234

9.3 像素雾化 238

9.4 目前的程序代码 241

9.5 结束语 247

10.1 利用帧缓冲区混合 249

第10章 Alpha混合处理 249

10.2 特殊效果 251

10.2.1 有雾环境中的发射对象 252

10.2.2 镜头眩光 252

10.2.3 照明图 253

10.2.4 有色玻璃 253

10.3 Alpha测试 254

10.4 颜色键控透明性 255

10.5 Alpha可用的调色板化纹理 257

10.6 利用Alpha的纹理阶段 257

10.7 遗留混合模式和纹理阶段 258

10.8 Alpha自左乘与非自左乘 260

10.9 目前的程序代码 260

10.10 结束语 261

第11章 照明映射和环境映射 262

11.1 照明映射 262

11.1.1 多遍纹理混合的照明映射 265

11.1.2 纹理阶段照明映射 266

11.2 环境映射 269

11.2.1 球形环境映射图 270

11.2.2 立方体环境映射图 271

11.3 目前的程序代码 276

11.4 结束语 276

第12章 模板缓冲区 278

12.1 创建模板缓冲区 278

12.2 清除模板缓冲区 282

12.3 配置模板处理状态 283

12.4 创建效果 286

12.4.1 合成效果 286

12.4.3 消融 287

12.4.4 淡入淡出效果 287

12.4.2 贴画效果 287

12.4.5 轮廓线效果 288

12.4.6 测影效果 288

12.4.7 滑入效果 288

12.4.8 阴影效果 288

12.5 ShadowVol和ShadowVo12演示程序 289

12.6 目前的程序代码 290

12.7 结束语 290

第13章 加载3D模型并为之添加动画效果 292

13.1 动画角色 292

13.1.1 分段式角色 292

13.1.2 单网格角色 293

13.2 加载和控制RoadRage模型 294

13.3 目前的程序代码 299

13.4 结束语 300

14.2 保存纹理内存 301

14.2.1 AGP内存 301

第14章 Direct3D应用程序的优化 301

14.1 Direct3D Framework 301

14.2.2 纹理映射图压缩 303

14.3 增强3D效果 303

14.3.1 多纹理处理 303

14.3.2 三重缓冲 304

14.3.3 真彩色渲染 304

14.4.2 顶点缓冲区 305

14.4.3 批量处理DrawPrimitive调用 305

14.4.1 ComputeSphereVisibility 305

14.4 优化几何图形处理 305

14.4.4 浮点精度以及多线程SetCooperativeLevel标志 306

14.4.5 防护带裁剪 306

14.4.6 纹理类型提示 306

14.5 资源最小化 306

14.5.1 高成本状态的变化 306

14.5.2 多边形 306

14.6 结束语 307

14.5.5 可见方格 307

14.5.3 纹理变化 307

14.5.4 纹理内存 307

第15章 集成DirectPlay 308

15.1 DirectPlay概念 308

15.2 启动 309

15.3 Multiplayer Connect对话框 313

15.4 Multiplayer Games对话框 317

15.5 DirectPlay消息 325

15.5.1 向游戏者传送游戏消息 326

15.5.2 结束游戏 355

15.6 目前的程序代码 358

15.7 结束语 358

第16章 结束语 360

16.1 游戏 360

16.2 模拟程序和虚拟现实 361

16.3 一路顺风,尽情陶醉吧! 361