OpenGL 渲染流程

整个渲染可以分为两个部分:Client 和 Server
Client 运行在 CPU 中,主要是一些代码,比如:OpenGL 的 API、数据输入等
Server 运行在 GPU 中,将 CPU 输入的数据渲染到显示器
数据类型:
uniform : 是 CPU 向 GPU 中的着色器发送数据的一种方式
- uniform 是全局的。全局意味着uniform变量必须在每个着色器程序对象中都是独一无二的,而且它可以被着色器程序的任意着色器在任意阶段访问
- 无论你把uniform值设置成什么,uniform会一直保存它们的数据,直到它们被重置或更新
Attributes:顶点对象属性是 CPU 向 GPU 的顶点着色器发生数据的,无法直接向片段着色器发送数据,需要通过 GLSL 代码间接传递。
- 顶点数据
- 纹理坐标
- 光照法线
- 颜色数据
渲染流程:

每个渲染阶段将输入数据处理后,得到的数据,作为下一个阶段的输入
- Vertex Shader 接收输入数据,将输入数据转换为标准化设备坐标,即输入数据转换至 OpenGL 的可视区域内
- Vertex Shader 输出数据发送到几何着色器,进行图元装配
- 在图元装配完成后,进入光栅化阶段,将图元光栅化为像素点
- 光栅化后,将数据传送到片段着色器
- 片段着色器,会去计算像素最后的颜色输出
- 混合和测试阶段,检测片段的对应深度值,判断像素点是其他物体的前面还是后面,决定是否丢弃;检测 alpha 值,对物体进行混合
- 渲染图像
这是 OpenGL 图像渲染管线的整个流程。