OPENGL学习(1) opengl的工作流程简述

551 阅读2分钟

浮木造舟

opengl工作流程简述

抽象过程

graph TD;
	顶点着色器-->图元装配-->几何着色器
	-->光栅化-->片段着色器-->测试与混合

工作流程详解

顶点着色器

输入

​ 一个单独的顶点

输出

​ 一个可以被opengl理解的顶点.

流程

​ 顶点着色器主要的目的是把3D坐标转为另一种3D坐标,同时顶点着色器允许我们对顶点属性进行一些基本处理(归一化等)。

图元装配

输入

顶点着色器输出所有顶点

输出

​ 指定的装配图元

流程

​ 将无差别的顶点信息,转换为指定图元的一系列顶点。

例:输入6个顶点,输出一个六边形。

几何着色器

输入

​ 图元装配输出的图元。

输出

​ 另一个形状。

流程

​ 把图元形式的一系列顶点的集合作为输入,它可以通过产生新顶点构造出新的(或是其它的)图元来生成其他形状。

​ 输入一个三角形,输出两个三角形。

光栅化

输入

​ 几何着色器的输出-> 经过处理的形状图元。

输出

​ 屏幕上相应的像素,

流程

​ 在片段着色器运行之前会执行裁切(Clipping),丢弃超出视图的像素,提升执行效率。

​ 处理图元生成片段。

片段着色器

输入

​ 屏幕上的像素

输出

​ 像素的最终颜色。

流程

​ 片段着色器包含3D场景的数据(比如光照、阴影、光的颜色等等),根据输入的像素和其他数据来计算最终像素的颜色。

测试与混合

​ 检测片段的对应的深度,用它们来判断这个像素是其它物体的前面还是后面,决定是否应该丢弃。这个阶段也会检查alpha值(alpha值定义了一个物体的透明度)并对物体进行混合(Blend)。