第1章 DirectX概况 1
1.1 DirectX的版本发展 1
1.1.1 DirectX版本的历史 1
1.1.2 DirectX 10与DirectX 9的比较 3
1.1.3 DirectX 11与DirectX 10的比较 3
1.1.4 Direct3D 11与OpenGL 4.0的比较 4
1.1.5 版本更新升级 4
1.2 DirectX 11 API 5
1.2.1 DirectX API的组成 5
1.2.2 过时的DirectX API 6
1.2.3 Direct3D 11 API介绍 7
1.3.NET三维开发技术路线 9
1.3.1 Managed DirectX 9
1.3.2 XNA Framework 9
1.3.3 SlimDX 10
1.3.4 OpenTK 10
1.3.5 Tao.OpenGL 10
1.3.6 各种技术的研究对比 11
1.4 DirectX SDK开发调试 11
1.4.1 浏览器与文档实例 11
1.4.2 PIX着色程序调试器 12
1.4.3 DirectX功能支持查看器 12
1.4.4 诊断工具 13
1.4.5 纹理工具 13
1.4.6 错误查找工具 13
1.4.7 控制面板 13
1.4.8 跨平台的音频制作工具 13
1.4.9 游戏定义文件编辑器 14
第2章 可编程图形管道流水线 15
2.1 新一代图形管道流水线 15
2.1.1 图形管道流水线的发展历史 15
2.1.2 统一渲染架构图形管道逻辑流水线 17
2.1.3 GPU的发展 19
2.2 可编程着色器 19
2.2.1 顶点着色器 20
2.2.2 外壳着色器/域着色器 20
2.2.3 几何着色器 21
2.2.4 像素着色器 21
2.2.5 计算着色器 22
2.3 三维空间变换基础 22
2.3.1 三维空间 23
2.3.2 空间变换 25
2.4 思考练习题 27
第3章 GPU命令集与Shader Model 5.0. 28
3.1 GPU命令集 28
3.2 Shader Model 5.0命令集 29
3.2.1 属性 30
3.2.2 内部函数 30
3.2.3 资源对象 31
3.2.4 系统值 32
3.3 双精度运算支持 32
3.3.1 双精度运算编程开发 33
3.3.2 双精度编程的应用 34
3.4 资源类型与访问方式 34
3.4.1 资源类型 34
3.4.2 资源访问方式 36
3.5 思考练习题 37
第4章 高级着色语言 38
4.1 高级着色语言简介 38
4.1.1 着色语言 38
4.1.2 着色程序开发工具 38
4.1.3 HLSL的特点 40
4.2 HLSL变量定义 40
4.2.1 变量访问类型 41
4.2.2 变量存储类型 41
4.2.3 变量数据类型 42
4.2.4 语义关键字 42
4.2.5 全局常量定义 43
4.2.6 缓冲区存储类型限定 44
4.3 HLSL程序语法 44
4.3.1 流程控制 44
4.3.2 函数定义 45
4.3.3 运算操作符 45
4.3.4 类与接口 45
4.4 HLSL提供的API函数 47
4.5 着色程序开发 49
4.5.1 共享成员变量 49
4.5.2 接口与类声明 50
4.5.3 着色程序初始化 52
4.6 思考练习题 52
第5章 着色器功能程序开发 53
5.1 着色器编程开发基础 53
5.1.1 着色器的功能分布 53
5.1.2 着色器的结构 54
5.1.3 输入/输出布局结构 55
5.1.4 自动生成系统值 57
5.2 顶点着色器开发 58
5.2.1 顶点空间变换 58
5.2.2 顶点属性计算 59
5.2.3 顶点光照处理 60
5.2.4 无源顶点生成 60
5.3 外壳着色器/域着色器开发 61
5.3.1 外壳着色器 61
5.3.2 曲面细分器 62
5.3.3 域着色器 63
5.3.4 外壳着色器编程开发 63
5.3.5 域着色器编程开发 65
5.4 几何着色器开发 66
5.4.1 几何着色器结构定义 66
5.4.2 几何着色器的工作原理 67
5.4.3 应用开发实例 68
5.4.4 流水线输出 70
5.5 像素着色器开发 71
5.5.1 输入/输出结构 71
5.5.2 着色器颜色应用处理 72
5.6 计算着色器开发 73
5.6.1 并行计算核心分配与空间分配 74
5.6.2 计算着色器应用开发 75
5.7 思考练习题 77
第6章 着色效果文件应用 78
6.1 渲染效果文件 78
6.1.1 渲染效果文件结构 78
6.1.2 效果文件的组成 79
6.1.3 渲染技术组织格式 81
6.2 效果编译与加载 84
6.2.1 加载与使用效果文件进行渲染 84
6.2.2 着色器动态链接 85
6.3 效果应用程序接口 87
6.3.1 效果组织反射接口 87
6.3.2 资源状态反射接口 88
6.3.3 复制效果与资源同步更新 90
6.4 思考练习题 91
第7章 Direct2D平面图形开发 92
7.1 Direct2D介绍 92
7.1.1 Windows二维图形API发展进程 92
7.1.2 Direct2D与传统GDI比较 93
7.1.3 Direct2D体系结构 94
7.2 slimDX二维图形开发 97
7.2.1 创建设备和设备环境 97
7.2.2 图形绘制流程 98
7.2.3 二维图形绘制环境 100
7.3 Direct2D图形对象 101
7.3.1 几何图形对象 102
7.3.2 位图对象 103
7.3.3 文本对象 104
7.4 Direct2D图形功能与优化表达 104
7.4.1 Direct2D几何图形操作 104
7.4.2 Direct2D图形处理功能 105
7.4.3 Direct2D资源优化利用 108
7.5 思考练习题 109
第8章 DirectX图形架构 110
8.1 DirectX图形框架介绍 110
8.1.1 计算机图形硬件系统 110
8.1.2 操作系统图形接口 112
8.1.3 DXGI图形架构实现 115
8.2 交换链路 116
8.2.1 交换链路与后台缓冲区 116
8.2.2 交换链路传送模式 117
8.2.3 DXGI翻转传送模式 118
8.2.4 交换链路设置 119
8.2.5 图形呈现方式 121
8.3 图形设备 123
8.3.1 DirectX图形设备 123
8.3.2 图形设备检测 126
8.3.3 版本兼容与功能级别 128
8.3.4 设备驱动类型 130
8.3.5 设备创建特性 131
8.4 DXGI其他优化技术 132
8.4.1 全屏模式切换 132
8.4.2 多显示器支持 134
8.4.3 DXGI与窗口样式 134
8.4.4 DXGI与多线程支持 134
8.5 Windows图形API互操作 135
8.5.1 Windows的图形技术构成 135
8.5.2 DXGI画面共享互操作 136
8.5.3 DXGI设备共享互操作 138
8.6 思考练习题 138
第9章 Direct3D 11资源管理 139
9.1 数据资源管理 139
9.1.1 资源类型与格式 139
9.1.2 资源视图 140
9.1.3 slimDX资源对象 141
9.2 缓冲区资源 141
9.2.1 缓冲区资源类型 142
9.2.2 创建缓冲区 143
9.2.3 使用缓冲区资源 144
9.3 纹理资源 146
9.3.1 纹理资源 146
9.3.2 MipMap衍生纹理 147
9.3.3 多纹理融合 147
9.4 图形管道设备 149
9.4.1 资源型设备 150
9.4.2 状态型设备 150
9.4.3 着色器设备 151
9.5 思考练习题 152
第10章 Direct3D 11应用开发 153
10.1 slimDX开发环境与配置 153
10.1.1 必备软硬件环境 153
10.1.2 创建SlimDX应用程序 153
10.2 Direct3D 11图形设备创建 154
10.2.1 创建设备 154
10.2.2 渲染表达 155
10.2.3 循环更新机制 156
10.3 设备状态与环境设置 157
10.3.1 流水线布局结构设置 158
10.3.2 设备状态设置 159
10.4 实体模型表达 161
10.4.1 设置顶点数据流与缓冲区 161
10.4.2 对着色器进行编程 162
10.4.3 三维模型管道流程操作 163
10.5 思考练习题 164
第11章 设备环境与高级图形渲染 165
11.1 设备环境 165
11.1.1 图形渲染周期与表达周期 165
11.1.2 立即设备环境与延迟设备环境 166
11.1.3 延迟渲染技术 168
11.2 命令列表与多线程渲染 169
11.2.1 命令列表的概念 169
11.2.2 命令列表的录制与回放 170
11.2.3 多线程渲染的概念 171
11.2.4 多线程同步资源 173
11.3 思考练习题 173
第12章 Direct3D统一图形接口开发 174
12.1 Direct3D统一图形接口体系设计 174
12.1.1 需求分析与目标 174
12.1.2 渲染库结构体系设计 175
12.2 资源管理接口 178
12.2.1 纹理资源的管理接口设计 178
12.2.2 数据资源的管理接口设计 180
12.3 实体对象绘制工具 182
12.3.1 三维绘制接口设计 182
12.3.2 二维绘制接口设计 184
12.4 统一渲染流程 190
12.4.1 业务绘制行为 190
12.4.2 应用开发的调用流程 191
12.5 统一图形接口库构成 193
12.5.1 集成渲染环境的构成 193
12.5.2 集成渲染环境的应用 195
12.5.3 Direct3D 9设备空间 196
12.5.4 Direct3D 11设备空间 197
12.6 着色器管理接口 198
12.6.1 着色器的接口设计 198
12.6.2 着色器的参数传送 200
12.7 思考练习题 202
第13章 三维模型存储组织与表达 203
13.1 三维模型支持库设计 203
13.1.1 功能需求 203
13.1.2 应用支持库 204
13.1.3 体系结构与功能扩展 205
13.2 三维模型数据结构 206
13.2.1 Assimp模型 206
13.2.2 横断面模型 210
13.3 三维模型导入功能 212
13.4 模型表达与空间变换 213
13.4.1 三维模型的数字地球空间定位 213
13.4.2 模型的渲染表达 215
13.5 三维模型的交互 222
13.5.1 球面空间交互尺度 223
13.5.2 模型交互接口的实现 227
13.6 模型导出与存储转换 230
13.6.1 模型创建 230
13.6.2 模型导出与发布 231
13.7 思考练习题 236
第14章 全球三维地形建模优化与应用技术 237
14.1 地形块建模及其表达 237
14.1.1 地形块模型与数据组织 237
14.1.2 地形块优化建模和表达 238
14.1.3 地形块建模表达实现 241
14.2 全球三维表达调度模型 242
14.2.1 四叉树层次细节调度模型 242
14.2.2 层块视点定位直接调度模型 246
14.3 全球三维相机漫游 247
14.3.1 相机与相机类型 247
14.3.2 相机对象的设计 248
14.3.3 相机空间的计算问题 249
14.4 思考练习题 251
附录A SIimDX.D3DCompiler命名空间对象 252
附录B SIimDX.DXGI命名空间对象 253
附录C SIimDX.Direct3D11命名空间对象 254
附录D SIimDX.Direct2D类结构关系图 258
附录E SIimDX.Direct2D命名空间 259