理解OpenGL渲染管线,对于学习OpenGL非常重要。下面是OpenGL渲染管线的示意图:(图中淡蓝色区域是可以编程的阶段)
此图是从wiki中拿过来的,OpenGL的渲染管线主要包括:
-
准备顶点数据(通过VBO、VAO和Vertex attribute来传递数据给OpenGL)
-
顶点处理(这里主要由Vertex Shader来完成,从上图中可以看出,它还包括可选的Tessellation和Geometry shader阶段)
-
顶点后处理(主要包括Clipping,顶点坐标归一化和viewport变换)
-
Primitive组装(比如3点组装成一个3角形)
-
光栅化成一个个像素
------------------------百度百科-------------------------光栅化就是把顶点数据转换为片元的过程。片元中的每一个元素对应于帧缓冲区中的一个像素。光栅化其实是一种将几何图元变为二维图像的过程。该过程包含了两部分的工作。第一部分工作:决定窗口坐标中的哪些整型栅格区域被基本图元占用;第二部分工作:分配一个颜色值和一个深度值到各个区域。光栅化过程产生的是片元。把物体的数学描述以及与物体相关的颜色信息转换为屏幕上用于对应位置的像素及用于填充像素的颜色,这个过程称为光栅化,这是一个将离散信号转换为模拟信号的过程。------------------------百度百科-------------------------
-
使用Fragment shader来处理这些像素
-
采样处理(主要包括Scissor Test, Depth Test, Blending, Stencil Test等)