OpenGL对象:
顶点数组对象:Vertex Array Object (VAO)
顶点缓冲对象:Vertex Buffer Object (VBO)
索引缓冲对象:Element Buffer Object (EBO)
图形渲染管线:
在OpenGL中,任何事物都是存在于三维空间,但是显示在屏幕上,缺必须为二维像素点,OpenGL中一部分功能就在于此,将三维空间的事物投影成二维空间,然后将二维平面图形光栅化到像素点上,从而显示到屏幕上。二维空间和屏幕像素是不一样的,我们看到的实际显示在屏幕的图像会受到屏幕分辨率以及“像素密度”的影响。
渲染管线的工作原理:图像渲染会分为几个阶段,上一个阶段所得到的结果,通常会传递到下一个阶段作为输入,在大多数显卡上,会集成成千上万颗的小处理器,在GPU上为渲染管线的每个阶段运行各自的小程序,从而在渲染管线中处理数据,这些小程序成为着色器,着色器运行在GPU上,会节约大量儿宝贵的CPU时间。而且,有的着色器允许我们自己配置,替换默认的。OpenGL着色器的配置,是使用OpenGL着色器语言(GLSL),后面将会用到。
顶点属性:
以画一个三角形为例,首先我们将三角形的三个顶点传递进去,每个点都是在三维空间的坐标,每个坐标在-1到1之间,传入的这个数组数据就是顶点数据,每个顶点数据都是用定点属性表示的,通常,定点属性包含了顶点位置,颜色等信息,包含的信息不同,定点属性的大小也不同。
渲染流程:
1:顶点着色器:
图形渲染第一个部分是顶点着色器(Vertex Shader),他把单独的顶点作为输入,顶点着色器的作用主要是将一种三维坐标转化为另一种三维坐标,同时,顶点着色器允许我们对顶点的一些属性进行更改和处理
2:图元装配:
图元装配阶段是将顶点着色器输出的顶点作为输入,将这些定点装配成图元形状,例如,将三个点装配成三角形。
3:几何着色器:
集合着色器会将一些列定点的集合作为输入,可以通过计算出新的顶点来构造出新的图元,或生成其他形状。
4:光栅化阶段:
这个阶段会将图元光栅化,最终与屏幕上的像素相对应,生成供片段着色器使用的片段,片段着色器会执行裁切,丢掉视图以外不用显示的部分,
5:片段着色器:
片段着色器主要用于计算一个像素最终的寒色,通常,片段着色器会包含3D场景的数据(光照,阴影, 光颜色等),这些数据将用来计算一个像素点最终显示出来的颜色。
6:Alpha测试/混合
这个阶段会检测片段对应的深度值等,用它来判断这个像素在其他物体前面还是后面,是否应该显示,是否应该丢弃。混合阶段与Alpha有关,他是对物体透明度的混合,片段着色器中输出的颜色,通过这个阶段后也可能变得完全不同。
顶点属性:
以画一个三角形为例,首先我们将三角形的三个顶点传递进去,每个点都是在三维空间的坐标,每个坐标在-1到1之间,传入的这个数组数据就是顶点数据,每个顶点数据都是用定点属性表示的,通常,定点属性包含了顶点位置,颜色等信息,包含的信息不同,定点属性的大小也不同。