渲染管道基本介绍

渲染管道的基本介绍

要使用openGL来绘制图形,首先要准备的是顶点数据。然后是触发绘图命令,这样,顶点数据就会从渲染管道的入口流入,经过一系列的步骤后转化成一幅图像。渲染管道有以下几个过程:

1、vertex shader顶点着色器

这是渲染管道的入口,所有需要被绘制的顶点数据都要经过这个步骤。这个过程中,会对输入的顶点数据进行计算(包括世界坐标转换,视口变换以及投影变换等),然后将计算后的顶点数据传递到下一个步骤。

2、Tessallation shader细分着色器

这是一个可选的步骤,假如被激活,顶点数据才会流入。在这个过程中,openGL会根据绘图命令指定的图元格式,对相应的顶点组成的图元进行细分,即为这个图元增加更多顶点,让这个图元看起来更细致。然后数据流出。

3、Geometry shader几何着色器

这也是一个可选的步骤,在这个步骤中,可以增加图元的个数,实现图形的复制的功能。

4、primitive assembly图元组装

这是openGL默认的过程,之前的3个步骤都是在对顶点进行处理。而这个步骤则是将所有顶点按照设定好的图元进行组装,为之后的裁剪和栅格化做准备。

5、clipping裁剪

对于那些超过了openGL坐标范围的顶点会在这个过程中被剔除,这样之后所做的渲染都是对我们所看到的物体进行渲染的。

6、Rasterization栅格化

在经过裁剪后,剩下的图元会别栅格化,即意味着在一张密密麻麻的方格纸上,已经为图元分配了各自的空间,而这些格子并不是像素而是“fragment"。像素信息记录在frameBuffer中,暂时不能修改,而fragment信息可以在接下来的fragment shader过程中被修改。

7、fragment shader片段着色器

根据之前分配好的fragment,该着色器会计算每个fragment的颜色(包括考虑顶点处理过程中决定的颜色以及从主存中传过来的贴图上的颜色信息)。然后再根据深度测试,blending以及模版测试来决定这个fragment是否要绘制在对应的pixel中。

你可能感兴趣的:(渲染管道基本介绍)