什么是OpenGL ES?
openGL是一个免费跨平台的图形库标准API,具体的实现由各个厂商实现,能实现复杂的2D、3D图形,而OpenGL ES是专门针对嵌入式终端而裁剪的一版openGL库,其原理是OpenGL提供的API控制GPU,发送操作指令,控制图像渲染管线进行绘制,最后在通过EGL与本地窗口交互,渲染输出到屏幕;EGL中间层作为OpenGL与本地窗口的桥梁,主要完成
- 本地窗口通信
- 查询和配置surface并创建surface
- 管理纹理图片资源
渲染管线
openGL操作对象主要是GPU,GPU是显卡内部的核心组件,而GPU内部包含顶点渲染单元和像素渲染单元,前者负责图像模型绘制,后者负责为图像上色,早期的管线是固定管线如OpenGL ES1.0,现在OpenGL2.0支持可编程的渲染管线;这两个渲染管线也对应后面会用到的顶点着色器和片着色器
图元
OpenGL只支持三种基本图像的绘制:点、线、三角形,任何复杂的图像都可以由这三种图像构成
顶点着色器
根据传入的图元坐标,绘制图元,OpenGL ES是一个右手坐标系,屏幕中心是原点,x轴正方向向右,y轴正方向上,Z轴穿过屏幕指向正面,当我们作画时,我们向顶点着色器传入图像坐标,当涉及到空间变换、投影时,我们还可以往其传入矩阵,投影矩阵、观察矩阵等,对图像坐标进行转换;
片着色器
根据传入的颜色值对图像模型进行上色,如在纹理开发时,根据传入的纹理坐标点,取出对应的颜色,然后在对应的模型坐标值下进行上色
片段着色器是OpenGL中用于计算片段(像素)颜色的程序。片段着色器是逐像素运算的程
序,也就是说每个像素都会执行一次片段着色器,当然也是并行的。
所以OpenGL在图像绘制时,一般经历如下几个步骤:
光栅化图元 就是把图元转化为一个个片元,片元在底层可以映射到像素,用于片着色器对其上色
帧缓冲 可以理解为输出到屏幕最后一步中,缓存屏幕上需要显示的数据
以上只是一些基本的概念,在日常开发中我们还需要掌握以下几个知识:
- OpenGL图形的基本绘制
- 视图转换、正交投影、透视投影、相机视角
- 纹理的使用
- 离屏渲染FBO
- EGL的使用