1. 程式人生 > >初識WEBGL

初識WEBGL

WebGL 使得在支援HTML 的 canvas 標籤的瀏覽器中,不需要安裝任何外掛,便可以使用基於 OpenGL ES 2.0 的 API 在 canvas 中進行2D和3D渲染。WebGL程式包括用 JavaScript 寫的控制程式碼,以及在圖形處理單元(GPU, Graphics Processing Unit)中執行的著色程式碼(GLSL,注:GLSL為OpenGL著色語言)。WebGL 元素可以和其他 HTML 元素混合使用,並且可以和網頁其他部分或者網頁背景結合起來。

本文將向您介紹 WebGL 的基礎使用。此處假定您對三維圖形方面的數學知識已經有一定的理解,本文也不會試圖向您教授 3D影象概念本身。在我們的學習空間 

Learn WebGL for 2D and 3D graphics有一個面向初學者的指南、以及完整的程式碼例子。

本文的程式碼也可以在這裡下載 webgl-examples GitHub repository 。

準備 3D 渲染Section

為了使用 WebGL 進行 3D 渲染,你首先需要一個 canvas 元素。下面的 HTML 片段用來建立一個 canvas 元素並設定一個 onload 事件處理程式來初始化我們的 WebGL 上下文 。

<body onload="main()">
  <canvas id="glcanvas" width="640" height="480">
    Your browser doesn't appear to support the HTML5 <code>&lt;canvas&gt;</code> element.
  </canvas>
</body>

準備 WebGL 上下文Section

我們的 JavaScript 程式碼中的 main() 函式將會在文件載入完成之後被呼叫。它的任務是設定 WebGL 上下文並開始渲染內容。


//
// start here
//
function main() {
  const canvas = document.querySelector("#glcanvas");
  // Initialize the GL context
  const gl = canvas.getContext("webgl");

  // Only continue if WebGL is available and working
  if (!gl) {
    alert("Unable to initialize WebGL. Your browser or machine may not support it.");
    return;
  }

  // Set clear color to black, fully opaque
  gl.clearColor(0.0, 0.0, 0.0, 1.0);
  // Clear the color buffer with specified clear color
  gl.clear(gl.COLOR_BUFFER_BIT);
}

我們所要做的第一件事就是是獲取 canvas 的引用,把它儲存在 ‘canvas’ 變數裡。

當我們獲取到 canvas之後,我們會試著通過呼叫一個getContext 的函式並傳遞給它一個"webgl"字串來獲取WebGLRenderingContext。如果瀏覽器不支援webgl,getContext將會返回null,我們就可以顯示一條訊息給使用者然後退出。

 

如果WebGL上下文成功初始化,變數 ‘gl’ 會用來引用該上下文。在這個例子裡,我們將清除色設為黑色,然後用該顏色清除上下文。(用背景顏色重繪canvas)。