WebGL是HTML5 canvas元素的擴展,現已廣泛用於開發需要3D可視化的Web應用程序。它是一種3D圖形API,基於OpenGL ES 2.0。爲了簡化開發,市面上有一些流行的基於WebGL的框架:
-
Three.js:Three.js是一個基於JavaScript的庫,它以低複雜度在Web瀏覽器上創建3D內容,是輕量級的,可以在HTML5 canvas,SVG和WebGL的幫助下執行渲染。
-
Scene.js:Scene.js是基於WebGL的庫,它使用JavaScript在Web瀏覽器上進行3D可視化。它與Three.js不同,因爲它旨在快速呈現大量可單獨拾取的對象。此功能使該庫可用於工程和數據可視化應用程序。
誰開發了WebGL?一位名叫Vladimir Vukicevic的美裔塞爾維亞軟件工程師完成了基礎工作,並領導了WebGL的創建。在2007年,Vladimir開始爲HTML文檔的Canvas元素開發OpenGL原型。2011年3月,Kronos Group創建了WebGL。
主流瀏覽器(例如Google Chrome,Mozilla Firefox,Safari和Opera)都支持它,有些瀏覽器(例如Internet Explorer 11)並不完全支持WebGL。此外,WebGL是一種低級API,因爲它被設計爲直接與圖形卡進行交互。因此,具有低圖形卡內存的設備可能會帶來嚴重的性能問題。
1、WebGL與OpenGL之間的主要區別
-
WebGL基於OpenGL ES,它缺少常規OpenGL具有的許多功能,例如僅支持頂點和片段着色器。OpenGL具有WebGL所不具備的功能,例如幾何體着色器,曲面細分着色器和計算着色器。
-
WebGL主要用於瀏覽器。OpenGL確實需要本機驅動程序,並且主要用於安裝軟件。
-
WebGL用於Web應用程序,而OpenGL用於許多視頻遊戲。
-
WebGL更易於學習和開發應用程序。如果你熟悉WebGL,則可以輕鬆學習OpenGL。
-
在WebGL中,它可以使用2D紋理來僞造3D紋理。在OpenGL中,不需要這樣做,因爲它具有很多功能,例如幾何體和着色器。
-
在WebGL中,從一開始就被迫學習使用着色器和緩衝區。在OpenGL中,並非如此。
-
WebGL具有較少的功能,因此學習曲線較少。OpenGL具有更大的學習曲線,因爲它具有包括WebGL在內的許多功能。
-
WebGL基於OpenGL ES 2,而不是純OpenGL。OpenGL ES是OpenGL的子集。OpenGL ES具有較少的功能,並且對用戶來說非常簡單。OpenGL具有很多功能並且難以使用。
2、桌面瀏覽器支持情況
-
Google Chrome瀏覽器 :自2011年2月發佈第9版以來,所有具有圖形卡且驅動程序已更新的平臺均已啓用WebGL 1.0。在Windows上,默認情況下,Chrome使用ANGLE(幾乎本機圖形層引擎)渲染器來翻譯OpenGL ES Direct X 9.0c或11.0,具有更好的驅動程序支持。在Linux和Mac OS X上,默認渲染器爲OpenGL,但是也可以將OpenGL強制爲Windows上的渲染器。自2013年9月以來,Chrome還擁有更新的Direct3D 11渲染器,但需要更新的圖形卡。
-
Mozilla Firefox瀏覽器 :從4.0版開始,所有具有圖形卡且驅動程序已更新的平臺均已啓用WebGL 1.0。自2013年以來,Firefox還通過ANGLE在Windows平臺上使用DirectX。
-
Safari:在OS X Mountain Lion,Mac OS X Lion和Mac OS X Snow Leopard上的Safari 5.1上安裝的Safari 6.0和更高版本實現了對WebGL 1.0的支持,在Safari 8.0之前默認情況下已禁用。Safari 12版(在macOS Mojave中可用)具有對WebGL 2.0的支持,目前作爲“實驗”功能。
-
Opera :WebGL 1.0已在Opera 11和Opera 12中實現,但在2014年默認情況下已禁用。Opera43+支持WebGL 2.0。
-
Internet Explorer — Internet Explorer部分支持WebGL 1.0。最初,它沒有通過大多數正式的WebGL一致性測試,但後來Microsoft發佈了一些更新。最新的0.94 WebGL引擎目前已通過Khronos測試的約97%。也可以使用第三方插件(例如IE WebGL)將WebGL支持手動添加到Internet Explorer的早期版本中。
-
Microsoft Edge:最初的穩定版本支持WebGL 0.95版(上下文名稱:“ experimental-WebGL”),以及從GLSL到HLSL轉譯器的開源GLSL。版本10240+支持WebGL 1.0作爲前綴。在將來的版本中,WebGL 2.0被計劃爲中等優先級。
3、手機瀏覽器支持情況
-
BlackBerry 10:從OS 10.00版開始,WebGL 1.0可用於BlackBerry設備。
-
BlackBerry PlayBook:WebGL 1.0可通過WebWorks和PlayBook OS 2.00中的瀏覽器獲得
-
Android瀏覽器 :基本上不受支持,但是在固件升級後,索尼愛立信Xperia系列的Android智能手機具有WebGL功能。三星智能手機還啓用了WebGL(已在Galaxy SII(4.1.2)和Galaxy Note 8.0(4.2)上進行了驗證)。Google Chrome支持此功能,該功能已取代了許多手機中的Android瀏覽器(但不是新的標準Android瀏覽器)。
-
Internet Explorer : Windows Phone 8.x(11+)上提供了WebGL 1.0
-
移動版Firefox:從Firefox 4開始,WebGL 1.0就可用於Android和MeeGo設備。
-
Google Chrome瀏覽器:WebGL 1.0自Google Chrome 25起可用於Android設備,自30版本起默認啓用。
-
Maemo :在諾基亞N900中,從PR1.2固件更新開始,可在庫存的microB瀏覽器中使用WebGL 1.0。
-
MeeGo:“ Web”不支持WebGL 1.0。但是,可以通過Firefox使用它。
-
Microsoft Edge:Windows 10 Mobile上提供了Prefixed WebGL 1.0。
-
Opera Mobile :Opera Mobile 12支持WebGL 1.0(僅適用於Android)。
-
Sailfish操作系統:默認的Sailfish瀏覽器支持WebGL 1.0。
-
Tizen:支持WebGL 1.0。
-
iOS:WebGL 1.0在iOS 8中可用於移動Safari。
關於更多機器學習、人工智能、增強現實資源和技術乾貨,可以關注公衆號:AIRX社區,共同學習,一起進步!