OpenGL系列-渲染流程图

OpenGL 渲染流程

image-20200707130840280

整个渲染可以分为两个部分:Client 和 Server

Client 运行在 CPU 中,主要是一些代码,比如:OpenGL 的 API、数据输入等

Server 运行在 GPU 中,将 CPU 输入的数据渲染到显示器

数据类型:

  • uniform : 是 CPU 向 GPU 中的着色器发送数据的一种方式

    • uniform 是全局的。全局意味着uniform变量必须在每个着色器程序对象中都是独一无二的,而且它可以被着色器程序的任意着色器在任意阶段访问
    • 无论你把uniform值设置成什么,uniform会一直保存它们的数据,直到它们被重置或更新
  • Attributes:顶点对象属性是 CPU 向 GPU 的顶点着色器发生数据的,无法直接向片段着色器发送数据,需要通过 GLSL 代码间接传递。

    • 顶点数据
    • 纹理坐标
    • 光照法线
    • 颜色数据

渲染流程:

image-20200707131231607

每个渲染阶段将输入数据处理后,得到的数据,作为下一个阶段的输入

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

这是 OpenGL 图像渲染管线的整个流程。