Chapter 1 : OpenGLES 3.0 简介 (1)—— OpenGL ES 简介

  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规范的定义中使用下列标准:

  1. OpenGL API是非常庞大和复杂的,OpenGL ES工作组的目标是创建能够满足设备限制的API。为了实现这个目标,工作组删除了OpenGL API中所有冗余的部分。任何操作,在OpenGL API中可以用不止一种方法来实现,那么,在OpengGL ES API中,只有最有用的部分被保留了下来。实现这个标准的一个很好的例子就是定义几何形状的方法。在OpenGL应用程序可以使用立即模式,显示列表,或顶点数组。在OpenGL ES,只有顶点数组的存在;即时模式和显示列表被删除。
  2. 虽然删除冗余部分是新API设计的一个重要目标,保持对OpenGL的兼容同样重要。OpenGL ES被这样设计的,使用OpenGL针对嵌入式设备的功能子集编写的应用程序,也可以在OpenGL ES的环境中正常运行。这是OpenGL ES API的一个非常重要的设计目标。因为这个设计目标使得开发者在应用程序或者工具的时候可以权衡两组API,并通过使用相同功能子集的API来开发出跨平台的应用程序或工具。
  3. 为了满足手持和嵌入式设备的特殊限制,OpengGL ES中引入了一些新的特性。例如,为了降低耗电和提升着色器性能,在着色语言(Shader Language)中引入了精度修饰符。
  4. OpenGL ES的设计者的另一个目标是,确定一个能够保证图像质量的最小功能子集。在早起的手持设备上,屏幕的大小是有限制的,因此,保证屏幕上像素的渲染质量,是非常重要的。
  5. 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的管道。

时间: 2024-08-03 23:39:20

Chapter 1 : OpenGLES 3.0 简介 (1)—— OpenGL ES 简介的相关文章

Chapter 1 : OpenGLES 3.0 简介 (2)—— OpenGL ES 3.0

管道 如前所属,本书讲解的API版本是OpenGL ES 3.0.本书的目标是,深入讲解OpenGL ES 3.0的技术细节,给出具体的例子来说明如何使用某个特性,并且讨论了各种性能优化技术.当您读完这本书,您应该可以对OpenGL ES 3.0API有一个很好的把握.您将可以轻松的写出让人新服的OpenGL ES 3.0的应用程序,并且您不必通过阅读多种OpenGL ES的规范来搞懂某个特性是如何工作的. OpenGL ES 3.0实现了可编程着色图形管道.OpenGL ES 3.0规范包含两

[android] OpenGL与OpenGL ES简介

简介 OpenGL OpenGL的全称是Open Graphics Library,即开放的图形库接口,它定义了一个跨编程语言,跨平台的编程接口的规范,它主要用于3D图形(2D也可以)编程.OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL.IRIS RL是一个工业标准的3D图形软件接口,功能虽然强大,但是移植性不好,于是SGI公司在IRIS GL的基础上开发了OpenGL. OpenGL体系简单,而且具有跨平台特性,它不像Direct3D,是Microsoft开发的windows

iOS下OpenGL ES 3.0编程入门(一):构建Hello World环境

OpenGL ES简介: OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三维图形 API 的子集,针对手机.PDA和游戏主机等嵌入式设备而设计.该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准. OpenGL ES 3.0主要新功能有: 1.渲染管线多重增强,实现先进视觉效果的加速,包括遮挡查询(Occlusion Query).变缓反馈(Transform Feedback)

基于Cocos2d-x学习OpenGL ES 2.0系列——你的第一个三角形(1)

[本系列转自]http://cn.cocos2d-x.org/tutorial/lists?id=79 前言 在本系列教程中,我会以当下最流行的2D引擎Cocos2d-x为基础,介绍OpenGL ES 2.0的一些基本用法.本系列教程的宗旨是OpenGL扫盲,让大家在使用Cocos2d-x过程中,知其然,更知其所以然.本系列教程不会涉及非常底层的数学原理,同时也不会过多地提及OpenGL本身的一些细节知识.但是我会在每篇文章的最后给出一些参考链接,大家可以顺藤摸瓜,一举Get OpenGL这个新

对用OpenGL ES 2.0实现OpenGL ES 1.1的顶点着色器的研究

对用OpenGL ES 2.0实现OpenGL ES 1.1的顶点着色器的研究 想要彻底研究OpenGL ES 2.0与前一代OpenGL的区别,还是要费很大一番精力的.最近在仔细研读<OpenGL ES 2.0 Programming Guide>,虽然这本书最早出版日期是2008年,距今已经7年了,而著作的日期或许还要早上半年到1年,但是目前OpenGL ES 2.0是主流三维开发框架,因此这本书的知识直到现在,依然受用. OpenGL ES 2.0是桌面版OpenGL 2.0的一个子集,

有关于OpenGL、OpenGL ES、WebGL的小结

转自原文 有关于OpenGL.OpenGL ES.WebGL的小结 一.   OpenGL简介 OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言.跨平台的编程接口的规格,它用于三维图西象(二维的亦可).OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库. 关于其他的介绍我就不说了.这边我说一下有OpenGL的资源网站: OpenGL官网:http://www.opengl.org/resources/libraries/glut/ Ne

Android OpenGL ES向导学习笔记(扫盲专用)

Android 目前支持下面几个版本的OpenGL ES API : OpenGL ES 1.0 和 1.1 :Android 1.0和更高的版本支持这个API规范. OpenGL ES 2.0 : Android 2.2(API 8)和更高的版本支持这个API规范. OpenGL ES 3.0 : Android 4.3(API 18)和更高的版本支持这个API规范. OpenGL ES 3.1 :  Android 5.0(API 21)和更高的版本支持这个API规范. 支持OpenGL E

(转)OpenGL ES编程入门资源集合

出自:http://blog.csdn.net/u013467442/article/details/44498125 OpenGL ES 2.0中文手册:http://www.dreamingwish.com/articlelist/category/opengl-es-api 里边讲解了部分API的功能,作为基本的参考. OpenGL ES2.0 渲染管线:http://codingnow.cn/opengles/1504.html OpenGL ES2.0 绘制三角形:http://cod

Android OpenGL ES零基础系列(一):理解GLSurfaceView,GLSurfaceView.Render的基本用法

转载请注明出处 前言 OpenGL ES是OpenGL的一个子集,是针对手机.PDA和游戏主机等嵌入式设备而设计的.该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准. 因此OpenGL ES作为第三方库被应用在android中. 到目前为止,OpenGL ES已经发展有了3个版本,OpenGL ES 1.0 , OpenGL ES 2.0 , OpenGL ES 3.0.其中OpenGL ES 1.0 是以OpenGL 1.3