本文主要简述什么是OpenGLES,以及记录一下与OpenGLES相关的几个最重要的概念。
一、OpenGL ES是什么
OpenGL ES是使用在手机端和嵌入式里的3D图形应用程序编程接口,是跨平台的API。OpenGLES 全称是 OpenGL for Embedded Systems,是OpenGL的子集,简化版本。
主要用于绘制2D或3D图形,渲染图片和视频等。
目前有1.0,2.0和3.0版本,1.0基本已经淘汰,目前市面上用的主要是2.0和3.0。3.0在2.0基础上做了一些拓展和升级,并向下兼容2.0。
二、OpenGL ES图形管线和管道
1、OpenGL ES 3.0图形管线
(1)、使用API创建顶点数据(纹理坐标也是顶点数据)存入顶点缓冲区/数组对象,顶点缓冲区是GPU显存上的区间,顶点数组存储在内存中,数据会传给顶点着色器;
(2)、顶点着色器对glPiont赋值、执行旋转缩放变换等操作,之后进行图元装配;
(3)、图元装配中设置顶点之间的连接方式来确定绘制方式,然后绘制图形,之后对图形进行光栅化;
(4)、光栅化是确定图形在屏幕上的像素点,便于后续片元着色器填充颜色;
(5)、纹理坐标数据是不断变化的,需要通过attribute属性通道交给顶点着色器往下传递到片元着色器;
(6)、片元着色器对各个像素点填充颜色,可以对图形填充纯色,也可以从纹理数据中获取对应位置的颜色填充;
(7)、逐片元操作是将图形中的每一个像素点填充颜色,把结果放在帧缓冲区中;
(8)、从帧缓冲区将结果显示到屏幕上。tips:图元装配、光栅化、逐片元操作和帧缓冲区是不由开发者参与的,OpenGL会自动计算。
2、OpenGL ES图形管道
(1)、application应用:程序代码将图片原始数据如顶点数据和图片数据传递给顶点着色器;
(2)、Vertex顶点着色器:顶