OpenGL ES入门-名词扫盲

186 阅读4分钟

 写在前面:从一开始接触OpenGL ES看相关的书一大片的专有名词袭来,什么顶点、图元、片元、着色器,纹理。对刚接触OpenGL ES的我来说十分的空洞,无法建立起一个有效的认知流程,所以我花时间把这些名称都统计起来,通过看书查资料和我自己的一些理解把他们表达出来,如果有什么错误和不严谨的地方欢迎大家批评指正。封面图片和部分信息来源于 LearnOpenGL CN

一、元素

1.1、图元

 点、线 、三角形的几何对象,是OpenGL绘制任何复杂图形的基础,相当于三原色。

1.2、顶点

 顶点可以看作一个点,是构成点、线、三角形图元的基础。把屏幕看成一个坐标,最少三个顶点就能围城一块区域,这块区域就是我们后续要绘制的地方,所以顶点从字面上意思也可以理解,就是图形各边交点

1.3、片元

 片元是图元经过光栅化后产生的图片小碎片,它包含像素信息,但是同时还有一些额外的图像信息。

1.4、纹理

 纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来添加物体的细节;你可以想象纹理是一张绘有砖块的纸,无缝折叠贴合到你的3D的房子上,这样你的房子看起来就像有砖墙外表了。因为我们可以在一张图片上插入非常多的细节,这样就可以让物体非常精细而不用指定额外的顶点。

二、着色器

 着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输入和输出

2.1、顶点着色器

 为顶点着色,我们需要在这里为我们的顶点赋值,来确定我们需要绘制的区域的大小和形状。我们可以在这里对图像做一个旋转,缩放,平移的处理

2.2、片元着色器

为片元着色,片元着色器的主要目的是计算一个像素的最终颜色,可以是对纹理的处理,这也是所有OpenGL高级效果产生的地方。通常,片段着色器包含3D场景的数据(比如光照、阴影、光的颜色等等),这些数据可以被用来计算最终像素的颜色。

三、操作

3.1、图元装配

 图元装配阶段将顶点着色器输出的所有顶点作为输入(如果是GL_POINTS,那么就是一个顶点),并将所有的点装配成指定图元的形状。图元装配阶段的输出会传递给几何着色器(Geometry Shader)。几何着色器把图元形式的一系列顶点的集合作为输入,它可以通过产生新顶点构造出新的(或是其它的)图元来生成其他形状。图元装配中的图元处理阶段会把人视觉范围外的图元进行裁剪,丢掉多余部分保留有效区域。

3.2、光栅化

 光栅化是把图元转变为片元的过程

3.3、帧缓冲

 我们拿到GPU处理完的图像数据后我们并不是直接渲染到屏幕上,因为GPU处理图像也是一个耗时操作,不能等一帧展示完再去处理下一帧,而是会送入一个帧缓冲区,里面最多的时候有两帧数据,一个是展示给用户看的帧,一个是存放后面来的处理好的帧,两帧相互交替呈现给用户视觉效果。

四、可编程管线

 通俗点说就是我们绘制图像到屏幕的一条流水线,而我们可以对这条流水线进行我们自己的一些编码达到我们想要的效果。我们能做的,也是经常做的就是对顶点着色器和片元着色器进行自定义。其它的一些工作都交给OpenGL自己去处理即可。