第一部分 必备的数学知识第0章 必备的数学知识0.1 三维空间中的向量 4
0.2 矩阵 10
0.3 基本变换 15
0.4 平面(可选的) 21
0.5 射线(可选的) 24
第二部分 Direct3D基础第1章 初始化Direct3D1.1 Direct3D概述 30
1.2 COM 31
1.3 准备工作 31
1.4 初始化Direct3D 36
1.5 初始化Direct3D实例 40
第2章 渲染管线 47
2.1 表现模型 47
2.2 虚拟摄像机 49
2.3 渲染管线 49
第3章 在Direct3D中画图3.1 顶点/索引缓冲区 58
3.2 渲染状态 61
3.3 绘制准备 61
3.4 用顶点/索引缓冲区绘制 62
3.5 D3DX几何物体 64
3.6 实例程序:三角形、立方体、茶壶、D3DXCreate 65
第4章 色彩 71
4.1 颜色表示法 71
4.2 顶点颜色 73
4.3 着色处理 73
4.4 实例程序:彩色三角形 74
第5章 灯光 77
5.1 灯光的组成 77
5.2 材质 77
5.3 顶点法线 79
5.4 光源 80
5.5 实例程序:灯光 83
5.6 附加实例 85
第6章 纹理 87
6.1 纹理坐标 87
6.2 创建并赋予材质 88
6.3 过滤器 88
6.4 Mipmaps 89
6.5 寻址模式 90
6.6 实例程序:有纹理的方块 91
第7章 混合 95
7.1 混合因素 95
7.2 混合要素 96
7.3 透明度 97
7.4 使用DirectX纹理工具创建Alpha通道 98
7.5 实例程序:透明度 99
第8章 模板 103
8.1 使用模板缓存 103
8.2 实例程序:镜子 105
8.3 实例程序:平面阴影 110
第三部分 实用的Direct3D第9章 字体9.1 ID3DXFont 118
9.2 CD3DFont 119
9.3 D3DXCreateText 121
第10章 网格模型Ⅰ 124
10.1 几何信息 124
10.2 子集和属性缓存 124
10.3 绘制 125
10.4 优化 126
10.5 属性表 127
10.6 邻接信息 129
10.7 复制 130
10.8 创建一个网格(D3DXCreateMeshFVF) 130
10.9 实例程序:创建和渲染网格 132
第11章 网格模型Ⅱ 138
11.1 ID3DXBuffer 138
11.2 X文件 138
11.3 渐进网格 143
11.4 包围体 148
第12章 创建灵活的摄像机类12.1 摄像机设计 154
12.2 详细设计 155
12.3 实例程序:摄像机 161
第13章 基本地形渲染13.1 高度图 165
13.2 产生几何地形 167
13.3 纹理 172
13.4 光照 174
13.5 在地形上“走” 177
13.6 实例程序:地形 180
13.7 一些改进 181
第14章 粒子系统 184
14.1 粒子和点精灵 184
14.2 粒子系统构成 187
14.3 具体的粒子系统:雪、焰火、粒子枪 193
第15章 拾取 200
15.1 屏幕到投影窗口的变换 200
15.2 计算拾取射线 201
15.3 射线的变换 201
15.4 射线—物体相交 202
15.5 实例程序:拾取 204
第四部分 着色器和效果第16章 高级着色语言入门16.1 编写一个HLSL着色器 208
16.2 编译一个HLSL着色器 211
16.3 变量类型 215
16.4 关键字、声明及类型转换 219
16.5 操作符 220
16.6 用户自定义函数 221
16.7 内置函数 223
第17章 顶点着色器入门17.1 顶点声明 226
17.2 顶点数据用法 228
17.3 使用顶点着色器的步骤 229
17.4 实例程序:漫射光照 231
17.5 实例程序:卡通渲染 236
第18章 像素着色器入门18.1 多纹理化概览 245
18.2 像素着色器输入和输出 247
18.3 使用像素着色器的步骤 248
18.4 HLSL采样器对象 249
18.5 实例程序:像素着色器中的多纹理 250
第19章 效果框架 259
19.1 技术与过程 259
19.2 更多的HLSL内置对象 260
19.3 效果文件中的设备状态 262
19.4 创建效果 262
19.5 设置系数 264
19.6 使用效果 265
19.7 实例程序:在效果文件中的光照和纹理 268
19.8 实例程序:雾效果 273
19.9 实例程序:卡通效果 274
19.10 效果编辑器 276