當前位置:
首頁 > 最新 > OpenGL ES的未來?

OpenGL ES的未來?

這個月初的Apple開發者大會上,傳來一個消息:OpenGL ES即將被Apple放棄。作為一個OpenGL ES 相關從業人員,最近著實聽到了不少關於OpenGL ES的負面消息,確實有必要捋一捋思路,探討一下這個API在移動終端的未來。(註:本文僅探討OpenGL ES,並不涉及桌面市場OpenGL)

那麼Apple的原話到底是什麼?developer.apple.com上有關於iOS12的詳細說明,它最後一段是:

Deprecation of OpenGL ES

Apps built using OpenGL ES will continue to run iniOS 12, but Open GL ES is deprecated in iOS 12. Games andgraphics-intensive apps that previously used OpenGL ES should now adopt Metal.

很明顯,對於OpenGL ES來說iOS12是一個過渡期,OpenGL ES的應用仍然能運行。Apple在要求遊戲和圖形應用轉向Apple私有的Metal API。不出意外,一年之後的iOS13將正式停止對OpenGL ES的支持。

OpenGL是個有著20多年歷史的標準,而OpenGL ES也就是OpenGL for Embedded Systems相對年輕一些。OpenGL ES 1.0功能很弱,這裡就不談了。OpenGL ES 2.0的spec在2007年就出來了,iPhone從3GS時代開始就支持OpenGL ES 2.0,Android則是從2.1開始提供支持,到4.0開始強制要求。可以說自智能手機真正流行起來到今天,OpenGL ES 牢牢佔據了手機遊戲和圖形應用市場。對比由開放組織Khorons管理的OpenGL ES,Metal則是Apple自己私有的圖形API。與Metal對應的開放標準,則是2016年Khronos推出的Vulkan。兩者出現的情況很類似,都是因為OpenGL ES標準的設計太陳舊,已經無法滿足遊戲和圖形應用對現代GPU的需求。最典型的問題是遊戲開發人員對他們編寫的遊戲性能很難預測和調試,而底層各廠商的GPU驅動程序日益複雜,同一套API 調用序列在不同的廠商之間甚至會出現巨大的性能差異。而MetalVulkan都直接暴露GPU的底層操作給上層軟體,讓遊戲開發人員能更好的控制GPU以達到預期效果和性能,當然從另外一個角度看是遊戲編程的難度提高了,而GPU的驅動軟體的複雜度降低了。

看完蘋果拋棄OpenGL ES的新聞,自然要來看看Android。Android今年將要發布Android P,也就是9.0。Android的兼容性定義文檔都在source.android.com公布,目前Android P的兼容性定義文檔(CDD)並沒有公開,android網站上列出的最新CDD仍然是上一版Android 8.1的,關於Graphics API的內容是」必須同時支持OpenGL ES 1.0和2.0「,以及「強烈建議支持OpenGL ES 3.0和Vulkan 1.0「。雖然官方沒有公布,但業內傳出的消息是,Android P的CDD仍然會僅僅要求強烈建議支持OpenGL ES 3.1和和Vulkan1.1,提示」未來會要求必須支持OpenGL ES 3.1 和 Vulkan 1.0「。如果此消息屬實的話,很明顯Android對OpenGL ES的支持仍然在繼續,甚至在明年2019年的版本都不是通知OpenGL ES的過渡,而僅僅是」必須支持OpenGL ES 3.1和Vulkan1.0「。其實Android的立場是可以理解的,畢竟不是Apple那樣的封閉式帝國,它必須照顧整個Android生態鏈各廠商的感受。而且,一個不容忽視的因素是Android系統升級的情況遠遠落後於iOS。

參考最近一個月的騰訊公布的移動設備操作系統分布數據,來自mta.qq.com。先看iOS:

再看 Android:

要知道OpenGL ES 3.0的spec是2012年就已經制定,Android是從2013年就已經開始支持OpenGL ES 3.0。五年多過去了,還有多達35%的Android設備僅僅支持OpenGL ES 2.0。市面上大量的遊戲仍然停留在OpenGL ES 2.0時代。

那麼,是否可以認為Android對OpenGL ES的支持仍然將持續較長時間呢?

其實也未必。Google早就默默的搞了一個項目ANGLE(angleproject.org)讓OpenGL ES的內容能運行在其他Graphics API上面,比如Direct3D和Vulkan。未來Google很有可能在Android裡面提供OpenGL ES on Vulkan的支持,逐漸讓GPU廠商把重心放到Vulkan上,從某個版本開始停止對原生OpenGL ES驅動的支持。當然從ANGLE網站上看目前的進展還遠遠不夠,OpenGLES 2.0在Vulkan上的運行仍然未完成,更不用說3.0了。

技術更新被市場所接受的時間是難以預測的,OpenGL ES在移動終端設備上的生命長度取決於多種因素的角力,但早晚會被取代。我個人斗膽判斷Android對OpenGL ES的淘汰策略會繼續保持它一貫的偏謹慎態度,大概會晚於iOS兩年左右,也就是2021年左右。最頭疼的大概是遊戲開發商了,在這種API交替的時間段,為了市場佔有率,大概只能同時去開發OpenGL ES、Vulkan和Metal多個版本。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 軟體工程那些事 的精彩文章:

TAG:軟體工程那些事 |