简化而言,渲染管线总结为:
顶点数据(vertices)->顶点着色器(Vertex Shader)->图元装配(Assem)->几何着色器(Geometry Shader)->光栅化(Rasterization)->片段着色器(Fragment Shader)->逐片段处理(Per-Fragment Operations)->帧缓冲区(FrameBuffer)->双缓冲交换(SwapBuffer)
1.顶点处理
主要进行顶点齐次坐标变换和光照。
输出一系列变换后唯一clip坐标系的顶点
2.图元装配裁剪等
这些顶点首先根据顶点之间的连接关系(点、线、多边形)进行图元装配
图元装配后进行裁剪
裁剪之后进行透视除法
透视除法之后进行视口变换
3.光栅化
确定图元包含哪些由整数坐标确定的“小方块”
确定这些小方块的Depth值和Color值(从图片顶点的Depth和Color插值得到)
输出一系列片段
4.逐片段处理
片段被称为准像素,一个整数坐标上只能有一个像素,但可以前后“堆叠”多个片段。这些片段进入竹片处理后进行测试
丢弃不通过的片段,最终通过所有处理的片段将被写入FrameBuffer用于最终屏幕显示。
5.像素处理
将像素数据的整数RGBA值转换到管线所需的浮点数