openGL着色器的渲染流程

1,617 阅读2分钟

openGL渲染架构

openGL渲染架构图
上图为openGL渲染架构图

Attributes属性

属性就是对每一个顶点都要做改变的数据元素,只能直接传递到顶点着色器Vertex Shader 属性可以是顶点位置、纹理坐标、颜色值、光照等 特点:

  • 属性值可以是浮点数、整数、布尔数据
  • 属性总是以四维向量的形式进行内部存储的
  • 这些属性是应用于每个顶点的,每个顶点都要做出改变,它们的值也可以重复

uniform值

uniform值是一种对整个批次属性都取统一的单一值,可以传递到顶点着色器和片元着色器 它是不变的,设置uniform变量,紧接着就会发送一个图元批次命令,uniform变量实际上可以无数次限制地使用。可以设置一个用于整个表面的颜色值,或是设置一个时间值 这里的uniform变量是每个批次改变一次,而不是每个顶点改变一次 uniform值可以是浮点、整数、布尔值,也可以是标量类型、矢量类型、uniform矩阵 ######纹理数据Texture Data 在顶点着色器、片元着色器中都可以对纹理数据进行采样和筛选。 比如,片元着色器对一个纹理进行采样,然后在一个三角形表面使用这个渲染的纹理数据

图片渲染流程:

图片渲染流程
具体流程可以简单理解为:

CPU做的工作:读取文件->计算Frame->图片解码

解码后纹理图片位图数据通过数据总线交给GPU

GPU的工作:GPU获取图片Frame->顶点变换计算->光栅化->根据纹理坐标获取每个像素点的颜色值(如果出现透明值需要将每个像素点的颜色*透明度值)->渲染到帧缓存区->渲染到屏幕。