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的管道。 
相關文章
相關標籤/搜索