ES-1

OpenGL ES的主要作用是将3D场景绘制到2D屏幕上,在图形学中,这一过程通过一系列的渲染管线完成。

API就是用来向各个阶段提供一些数据和状态指令,以使渲染管线能够按照要求正确地将物体绘制在屏幕上的。

左边的客户端程序通过调用OpenGL ES接口,将顶点、着色器程序,纹理,以及其他GL状态参数传入右边的GL服务端,然后在客户端调用绘制命令(如DrawArray),GL便会对输入的图元逐一执行渲染管线的每个阶段,然后将每个像素的颜色值写入帧缓冲中,最后,视窗系统就可以将帧缓冲中的颜色值显示在屏幕上了。

顶点着色器和片段着色器是可编程的过程

顶点数组

在传入OpenGL ES之前,应用程序应该将3D模型转换成一组图元的集合。每个图元都是一个点、线段或者三角形。每个图元由一个或者多个顶点组成,每个顶点定义一个点,一条边的一端或者三角形的一个角。每个顶点关联一些数据,这些数据包括顶点坐标、颜色法线向量,纹理坐标

通过顶点缓冲对象(vbo)绑定顶点数组,

顶点着色器

顶点着色器可以使用顶点数据来计算该顶点的坐标、颜色、光照、纹理坐标等。顶点坐标最重要的任务是执行顶点坐标变换,将本地坐标转换为裁剪坐标系的坐标值。顶点着色器用于输出顶点在裁剪坐标系中的坐标的变量为gl_Position。

另一个功能是向后面的片段着色器提供一组Varing变量

图元装配

光栅化

对图元中的片段进行采样,以决定哪些片段位于图元之内。在计算出每个片段的坐标值之后,片段着色器就能使用这个坐标值对该片段进行着色了,这个片段为最终屏幕上的一个像素点

片段着色器

主要作用是计算每一个片段的颜色值

片段测试

像素所有权测试,裁剪测试,模板测试,深度测试,混合,抖动