到 2013 年底,WebGL 能發展到什麼程度?


我覺得取決於 browser vendor 和開發者的支持度。

Web app 的優勢是一個固定值(不用開發複雜的 installer 和 auto-updater 了,但是僅此而已)。所以對越複雜的 app 來說,Web 的優勢就越邊緣化。3D 應用的開發無疑是最複雜的。所以我可以說:3D app 的開發團隊不缺這點寫 installer 和 auto-updater 的人手。

第二,Web 的優勢領域是 HTML 和 OS 標準都成熟的部分。而標準不成熟的部分就慘了。在 HTML 不成熟的部分,開發者要測試每個 browser,在 OS 標準不成熟的部分,開發者要測試每個 OS。兩個都不成熟的部分,開發者要測試 browser x OS 的組合。就 3D 來說,連 OpenGL 都不能說每家的 driver 實現完全一樣,也不能說每個瀏覽器的綁定都一樣。

第三,其它領域的開發傾向使用穩定的技術。而 3D 開發傾向使用最先進的方案。所以 3D 平台要求能快速提供最先進的功能。在 native 平台上不用非標準 EXT 開發 OpenGL 的程序是很少的。最大公約數法則對 3D app 不成立。3D app 講究的是 aggresive then fail back。

所以爭取到開發者的支持並不容易。

瀏覽器方面,也說了 Microsoft 不支持。理由也很充分,shader code 的可信度如何保證?這個問題反過來又會降低用戶的支持。一團糟。


正好逛到這個問題,正好是2013年底,正好最近基於http://www.hightopo.com/的HT for Web 3D引擎做的電力項目收尾,正好用到的就是WebGL技術,因此說說自己的感覺供參考:

1、2013年應該感謝Google和MS,前者提供了Android Chrome瀏覽器的WebGL支持,後者終於讓IE11支持了WebGL並且降低到win7也能運行。

2、還得感謝Firefox和Opera這些廠家推動了移動終端瀏覽器對WebGL的支持,並且性能還都不差,早期Chrome的Android版還不支持WebGL時測試只能靠他們。

3、感謝UCWeb瀏覽器提供了唯一(如果不是唯一還請高人指點)官方iPad的瀏覽器的WebGL支持,雖然有很多bug我們提交了問題也沒人理,還好找到了workaround規避了些坑。

4、IE11很給力,我在mac下的VirtualBox虛擬機裡面IE11是唯一能跑WebGL的(其他瀏覽器不知道是否有開關設置可以在虛擬器可以跑的,如果有還請高人指點),但還得努力啊,一堆基礎的API都不支持,例如TRIANGLE_FAN類型都不支持,例如lineWidth都不讓設置,例如Shading Language都不支持return語句,還有好多坑,但還好我們都找到方法繞開了(如果你也遇到了IE11的坑可以幫我繼續列舉)。

5、Nexus 7二代很給力,作為WebGL的移動測試機,很輕且性能不錯,終於找到了讓我滿意的願意隨身帶著用的Android板。

6、打包android的WebView控制項方式還很難搞,默認的WebView核與Android Chrome不一樣,搞了個獨立的Chrome 28的核還開啟不了WebGL(要是有高人搞定了,還請指點)。

7、上點代表性的項目抓圖,一個是IE11下的,一個是Android下的,總體說我感覺2013年經過各個廠家的努力,對於大多數的企業應用應該可以說:WebGL is Ready!

另供參考《基於HTML5的電信網管3D機房監控應用》

HT for Web 3D 手冊

HT for Web 入門手冊

視頻封面HT fo Web - 3D Animation Easing視頻


其實現在應該談談 2014 年發展到什麼程度了。首先無所爭議的是,主流桌面瀏覽器都會支持。

而移動瀏覽器的最大障礙竟然是 Mobile Safari。不過這不是政策問題,而僅僅是技術研發的進度問題。不出意料的話,2014年 Mobile Safari也將支持 WebGL。因此,大量的3D應用(桌面、移動)和Web Based的3D設計製作工具將出現,也將集成3D製作到Hosting和分發的3D服務商,例如:goo。3D 是 2014年的熱詞,程序員和設計師將不得不迎接這新一輪的技術挑戰。


WebGL和之前出現過的大部分web前端技術都不同,它比通常的web前端技術要更為複雜,它的原生介面非常低級(標準制定者這麼做的原因是想保證WebGL在各種場合的廣泛適用性),換句話說,WebGL的學習難度非常大。因為一種技術非常複雜從而得出結論說市場不需要這種技術的推理過程簡直是無稽之談,結論也相當荒謬。所以對於這種難度極大而業界大部分人又對其未來持積極態度的技術,如果要等到標準和OS以及市場環境全部成熟了再下手,那麼對於我們開發者來說是非常不利的,因為那就意味著我們需要更多的時間和精力來學習它,而競爭對手則早已經在循序漸進的過程中佔領了先機。

另外,事實上,即使是當下,WebGL的底層兼容性問題也遠非外界盛傳的這麼複雜。通常情況下,在Windows平台上我們不需要特別擔心所謂的顯卡驅動問題,因為Chrome和Firefox這兩大主流支持WebGL的瀏覽器都是用ANGLE把WebGL API轉換為DirectX API實現的。在非Windows平台上,OS X上使用Safari或Chrome、Firefox一切都近乎完美;在Linux上大部分的閉源驅動和Mesa classic DRI驅動都可以很好的支持WebGL。

WebGL標準本身和現階段各瀏覽器所支持的擴展都沒有致命缺陷,Native GL能做的WebGL幾乎都能做。我支持@鄧鋆 的說法,我們不能寄希望於將《使命召喚》這種AAA級遊戲大作馬上就搬到Web上,但WebGL目前已經可以勝任一些休閒遊戲或者從移動平台移植過來的Native 3D Game/App,因為移動平台和網路平台通常都受同樣的幾個因素制約,例如網路狀況和性能等等。

所以,我不知道未來會發生的事情,但我想如果你和Google、Apple、Mozilla等業界巨頭一樣,都非常看好這門技術,那麼現在應該是一個非常好的時機來開始做必要的技術儲備。


我個人認為,WebGL更多的是一種對HTML表現能力的一種補充,我期待著將來看到越來越多的演示,例如商品、房屋、城市等的3D展示,網頁遊戲中少部分3D效果的表現,而非生硬的把我們所熟悉的3D遊戲完整搬到瀏覽器上。


2013年很可能Google Earth會有WebGL版的

---------------------------------------------------------------

應驗了,最新版的 google maps 中 3d 地球視圖就是WebGL做的


數據保密性太差,雖然three.js 已經非常強大了,但是你的模型數據瞬間就可以被競爭對手偷走,這個問題才是一個巨大的硬傷,能解決這個問題才行。現在看很難解決這個問題。


轉眼2016了,貌似沒什麼大發展,如果將WebGL應用在VR上,期待中。。。。。


轉眼間2014年底了,貌似沒啥大發展呢,不知道2015年底會咋樣。。


轉眼2016年底了


UC Android在接下來的版本也會提供很好的支持。


M$不支持,再發展又能如何。

不過在手機終端方面倒是可以大有做為。

其實拋開IE來說,其它瀏覽器的WebGL的支持已經比較成熟了。


Webgl能夠發展成將生活場景3D化,有如生活在網頁中一樣,幻想很簡單


推薦閱讀:

macOS Sierra 官網的視覺差動畫是如何實現的?
為什麼把 Script 標籤放在 body 結束標籤之後 html 結束標籤之前?
如何解決自定義變數名和 jQuery 的 $ 標識的衝突?
jQuery會過時嗎?
一些人瞧不起 jQuery 的理由是什麼?

TAG:JavaScript | 3D | HTML5 | WebGL | OpenGLES |