Skip to content
敲代码的小徐 edited this page Aug 8, 2022 · 3 revisions

OpenGL ES

术语解释

1、顶点

一个顶点就是一个代表几何对象的拐角的店,这个店有很多附加属性;最重要的属性就是位置,它代表了这个顶点在空间中的定位。

2、点、直线及三角形

在OpenGL中,最基础的几何图形是三角形,三角形由三个点和线构成,我们只需要定义三角形的三个顶点的坐标即可绘制出三角形。

3、顶点着色器(vertex shader)

生成每个顶点的最终位置,针对每个顶点,它都会执行一次;一旦最终位置确定了,OpenGL就可以把这些可见顶点的集合组装成点、直线以及三角形。

4、片元着色器 (fragment shader)

片元着色器为组成点、直线或者三角形的每个片段生成最终的颜色,针对每个片段,它都会执行一次;一个片段是一个小的、颜色单一的长方形区域,类似于计算机屏幕上的一个像素。

一旦最后的颜色生成了,OpenGL就会把它们写到一块称为帧缓冲区(frame buffer)的内存块中,然后Android会把这个帧缓冲区显示到屏幕上。

5、卷曲顺序

当我们定义三角形的时候,总是以逆时针的顺序排列顶点;这称为卷曲顺序。因为在任何地方都使用这种一致的卷曲顺序,可以优化性能:使用卷曲顺序可以指出一个三角形属于任何给定物体的前面或者后面,OpenGL可以忽略那些无论如何都无法被看到的后面的三角形。

6、理解OpenGL的程序

一个OpenGL程序就是把一个顶点着色器和一个片段着色器链接在一起变成单个对象。顶点着色器和片段着色器总是一起工作的。没有片段着色器,OpenGL就不知道怎么绘制那些组成每个点、直线和三角形的片段;如果没有顶点着色器,OpenGL就不知道在哪里绘制这些片段。

虽然顶点着色器和片段着色器总是要一起工作,但并不意味着他们必须是一对一匹配的,我们可以同时在多个程序中使用同一个着色器。

7、光栅化

在OpenGL中,我们定义顶点是直接给定具体的坐标值,由OpenGL计算在屏幕中的具体位置。但是在显示设备中,是由一个一个的像素点构成的;其中像素点又由三个颜色(R,G,B)构成。因此就涉及到当前图形在屏幕中由哪些像素来显示的问题。如下图所示:

image-20220808102813191.png

光栅化:光栅化就是计算OpenGL坐标系上的图形由当前屏幕中的哪些像素来显示的过程。

image-20220808102648052.png

GLSL

vec4

一个vec4是包含四个分量的向量;在位置的上下文中,可以认为这四个分量是x,y,z和w坐标,x、y、z对应一个三维位置。默认情况下,OpenGL都是把向量的前三个坐标设为0,并把最后一个坐标设为1.