在发展过程中,下面的图是一个(非常)简化图的管道阶段和数据,在他们旅行。虽然极其简化但它足以呈现着色器编程的一些重要的概念。在本节内固定管道阶段被代替。注意,这个管道是一个抽象的,不一定包含任何特定实现的步骤。
顶点变换
在这里一个顶点是一组属性,如它的位置在空间、以及它的颜色,法线、纹理坐标、还有其他。对这个阶段的输入是每个顶点属性。一些操作的固定功能在这个阶段是:
1. 顶点位置变换
2. 每个顶点的光照计算
3. 生成和变换纹理坐标
图元装配和光栅化
对这个阶段的输入是转换后的顶点,以及顶点连接信息。这后者的块数据告诉管道如何用这些顶点组装图元。
这个阶段还负责对视景体的裁剪操作和背面剔除。
光栅化决定了片段,图元的像素位置。一个片段在这个上下文是一块数据,用于更新一个像素的帧缓冲器在一个特定的位置。一个片段包含不仅仅颜色,还包括法线和纹理坐标,还有其他可能的属性,,用于计算新的像素的颜色。
在这个阶段主要输出以下:
1. 每个片段(像素)在帧缓冲区的位置
2. 在转换阶段计算顶点的每个片段的插入值的属性
在顶点转换阶段计算的值,结合顶点连接信息允许这个阶段来计算相应的属性的片段。例如,每个顶点有一个转换位置。当考虑顶点构成一个原始的图元时,可以计算片段的位置。另一个例子是使用颜色。如果一个三角形每个顶点有不同的颜色,那么颜色的片段,在三角插值得到的三角形的顶点颜色加权的相对距离的顶点的片段。
片段纹理映射和颜色
片段的插值信息是这个阶段的输入值。一个颜色已经在前一个阶段通过插值计算,在这里可以加上一个纹理单元 (纹理元素)为例。纹理坐标也被在前面的阶段插值计算出来。雾也应用在这个阶段。共同的最终结果的这个阶段是片段的颜色值和深度值。
光栅化操作
这个阶段的输入是:
1. 像素位置
2. 片段的颜色值和深度值
管线的最后阶段是一系列的片段测试,主要包括:
1. 裁剪测试
2. 混合测试
3. 模板测试
4. 深度测试
如果测试成功的片段信息然后根据当前的混合模式被用来更新像素的值。注意,只有在这个阶段发生混合,因为片段纹理和着色阶段没有访问帧缓冲区。帧缓冲仅可在这个阶段。
435

被折叠的 条评论
为什么被折叠?



