Just My Life & My Work

[WebGL] 初探 WebGL

目前在研究WebGL,根據WiKi的介紹:WebGL是一項在網頁瀏覽器呈現3D畫面的技術,有別於過往需加裝瀏覽器外掛程式,透過WebGL的技術,只需要編寫網頁程式碼,即可實現3D圖像的顯示,而它的程式碼會在GPU上執行。它是基於OpenGL ES繪圖的API,使用HTML5canvas元素,並以DOM (Document Object Model)作為存取介面,而Javascript會提供自動的記憶體管理。WebGL 1.0規格在2011/3/3釋出,算是相當新穎的技術,未來還有很多發展空間。

  1. 關於設置WebGL的執行環境
    目前使用Google Chrome 14.0Mozilla Firefox 6.0兩個瀏覽器來開發學習和開發WebGL,初步執行demo網頁後,發現兩者都可正常執行,但網頁放置一陣子後Firefox頁面上的demo區的影像會不見,重整後跳出無法支援的訊息,重開瀏覽器才恢復;而Chrome則是頁面被凍結(沒有執行WebGL的母分頁也會),出現在其它分頁的殘破影像,此時整個作業系統變得相當緩慢,唯有關閉該分頁(包含母分頁),重開瀏覽器才恢復。

    這是執行WebGL(learningwebgl.com)的頁面,但是過一陣子後,頁面呈現紊亂狀態,仔細觀察內容(台大課程網),是來自Firefox瀏覽器的某一頁面,但是目前是Chrome瀏覽器。

  2. 關於WebGL的缺陷
    目前WebGL有安全性的問題,資安公司Context指出,WebGL架構的瑕疵可能讓駭客擷取PC繪圖晶片中的記憶體資料,還可能發生DoS(阻斷服務攻擊),瀏覽器之後的版本先停用有問題的功能。
  3. 關於WebGL的撰寫
    透過Learning WebGL這個網站的Lesson來學習WebGL,它的Lesson1-4可以在live demo的頁面按右鍵另存新檔,將整個html檔和js檔一併儲存,接著點選儲存在本機上html檔,可見開啟後的畫面跟網頁上的live demo一模一樣。可在文字編輯器上撰寫程式碼,儲存後在頁面上按重整即可見到修改後的效果。
  4. 關於學習WebGL的前備知識
    需要瞭解基本的HTML、Javascript、OpenGL ES 2.0 (OpenGL 3.0)、OpenGL 2.x + GLSL。看了最簡單的範例程式碼,發現有許多script區塊,甚至有shader的程式碼,原來Open ES 2.0之後已經捨棄fixed function pipeline而使用programmable pipeline,所以在WebGL環境裡,必須自己編寫Vertex Shader和Fragment Shader,因而入門WebGL比學習OpenGL高。官方另有繼續發展1.x版的藍圖,藉以支援ow-end cell-phones到high-end gaming consoles。
  5. 關於WebGL的Demo網頁
    *http://code.google.com/p/webglsamples
    *http://www.khronos.org/webgl/wiki/Demo_Repository
    *http://spidergl.org/code.php
    觀察執行WebGL demo時GPU的狀態,我使用免費軟體OpenHardwareMonitor,發現沒有執行WebGL時,CPU Core和GPU Memory Controller只有一丁點活動,執行後便有顯著的表現。此外,轉移分頁到非WebGL頁面,活動便會停下來。

    過去寫shader,不曉得程式在GPU上的執行狀況,有了OpenHardwareMonitor後,就可以觀察哪些應用程式會用到GPU。

  6. 關於WebGL的tutorial教學
    *http://learningwebgl.com/
    一共有16個lesson,其教學靈感來自NeHe的OpenGL教學
    *http://www.khronos.org/webgl/wiki/Main_Page
    有詳盡的WebGL資源,包括文件、實做、展示等等。

參考:WiKiWebGLWebGL官方網站WebGL的維基百科Learning WebGLWebGL相關文章

隨意留個言吧:)~

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲