OpenGL

OpenGL 渲染管线流程解析

2019-05-14  本文已影响135人  CC老师_HelloCoder
15527190366347.jpg

这张图对于想要掌握OpenGL的开发者非常重要.而且第一次看也许大家对于它的理解会比较薄. 希望大家能后期能够多看这个图. 因为我们在处理任何图形渲染,都是依据它. 基于OpenGL 封装的框架都是也都是遵循这个图的规则.

接下来,我们来了解2个非常重要的端.

客户端,服务端

这里的客户端和服务端并不是我们常说的iOS/安卓并称为客户端,后台称为服务端.
在这个图中,管线分为上下2部分,上部分是客户端,而下半部分则是服务端。

着色器

上图的Vertex Shader(顶点着色器) 和 Fragment Shader(片段着色器)。

重点!
我们必须在这之前为着色器提供数据,否则什么都无法实现!
有3种向OpenGL 着色器传递渲染数据的方法可供我们选择
1.属性
2.uniform 值
3.纹理

属性、uniform值、纹理、输出

属性

属性:就是对每一个顶点都要作改变的数据元素。实际上,顶点位置本身就是一个属性。属性值可以是浮点数、整数、布尔数据。

Uniform值

属性是一种对整个批次属性都取统一值的单一值。它是不变的。通过设置uniform变量就紧接着发送一个图元批次命令,Uniform变量实际上可以无数次限制地使用,设置一个应用于整个表面的单个颜色值,还可以设置一个时间值。在每次渲染某种类型的顶点动画时修改它。

纹理

传递给着色器的第三种数据类型:纹理数据

输出

在图表中第四种数据类型是输出(out);输出数据是作为一个阶段着色器的输出定义的,二后续阶段的着色器则作为输入定义。

上一篇 下一篇

猜你喜欢

热点阅读