iOS视觉

四 OpenGL 渲染架构

2020-08-04  本文已影响0人  王俏

1. OpenGL 渲染架构

image

客户端只会向服务端传递三种数据:

我们能操作和配置的只有顶点着色器和片元着色器,往这两个着色器传递数据的通道有三个:

1. 属性值(Attributes)

属性会从本地客户端内存中复制存储在图形硬件中的一个缓冲区上。这些属性只供顶点着色器使用,不能直接传递到片元着色器,通过GLSL代码间接传递给片元着色器。

这些属性对每个顶点都要做改变,属性值可以是浮点数、整数或布尔数据。主要应用是顶点的颜色数据,顶点数据,投影矩阵,模型矩阵,纹理坐标(图片的映射坐标),光照坐标,光照法线等

2. Uniform值

Uniforms值本质上跟属性一样,顶点着色器和片元着色器中都可以有Uniform变量。

我们通常设置完Uniform变量就紧接着发出渲染一个图元批次的命令。Uniform实际上可以无次数限制的使用,我们可以设置一个应用于整个表面的单个颜色值,还可以设置一个时间值,在每次渲染某种类型的顶点动画时修改它。
Uniform变量的常见的应用是在顶点渲染中设置变换矩阵,视频颜色从YUV转换为RGB的转换矩阵等。

3. 纹理数据(Texture Data)

从顶点着色器和片元着色器中都可以对纹理值进行采样和筛选。典型情况下,片元着色器对一个纹理进行采样,并在一个三角形的表面上应用图形数据,但是,纹理数据的作用并不仅仅是表现图形。

步骤:

注意:

Attributes属性值是不能直接传递给片元着色器的,只能通过顶点着色器去传递。但是Uniforms和纹理数据是可以直接传递给片元着色器的。

上一篇 下一篇

猜你喜欢

热点阅读