5.13 总结
- 我们可以用2D图像来模拟3D场景——使用一些基于现实生活中我们可以看到的原理,我们会有一些相关的技术来实现这一点。我们观察到:平行线会汇聚于一个消失的点上;物体的大小随着深度增加而减小;物体会遮挡住它后边的物体;光照和阴影描述了3D物体的固体形态和大小;阴影暗示了光源的位置和物体的位置。
- 我们用三角形网格来逼近物体。我们用3个顶点来定义一个三角形。在许多三角形网格中,顶点是被三角形公用的,索引缓存被用来避免顶点的重复。
- 颜色是用红绿蓝的强度来表示的。三种颜色的不同强度的混合来描述上百万种颜色。为了描述三原色的强度,使用归一化的0到1的范围来表示。0代表没有强度,1代表最强,中间值表示中间强度。通常还会把另一个颜色组成——alpha——也加入进来。alpha值通常用来定义颜色的不透明度,在融合中会很有用。把alpha值加入之后,我们会用一个4D向量来表示一个颜色。从而我们可以用XMVECTOR类型,就可以使用到SIMD操作的好处了。一个32bit的颜色,我们会用一个字节来表示一个分量。XNA数学库给我们提供了多种XMCOLOR的结构来存储32bit的颜色。颜色向量可以被相加、相减、缩放,就像普通的向量一样,不过我们必须把他们的范围钳位到0到1的范围(或者对于32bit的颜色来说是0到255)。“圆圈里边有个叉叉”这个符号代表分量相乘。
- 给定一个场景中的几何描述的位置和带有指向的虚拟摄像机,渲染管线将会根据那个摄像机看到的东西来进行一系列的步骤,在屏幕上生成一个2D图像。
- 渲染管线可以被拆分成几个主要步骤:
输入组织阶段(IA): input assembly stage
顶点着色器阶段(VS): vertex shader stage
曲面细分阶段: tessellation stage
几何着色器阶段(GS): geometry shader stage
裁剪阶段: clipping stage
光栅化阶段(RS): rasterization stage
像素着色器阶段(PS): pixel shader stage
输出合并阶段(OM): output merger stage