浮木造舟
opengl工作流程简述
抽象过程
graph TD;
顶点着色器-->图元装配-->几何着色器
-->光栅化-->片段着色器-->测试与混合
工作流程详解
顶点着色器
输入
一个单独的顶点.
输出
一个可以被opengl理解的顶点.
流程
顶点着色器主要的目的是把3D坐标转为另一种3D坐标,同时顶点着色器允许我们对顶点属性进行一些基本处理(归一化等)。
图元装配
输入
顶点着色器输出的所有顶点。
输出
指定的装配图元。
流程
将无差别的顶点信息,转换为指定图元的一系列顶点。
例:输入6个顶点,输出一个六边形。
几何着色器
输入
图元装配输出的图元。
输出
另一个形状。
流程
把图元形式的一系列顶点的集合作为输入,它可以通过产生新顶点构造出新的(或是其它的)图元来生成其他形状。
例
输入一个三角形,输出两个三角形。
光栅化
输入
几何着色器的输出-> 经过处理的形状图元。
输出
屏幕上相应的像素,
流程
在片段着色器运行之前会执行裁切(Clipping),丢弃超出视图的像素,提升执行效率。
处理图元生成片段。
片段着色器
输入
屏幕上的像素
输出
像素的最终颜色。
流程
片段着色器包含3D场景的数据(比如光照、阴影、光的颜色等等),根据输入的像素和其他数据来计算最终像素的颜色。
测试与混合
检测片段的对应的深度,用它们来判断这个像素是其它物体的前面还是后面,决定是否应该丢弃。这个阶段也会检查alpha值(alpha值定义了一个物体的透明度)并对物体进行混合(Blend)。