OpenGL

OpenGL 渲染管线流程解析

2019-05-14  本文已影响92人  伤心的EasyMan
OpenGL 渲染管线流程图.jpg

这张图是OpenGL开发者需要理解的,在以后处理任何图形渲染,都是依据它,基于OpenGL封装的框架也遵循这个图的规则。

渲染管线

在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为适应你屏幕的2D像素。3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线(Graphics Pipeline,大多译为管线,实际上指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程)管理的。

图形渲染管线可以被划分为两个主要部分:第一部分把你的3D坐标转换为2D坐标,第二部分是把2D坐标转变为实际的有颜色的像素。

下图,是一个图形渲染管线的每个阶段的抽象展示,蓝色的是表示可编程的着色器,不过我们常用的一般只有顶点着色器和片元着色器:

OpengGL渲染管线抽象图

光栅化

光栅化就是把矢量图形转化成像素点的操作。我们屏幕上显示的画面都是由像素组成,而三维物体都是点线面构成的。要让点线面,变成能在屏幕上显示的像素,就需要Rasterize(光栅化)这个过程。就是从矢量的点线面的描述,变成像素的描述。

如下图,这样可能比较好理解: 前面是告诉计算机我有一个圆形,后面是计算机把这个圆形转换成可以显示的像素点。

光栅化示例图

着色器

输入与输出

Attributs(属性)

属性就是对每一个顶点都要作改变的数据元素。实际上,顶点位置本身就是一个属性。属性值可以是浮点数、整数、布尔数据。

Uniform

Uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式,但uniform和顶点属性有些不同。

Textures(纹理)

纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来添加物体的细节

上一篇 下一篇

猜你喜欢

热点阅读