OpenGL ES 3.0 增加大量新特性
OpenGL 規范被廣泛用于 PC 和移動設備。在昨天的 SIGGRAPH 2012 大會上,OpenGL 背后公益性組織科納斯組織(Khronos Group)共布了新版本:
- 面對移動領域的 OpenGL ES 版本更新到 3.0;
- 面對桌面領域的 OpenGL 版本更新到 4.3;
- 可運用在增強現實領域的圖形接口 OpenVL。
三者中,OpenGL ES 3.0 成為主角,因為它是 Android、iOS 等主流移動平臺上的圖形接口標準。
OpenGL ES 3.0 帶來很多新特性,根據 AnandTech 的解釋:
- 支持更多緩沖區對象。在 OpenGL ES 2.0 時中,緩沖區對象的規范有模糊之處。名字一樣緩沖區對象,在實際渲染中對表現卻有細微的差別。針對這個問題 OpenGL ES 3.0 制定了更詳細對格式規范。新版 OpenGl ES 還增加對 Uniform Buffer Object 的支持;
- 新版 GLSL ES 3.0 著色語言,支持 32 位整數和浮點數據類型以及操作。之前版本的著色語言只支持精度更低的,這樣雖然能夠加快計算的速度,所需的資源也更少,但當著色器的復雜度增加,出錯也隨之增加。同時,新版著色語言的語法更貼近 GLSL;
- 支持遮擋查詢(Occlusion Query)以及幾何體實例化(Geometry Instancing)。通過遮擋查詢,能夠讓 GPU 知道 3D 場景中,哪些物體被其它物體完全遮擋,這些完全被遮擋的物體 GPU 不會去渲染。幾何體實例化是通過對具有相同頂點數據的幾何體,賦予不同的空間位置、顏色或紋理等特征,從而創造出不同實例對象的技術。這兩個特性都能夠節 省硬件資源,提高 3D 圖形渲染的性能。
- 增加多個紋理的支持。包括浮點紋理、深度紋理、頂點紋理等等。
- 多重渲染目標(Multiple Render Targets),讓 GPU 一次性渲染多個紋理。
- 多重采樣抗鋸齒(MSAA Render To Texture),讓 3D 物體對邊緣不出現毛刺,可提升圖像效果。
- 使用統一的紋理壓縮格式 ETC:多年來阻礙 OpenGL 發展的一大頑疾,就是沒有統一的紋理壓縮格式,包括 S3TC、GPUs、PVPRTC、ETC 等等。因為沒有一個統一標準,開發者不得不因為不同的硬件環境而將紋理重復壓縮多次——尤其對于 Android 開發者而言,這個過程苦不堪言。顯然,統一紋理壓縮格式,能夠提高開發者對開發效率。但現實中,統一標準這類事情的進展從來沒有快過。ETC 的推廣要看之后開發者與廠商會做出怎樣的反應。
OpenGL ES 3.0 這一次更新無疑增加了大量新特性,總體而言,能夠讓移動平臺游戲畫面更加漂亮,還能讓開發者更加節省力氣,提高機器 3D 圖像的性能。
科納斯回顧了 OpenGL ES 的發展歷程,在 2007 年 8 月,初代 iPhone 和 Android 都內置了 OpenGL ES 1.x;2009 年 10 月,iPhone 3GS 和 Android 2.2 內置了 OpenGL ES 2.0。結果 OpenGL ES 在移動市場的占有率大增,從 2006 年的 20% 到今年的 90% 以上。
與 OpenGL ES 在移動市場混得風生水起相比,OpenGL 在桌面市場卻備受微軟的 3D 圖形接口 DirectX 的打壓。和網景的遭遇相似,作為 1992 年就創立的 3D 圖形接口標準,OpenGL 早先占領絕大多數市場份額。但 1996 年,微軟推出自行開發的 3D 圖形接口 DirectX,憑借 Windows 的壟斷地位,最終成為第一。
所幸 OpenGL 一直是一個開放性的標準,依靠協會成員的捐助生存,而且因為發展得要比 DirectX 早,被一些高端的圖形設備和專業應用沿用,OpenGL 并未像網景那般消失在歷史洪流。而這幾年,由于天生的支持跨平臺特性,令 OpenGL 能夠適應移動時代“碎片化”的特征,成為移動開發人員的首選——這樣的經歷和 ARM 也有相似之處。
因為移動市場的火爆,一些游戲公司也開始加入 OpenGL 陣營。最著名的當屬開發處《虛幻》游戲引擎的 Epic Games,在 2010 年宣布加入 OpenGL 之前的十年,它一直堅持使用微軟的 DirectX 開發游戲。
最近 OpenGL 的發展速度在加快,其表現受到游戲業界的肯定。開發出《半條命》、《CS》等著名射擊游戲的 Valve 最近宣稱, OpenGL 要比 DirectX 性能更好。公司之前測試了《半條命 2》、《Left 4 Dead》以及《Dota 2》的游戲執行速度,在相同的硬件條件下,這些游戲在 Ubuntu 下測試 L4D2,最高幀數為 315 fps,比 Windows 快 20%。不過,Valve 對 Windows 的態度一直比較差,這個結果如何衡量,就看你自己了。
題圖來自 Flickr 的 roland.batroff,是他用 OpenGL 繪制的作品之一