标签:
OpenGL ES (OpenGL for Embedded Systems 的缩写)是一套在手持设备和嵌入式设备上实现高级3D图形化的应用变成接口(API)。OpenGL ES作为图形API在当今的智能机领域占据了主导地位,并且已经将其应用扩展到了台式机。支持OpenGL ES的平台包括iOS、Android、BlackBerry、bada、Linux和Windows。OpenGL ES也支持WebGL——一种实现基于浏览器3D图形化的web标准。
2009年六月,苹果发布了iPhone 3GS,2010年Google发布了Android2.0. 自此,iOS和Android开始支持OpenGL ES 2.0 。本书的第一版详细介绍了OpenGL ES 2.0。作为本书的第二版,将介绍OpenGL ES的下一个版本,也就是OpenGL ES 3.0版本。每一个手持设备平台都将继续支持OpengGL ES3.0,这几乎是不可避免的趋势。事实上,在每个使用Android4.3版本以上的Android设备和使用IOS7的iPhone 5s已经支持OpenGL ES 3.0。 OpenGL ES 3.0是向下兼容OpenGL ES 2.0的,这就意味着为OpenGL ES 2.0编写的程序,也可以在支持OpenGL ES 3.0的设备上运行。
OpenGL ES的API是由Khronos Group团队编写的。Khronos Group团队成立于 2000 年 1 月,由包括 3Dlabs, ATI, Discreet, Evans & Sutherland, Intel, Nvidia, SGI 和 Sun Microsystems 在内的多家国际知名多媒体行业领导者创立,致力于发展开放标准的应用程序接口 API ,以实现在多种平台和终端设备上的富媒体创作、加速和回放。Khronos Group团队也负责管理OpengGL——一组可以运行在Linux、各种Unix、Mac OS X以及Mirosoft Windows这些桌面计算机系统上的标准3D API。这是一套被广泛接受的3D API, 并且已经看到在现实世界中显著的使用场景。
由于OpenGL作为作为3D API被广泛接受,在为手持设备和嵌入式设备开发开放标准3D API(也就是OpenGL ES)的时候,Khronos Group团队采用了他们认为比较合理的做法,就是以OpengGL的API为基础,然后在其上做修改,以使其能够满足手持设备的需求和现实。在早起的版本(1.0,1.1和20)中,设计中考虑的设备的限制,包括有限的处理能力和内存的可用性,低的内存带宽,以及对功耗的敏感性。工作组在OpenGL ES规范的定义中使用下列标准:
- OpenGL API是非常庞大和复杂的,OpenGL ES工作组的目标是创建能够满足设备限制的API。为了实现这个目标,工作组删除了OpenGL API中所有冗余的部分。任何操作,在OpenGL API中可以用不止一种方法来实现,那么,在OpengGL ES API中,只有最有用的部分被保留了下来。实现这个标准的一个很好的例子就是定义几何形状的方法。在OpenGL应用程序可以使用立即模式,显示列表,或顶点数组。在OpenGL ES,只有顶点数组的存在;即时模式和显示列表被删除。
- 虽然删除冗余部分是新API设计的一个重要目标,保持对OpenGL的兼容同样重要。OpenGL ES被这样设计的,使用OpenGL针对嵌入式设备的功能子集编写的应用程序,也可以在OpenGL ES的环境中正常运行。这是OpenGL ES API的一个非常重要的设计目标。因为这个设计目标使得开发者在应用程序或者工具的时候可以权衡两组API,并通过使用相同功能子集的API来开发出跨平台的应用程序或工具。
- 为了满足手持和嵌入式设备的特殊限制,OpengGL ES中引入了一些新的特性。例如,为了降低耗电和提升着色器性能,在着色语言(Shader Language)中引入了精度修饰符。
- OpenGL ES的设计者的另一个目标是,确定一个能够保证图像质量的最小功能子集。在早起的手持设备上,屏幕的大小是有限制的,因此,保证屏幕上像素的渲染质量,是非常重要的。
- OpenGL ES工作组想要确保OpenGL ES的实现可以满足一些已经被认可和接受的关于图像质量、正确性、鲁棒性的标准。这个目标是通过开发相应的一致性测试开实现的。OpenGL ES的API只有通过这些测试,才被认为满足兼容性的要求。
到目前位置,Khronos团队发布了四个版本的OpenGL ES规范,分别是:OpenGL ES 1.0、OpenGL ES 1.1(ES1.0和ES1.1在本书中统称为OpenGL ES1.x)、OpenGL ES 2.0和OpenGL ES 3.0. OpenGL ES 1.0、OpenGL ES 1.1实现的是固定功能管道。这两个版本分别源自OpenGL 1.3和OpenGL 1.5 。
OpenGL ES 2.0规范实现了可编程图形管道,它源自OpenGL 2.0。“源自某个版本的OpenGL规范”意思是,在确定某个OpenGL ES版本的功能集合的时候,是以这个版本的OpenGL规范为基准的。
OpenGL ES 3.0代表了手持设备上图形技术发展的下一个阶段,它源于OpenGL 3.3规范。当OpenGL ES 2.0 将手持设备上的3D渲染能力发挥到和DirectX9 和Microsoft Xbox 360相当水平的时候,桌面系统上GPU的图形渲染能力又有了进一步的发展和提升。阴影映射,体绘制,基于GPU的粒子动画,几何实例,纹理压缩,和伽玛校正等显著的技术特性并没有包含在OpenGL ES 2.0 当中。OpenGL ES 3.0延续了在针对嵌入式设备上的特殊限制来适配新特性的技术哲学,将以上特性带到了手持设备上。
当然,一些在以前版本的OpenGL ES的设计时是需要被考虑的嵌入式平台的限制,在当今的设备上不经不存在了。例如,现在的手持设备都配有大尺寸的屏幕(有些设备的屏幕分辨率甚至比台式机显示器的分辨率还高)。除此之外,很多手持设备现在还配有高性能的多核CPU和大容量内存。Khronos团队开发OepnGL ES 3.0 的时候,他们的工作焦点也从解决设备有限的渲染能力转移到如何把握手持设备上相关特性的适当市场时机。
下一节,将介绍OpenGL ES 3.0的管道。
Chapter 1 : OpenGLES 3.0 简介 (1)—— OpenGL ES 简介
标签:
原文地址:http://www.cnblogs.com/laomao-alex/p/4631344.html