WebGL

WebGL是一種JavaScript API，用於在不使用外掛程式的情況下在任何相容的網頁瀏覽器中呈現交互式2D和3D圖形。WebGL完全整合到瀏覽器的所有網頁標準中，可將影像處理和效果的GPU加速使用方式當做網頁Canvas的一部分。WebGL元素可以加入其他HTML元素之中並與網頁或網頁背景的其他部分混合。WebGL程序由JavaScript編寫的控制代碼和OpenGL Shading Language（GLSL）編寫的著色器代碼組成，該語言類似於C或C++，並在電腦的圖形處理器（GPU）上執行。WebGL由非營利Khronos Group設計和維護。

 設計 
WebGL 1.0基于OpenGL ES 2.0，並提供了3D圖形的API。它使用HTML5 Canvas并允许利用文档对象模型接口。WebGL 2.0基于OpenGL ES 3.0，確保了提供許多選擇性的WebGL 1.0擴充功能，並引入新的API。可利用部分Javascript实现自动記憶體管理。

 歷史 
WebGL起源於Mozilla員工弗拉基米爾·弗基西維奇一項稱為Canvas 3D的實驗計畫。2006年，弗基西維奇首次展示了Canvas 3D的原型。2007年底在Firefox和Opera被實作。

在2009年初，非營利技術聯盟Khronos Group啟動了WebGL的工作組，最初的工作成員包括Apple、Google、Mozilla、Opera等。2011年3月發布WebGL 1.0規範。截至2012年3月，工作組的主席由肯·羅素（Ken Russell，全名「Kenneth Bradley Russell」）擔任。

WebGL的早期應用包括Zygote Body。

WebGL 2規範的發展始於2013年，並於2017年1月完成。該規範基於OpenGL ES 3.0。首度實作在Firefox 51、Chrome 56和Opera 43中。

 支援 
目前，WebGL在最新的瀏覽器中被廣泛支援。然而，其可用性取決於其他因素，如GPU支援。WebGL官方網站提供了一個簡單的測試頁。而第三方網站提供了更詳細的訊息（如瀏覽器使用的渲染器以及可用的擴展）。

 桌面瀏覽器 
 Google Chrome – 從9.0開始支援預設啟用了 WebGL 。在Windows上，默認情況下，Chrome使用ANGLE渲染器將OpenGL ES轉換為Direct X 9.0c或11.0，後者具有更好的驅動程序支援。在Linux和Mac OS X上，默認渲染器是OpenGL，也可以強制OpenGL作為Windows上的渲染器。2013年9月起，Chrome還推出了更新的Direct3D 11渲染器，但需要更新的顯卡。 Chrome 56+支援WebGL 2.0。
 Internet Explorer – 从11开始支持。Internet Explorer 11 最初未能通過大多數官方的WebGL一致性測試，但微軟後來發佈了幾個更新，最新的0.94 WebGL引擎目前通過了約97%的Khronos測試。較舊的版本可以安裝第三方外掛程式來支援，如IEWebGL。
 Mozilla Firefox – 從4.0開始支援預設啟用。Firefox也通過ANGLE在Windows平臺上使用DirectX。Firefox 51+ 支援 WebGL 2.0。
 Safari – 在Mac OS X Snow Leopard上的Safari 5.1、OS X Mountain Lion、Mac OS X Lion上的Safari6.0或較新版本開始支援WebGL，預設情況下禁用。Safari版本12（在MacOS Mojave中可用）支援WebGL 2.0，目前作為"實驗性"功能。
 Opera – 需自行啟用。Opera 43+支援WebGL 2.0
 Microsoft Edge – 對於Microsoft Edge Legacy，初始穩定版本支援WebGL版本0.95（context名稱："experimental-webgl"），並帶有開源GLSL到HLSL轉譯器。 版本 10240+ 支援以 WebGL 1.0 為前綴。最新的基於Chromium的Edge支援WebGL 2.0

 行動瀏覽器 
 Firefox OS
 Firefox for mobile
 Google Chrome
 Opera Mobile
 Tizen
 Ubuntu Touch
 WebOS
 iOS

 参考文献 

 外部链接 

 WebGL 於MDN Web Docs

 參見 
 HTML5
 OpenGL
 WebGPU
 WebVR

Category:網站開發
Category:網頁技術
Category:应用程序接口
Category:繪圖函式庫
Category:OpenGL