OpenGL ES入门指南(一) -- 引言

一、OpenGL ES 基础简介
    OpenGL ES(OpenGL for Embedded Systems)是从OpenGL裁剪定制而来的,去除了glBegin/glEnd,四边形(GL_QUADS)、多边形(GL_POLYGONS)等复杂图元等许多非绝对必要的特性。

  • OpenGL 和 OpenGL ES的区别
之所以会推出OpenGL-ES版本 ,主要是应对嵌入式环境和应用的要求。

嵌入式设备一般工作于较恶劣的环境,包括:温度、湿度、振动、冲击、酸碱腐蚀等。例如:中国的酸兩气候就给很多室外电子设备带来了新的难题,中东地区的风沙也使得美军必
须采用更先进的非IT技术来保护他们的电子设备。需要人机界面的嵌入式应用,由于受环境受环境因素的影,一般不能提供有缘电源,在有限的电能限制下工作,如何
以更低的功耗完成人机交互界面,成为OpenGL必须要面对的问题,进而推出了OpenGL-ES标准。应该说在高效完成2D/3D果面的同时,达到了降低功耗的效果。

当然,事物均具有两面性,OpenGL-ES硬加速也有缺点,即增加了设备成本。这方面主要取决于其应用是否需要强劲的性能,即对人机交互界面的更高性能的追求。
OpenGL ES相对OpenGL删减了一切低效能的操作方式,有高性能的決不留低效能的:

>没有double型数据类型,但加入了高性能的定点小数数据类型:

>没有glBegin/glEnd/glVertex,只能用glDrawArrays等

>没有实时将非压缩图片数据转成压缩贴图的功能,程序必须直接提供压缩好的贴图;

二、为什么需要OpenGL或者说OpenGL ES?

opengles 源码 opengles编程指南_opengles 源码

对比相同的算法处理在GPU和CPU上的差异:

opengles 源码 opengles编程指南_android_02

 有了GPU,在手机上面最开始用的跟GPU交互的语言就是OpenGL ES:

opengles 源码 opengles编程指南_android_03

        修图软件早期也有是用OpenGL ES来处理,但是大多数场景还都是C++的算法,直到相机的像素和处理器越来越牛逼,出现了在相机场景下3D贴图等效果。以及开始进行人脸/人体的3D重建(比如瘦脸、瘦身、增高等),再到后面图像和视频的场景也都多了起来。