OpenGL ES 3. pipeline 管线

大家好,接下来将为大家介绍OpenGL ES 3.x 的pipeline 管线。

OpenGL ES 3.x 的pipeline 管线如下图所示。

1、基本处理:primitive processing

该阶段指定待绘制对象的顶点坐标,顶点所对应的颜色,顶点的纹理坐标等属性。并且指定图元的绘制方式,如点绘制、线绘制、三角形绘制等。

2、顶点缓冲对象:vertex buffer objects 

这个阶段功能是可选的,对于绘制过程中,顶点数据保持不变的场景下,可以在初始化阶段将顶点数据经过基本处理后,送入顶点缓冲对象,在后续的绘制过程中,省去每帧绘制都需要做顶点IO的麻烦,直接从顶点缓冲对象中获取顶点数据即可,提升渲染效率。

3、顶点着色器:vertex shader 

顶点着色器是一个可编程的处理单元,其功能为执行顶点的变换、光照、材质的应用与计算等顶点的相关握,其每个顶点执行一次。其工作过程为:首先将原始的顶点几何信息及其他属性传送到顶点着色器中,经过自己开发的顶点着色器处理后产生纹理坐标、颜色、点位置等后继流程需要的各项顶点属性信息,然后将其传递给图元装配阶段。


4、图元组装:primitive assembly 

在顶点处理之后,顶点的全部属性都已经被确定。在这个阶段顶点将会根据应用程序设定的图元规则如 GL_POINTS(点) 、GL_LINE(线)、GL_TRIANGLES(三角形)等被组装成图元。

5、光栅化:rasterizer 

将组装好的图元通过插值的方法转化为片段的过程叫做光栅化。在这里,虚拟3D世界中的物体投影到2D显示平面上,并生成一系列的片段。片段可以简单的理解为带有深度等信息的像素点。2D显示屏幕上的一个像素点可能对应多个片段。

6、片元着色器:frgment shader 

片元着色器是用于处理片元值及其相关数据的可编程单元,其可以执行纹理的采样、颜色的汇总、计算雾颜色等操作,每个片元执行一次,片元着色器主要功能为通过重复执行shader 代码内容,将3D物体中的图元光栅化后产生的每个片元的颜色等属性计算出来送入后继阶段,如剪裁测试深度测试及模板测试等。

7、逐片段处理(剪裁测试、模板测试、深度测试、颜色混合、抖动):per-frgment operation 

剪裁测试:判断当前像素是否位于剪裁矩形范围内,如果位于裁剪区域外则被抛弃。

模板测试:模板测试主要将绘制区域限定在一定范围内,一般用在湖面倒影、镜像等场合。

深度测试:深度测试是将输入片元的深度与帧缓冲区中对应片元的深度进行比较,确定片段是否应该被拒绝。

颜色混合:将新生成的片段和保存在缓冲区的片段进行混合。

抖动:用于最小化因为使用有限精度在帧缓冲区中保存颜色值而产生的伪像,使用少量颜色模拟更宽的颜色范围。

8、帧缓冲 frame buffer 

OpenGL ES中的绘制操作并不是直接在显示屏幕上进行,而是先在帧缓冲区中进行绘制。此阶段主要执行帧缓冲的写入操作,也是渲染管线的最后一步,负责将最终的像素点写到帧缓冲区。

最后,欢迎大家一起交流学习:微信:liaosy666 ; QQ:2209115372 。

发布了15 篇原创文章 · 获赞 25 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u010281924/article/details/105264215
今日推荐