第一部分数 学 基 础
第1章向量
1.1向量的概念
1.1.1向量的表示
1.1.2左手坐标系和右手坐标系
1.2向量的长度及规范化
1.2.1向量长度
1.2.2向量的标准化
1.3向量的加法和减法
1.4数乘
1.5点积
1.6叉积
1.7齐次坐标
1.8XNA向量
1.8.1SIMD编程简介
1.8.2XNA向量类型
1.8.3XNA向量操作
1.9本章小结
第2章矩阵
2.1矩阵定义
2.1.1定义
2.1.2矩阵相等、矩阵加法和矩阵数乘
2.2矩阵乘法
2.2.1定义
2.2.2向量矩阵乘法
2.3矩阵的转置
2.4单位矩阵
2.5逆矩阵
2.5.1定义
2.5.2逆矩阵的用途
2.6XNA矩阵
2.6.1XNA矩阵类型
2.6.2XNA矩阵操作
2.7本章小结
第3章矩阵变换
3.1基本变换
3.1.1平移变换
3.1.2旋转变换
3.1.3缩放变换
3.2XNA矩阵变换函数
3.3几何变换的组合
3.4本章小结
第二部分Direct3D基础
第4章Direct3D 11概述
4.1DirectX概述
4.1.1DirectX历史及版本
4.1.2COM
4.2Direct3D 11新特性
4.3Direct3D 11与OpenGL 4.0比较
4.4Direct3D 11与Direct3D 10 渲染管线比较
4.5着色器概述
4.6各个管线阶段
4.7本章小结
第5章初始化Direct3D
5.1一些准备工作
5.1.1三维空间及其变换
5.1.2资源
5.1.3交换链和页面切换
5.1.4深度缓存
5.1.5多重采样
5.2初始化Direct3D
5.2.1初始化设备
5.2.2描述交换链(Swap Chain)
5.2.3创建设备、交换链以及立即执行上下文
5.2.4创建并绑定渲染目标视图
5.2.5创建视口
5.3本章小结
第6章HLSL入门
6.1Effect文件
6.1.1什么是Effect
6.1.2Effect文件结构
6.1.3外部变量和常量缓存
6.1.4输入输出结构
6.1.5着色器主函数
6.1.6Technique
6.1.7通道
6.2高级着色语言
6.2.1变量
6.2.2语义
6.2.3函数声明
6.3Effect框架
6.3.1配置Effect框架
6.3.2读取Effect文件
6.3.3创建ID3DEffect对象
6.3.4C++程序与Effect的交互
6.3.5使用Effect进行绘制
6.4本章小结
第7章Direct3D 11中的绘制
7.1三维图元
7.2三角形的绘制
7.2.1三角形的定义
7.2.2输入布局
7.2.3编译顶点着色器及创建顶点布局对象
7.2.4创建顶点缓存
7.2.5指定图元类型
7.2.6创建像素着色器
7.2.7绘制
7.3基于Effect框架的立方体绘制
7.3.1顶点缓存的缺陷
7.3.2索引缓存的概念
7.3.3着色器代码
7.3.4绘制立方体
7.4本章小结
第8章颜色
8.1Direct3D中的颜色表示
8.2顶点颜色
8.3着色处理
8.4实例程序: Color Cube
8.5本章小结
第9章光照
9.1光照与材质
9.1.1光照
9.1.2材质
9.1.3光照模型
9.2顶点法线
9.3光照类型
9.3.1环境光
9.3.2漫射光
9.3.3镜面光
9.3.4Phong光照模型
9.4光源类型
9.4.1方向光源
9.4.2点光源
9.4.3聚光灯
9.5光照实例
9.5.1光源及材质结构定义
9.5.2平行光的实现
9.5.3点光源的实现
9.5.4聚光灯的实现
9.6本章小结
第10章纹理
10.1纹理坐标
10.2创建并使用纹理
10.3纹理过滤器
10.4纹理采样
10.5纹理寻址模式
10.6实例: 木箱
10.7本章小结
第11章混合
11.1开启混合
11.2混合公式的设置
11.2.1名词解释
11.2.2混合因子
11.2.3混合操作符
11.3应用颜色混合
11.4本章小结
第12章模板
12.1建立缓存区
12.2建立缓存视图
12.3创建模板描述和模板状态对象
12.4使用模板缓存
12.5本章小结
第三部分Direct3D应用
第13章相机设计
13.1基本概念
13.2Camera设计
13.3Camera工作原理
13.3.1摄像机在初始位置绕Up轴旋转
13.3.2摄像机在初始位置绕Right轴旋转
13.3.3摄像机在指定位置旋转
13.3.4摄像机平移
13.4Camera的实现
13.4.1倾斜、偏航、滚转
13.4.2移动
13.4.3整合
13.5Camera的使用
13.6本章小结
第14章网格
14.1OBJ格式介绍
14.1.1OBJ文件
14.1.2OBJ关键字
14.1.3mtl文件
14.2OBJ模型导入
14.2.1模型文件解析
14.2.2坐标系转换
14.2.3绘制
14.3本章小结
第15章粒子系统
15.1粒子系统的工作原理
15.1.1模拟阶段
15.1.2渲染阶段
15.2粒子系统的设计
15.2.1粒子的顶点结构
15.2.2粒子的运动
15.2.3随机数
15.2.4混合
15.3粒子系统的实现
15.3.1产生/销毁粒子
15.3.2模拟更新
15.4本章小结
第16章拾取
16.1拾取流程
16.2求拾取射线
16.2.1屏幕坐标变换到投影坐标
16.2.2投影坐标转换到观察坐标
16.3射线物体相交判断
16.3.1将射线变换到模型空间
16.3.2射线三角形相交判断
16.4本章小结
第四部分Direct3D 11渲染管线及高级主题
第17章输入装配阶段
17.1IA阶段的步骤
17.1.1创建输入缓存
17.1.2创建输入布局对象
17.1.3将输入对象绑定到管线的IA阶段
17.1.4指定图元拓扑类型
17.1.5调用绘制方法
17.2图元拓扑类型
17.2.1基本图元类型
17.2.2带邻接信息的图元类型
17.3不需要输入缓存的IA阶段
17.3.1实例
17.3.2IA阶段系统生成值
17.4本章小结
第18章顶点着色阶段
18.1顶点着色器的设置步骤
18.2进行空间变换
18.2.1局部空间和世界空间
18.2.2观察空间
18.2.3投影空间
18.3例程: 人物波动
18.4例程: 顶点光照
18.5本章小结
第19章曲面细分技术
19.1Direct3D 11中的曲面细分
19.2新的渲染阶段
19.2.1外壳着色器阶段
19.2.2曲面细分阶段
19.2.3域着色器阶段
19.3实例1: 简单的曲面细分的例子
19.4实例2: 利用曲面细分实现置换纹理映射
19.4.1凹凸映射
19.4.2实例说明
19.5本章小结
第20章几何着色阶段
20.1几何着色器的设计
20.2几何着色器的使用
20.3本章小结
第21章流输出阶段和光栅化阶段
21.1流输出阶段
21.1.1设置流输出的元素并和几何着色器绑定
21.1.2设置输出目标
21.2光栅化阶段
21.2.1裁剪矩形
21.2.2光栅化状态
21.3本章小结
第22章绘制阶段
22.1像素着色阶段
22.1.1像素着色器的结构
22.1.2像素着色器的调用
22.1.3像素着色器的应用
22.2合并输出阶段
22.2.1深度/模板测试
22.2.2颜色混合
22.2.3深度偏移
22.3本章小结
第23章计算着色器
23.1计算着色器的介绍
23.2计算着色器线程和线程组
23.3计算着色器状态
23.4实例: 分形算法
23.5本章小结
附录AWindows编程基础
A.1语言的选择
A.2“类”和类
A.3入口函数
A.4注册窗口“类”并创建窗口
A.5显示窗口并处理消息队列
A.6响应消息
附录BXNA数学库
B.1编译指令
B.2常量
B.3宏命令
B.4结构和类型
B.5函数
B.5.1颜色函数
B.5.2转换函数
B.5.3标量函数
参考文献