準備WebGL Canvas - OpenHome.cc
文章推薦指數: 80 %
透過WebGL,瀏覽器可以將大部份的繪圖渲染運算,送進專司影像運算的圖形處理器(Graphics Processing Unit,GPU),從而增加瀏覽器上的繪圖效率,若對HTML5 Canvas ...
回WebGL
最近玩3D建模發現了SculptGL,一個簡單、基於瀏覽器的雕塑應用程式,執行之流暢令人驚奇。
SculptGL的底層是基於WebGL,WebGL則是基於OpenGLES(OpenGLforEmbeddedSystems),這是OpenGL(OpenGraphicsLibrary)的嵌入式系統特化版本,至於OpenGL應該不用多做解釋了,玩2D、3D渲染的開發者,都知道的高效程式庫。
透過WebGL,瀏覽器可以將大部份的繪圖渲染運算,送進專司影像運算的圖形處理器(GraphicsProcessingUnit,GPU),從而增加瀏覽器上的繪圖效率,若對HTML5CanvasAPI、SVG繪圖等在效率上不滿意的話,可以試著使用基於WebGL的程式庫,像是PixiJS、Three.js等,或者直接玩WebGL。
WebGL常被誤解為一套JavaScriptAPI,確實地,開發者可以透過JavaScript來處理HTML頁面、與使用者的互動等,並呼叫WebGL制訂的JavaScriptAPI與著色器程式進行溝通,然而,撰寫著色器程式需要GLSL(OpenGLShadingLanguage),這是一個類似C語言的程式語言。
開發者需要使用GLSL撰寫著色器(Shader),透過JavaScriptAPI編譯、為Canvas繫結、建立著色器並送入GPU,之後透過JavaScript將繪圖需要的資料透過API送給著色器程式來渲染,也就是說,想要認識WebGL,對GLSL的認識也是不可少的。
圖像最後是在Canvas上渲染的,因此起手式就是準備一個Canvas,就WebGL第一個範例來說,目標就設定在令Canvas使用整個瀏覽器視埠(viewport),背景為黑色,暫時不會涉及GLSL與著色器!
無論如何,先有個Canvas再說:
也就是說,HTML標籤的width、height調整的DOM元素的尺寸,也可以透過DOM元素的width、height特性取得或設定值;CSS的width、height調整的是顯示尺寸,可以透過DOM元素的clientWidth、clientHeight特性取得或設定值,或者是透過window.getComputedStyle取得運算樣式(Computedstyle)。
如果會使用CSS來放大Canvas顯示尺寸,並希望不希望有鋸齒狀的顯示結果,可以在取得Canvas顯示尺寸之後,設定DOM元素的width、height特性,例如,想要使用整個瀏覽器視埠的話,基本上可以這麼做:
接著,可以從Canvas取得支援WebGL的Context物件,這是透過CanvasDOM物件的getContext方法指定Context類型來取得,對於支援WebGL第一版的瀏覽器要傳入字串'webgl',這系列的文件,若沒有特別提醒,討論的對象就是指WebGL第一版,對於WebGL第二版要傳入'webgl2',如果不支援的話,getContext傳回null,如果支援的話,傳回WebGLRenderingContext實例。
第一次建立WebGL的Context物件時,視埠的大小與Canvas大小是一樣的,如果需要自行設定視埠大小,或者在Canvas改變大小時,重新設定視埠大小,可以使用viewport方法: gl.viewport(0,0,canvas.width,canvas.height); 想要設定背景為黑色,方式是設定清除色為黑,並用清除色來清除色彩緩衝區。
設定清除色可以使用WebGLRenderingContext的clearColor方法,其前三個參數為RGB設定,最後一個參數為不透明度,都是接受0.0到1.0的值;清除色彩緩衝區的話,可使用clear方法傳入WebGLRenderingContext上的COLOR_BUFFER_BIT常數。
因此整個範例可以寫為:
延伸文章資訊
- 1Canvas、 SVG 和WebGl三者之间的区别_加油小吃货的博客
概要:Canvas 位图,是需要自己画点的白板; SVG 矢量图,是给数据就可以绘制点、线、图形的,基于XML 的标记语言; WebGL 3D位图,是基于Canvas 的3D ...
- 2使用WebGL 繪圖的基本步驟 - 3D 網站開發入門筆記
WebGL(Web Graphics Library 的縮寫)用於瀏覽器中呈現3D 影像的技術標準, ... WebGL 可以把JavaScript 和OpenGL ES 2.0 結合在一起,為...
- 3WebGL - Html5 Canvas Overview - Tutorialspoint
HTML5 Canvas is also used to write WebGL applications. To create a WebGL rendering context on the...
- 4WebGL - 維基百科,自由的百科全書
WebGL完全整合到瀏覽器的所有網頁標準中,可將影像處理和效果的GPU加速使用方式當做網頁Canvas的一部分。WebGL元素可以加入其他HTML元素之中並與網頁或網頁背景的其他 ...
- 5WebGL 入門- Web APIs | MDN
WebGL 讓網頁內容能藉由一種基於OpenGL ES 2.0 的API 的幫助,於支援此API 的瀏覽器環境中,不需使用外掛程式就能在HTML 的canvas 元素中實現二維及 ...