0.webgl初識

WebGL是什麼呢?

WebGL其實就是JavaScript的API.
它允許了我們直接在瀏覽器上展示實時交互的3D圖形。
WebGL是一個被Khronos小組開發的web標準,其中
Opera與Google(Chrome)、Mozilla(Firefox)、Apple(Safari)和其他3D圖形開發人員一起積極參與。
webgl作爲html元素的特定上下文運行,這使您可以訪問javascript中的硬件加速3d渲染。
因爲它運行在元素中,webgl還與所有dom接口完全集成。該api基於opengl es 2.0,這意味着可以在許多不同的設備上運行webgl,如臺式計算機、移動電話和電視。您可以在KHRONOS站點查看WebGL規範。

如何運行WebGL?

  • Opera12.00 或者更高版本
  • Chrome 9或者更高版本,在linux,Mac和windows
  • Firefox4或者更高的版本
  • Safari5.1或者更高的版本
    此外好的顯卡可能回提高WebGl的性能。

WebGL用來幹什麼?

![Alt text][https://dev.opera.com/articles/introduction-to-webgl-part-1/webgl.jpg]

  • 交互式音樂視頻
  • 遊戲
  • 數據可視化
  • 藝術
  • 3D設計環境
  • 空間3D建模
  • 繪製數據函數
  • 創建物理模擬

WebGL是怎麼工作的?

webglbii傳統的web技術複雜一點,因爲它是直接使用顯卡而設計的。
所以,這是比較底層的。這樣就使得了他可以快速進行復雜的三維渲染,
包括大量計算。

你不需要完全理解webgl的內部工作原理。有幾個webgl庫可以用於減少其的複雜性。
然而你想用這些庫中不包含的特性的時候,瞭解webgl其實更有必要。或者你想更深入瞭解
掌握這門技術,知道這些庫咋實現的。這時候就有必要了解了解webgl內部工作原理了。

在webgl中編程時,通常要渲染某種場景。這通常包括多個後續繪製作業或“調用”,每個都是通過一個稱爲渲染管線的過程在Gpu中執行的。

在webgl中,與大多數實時3d圖形一樣,三角形是繪製模型的基本元素。因此,在webgl中繪圖的過程涉及到使用javascript生成指定這些三角形將在何處以及如何創建,以及它們的外觀(顏色、陰影、紋理等)的信息。然後,這些信息被輸入gpu,gpu對其進行處理,並返回場景的視圖。接下來我們將更詳細地瞭解最後一點是如何發生的。

webGL渲染管線,此處略去,後續詳解

我們怎麼開始使用WebGL

首先要做的是獲得一個支持webgl的瀏覽器。您可以使用您喜愛的javascript開發環境對webgl進行編碼。
我們這裏使用vscode的是vscode
如果要是做項目的話,我建議使用webgl的庫。
因爲直接調用webgl API很辛苦,它很底層。
設計webgl的人爲什麼這麼設計呢,這是爲了保持它的靈活性,通用性。
他們想的是別人的庫會增加便利性,加速簡化開發

大多數庫都提供了現成的模型、頂點着色器和片段着色器的選擇,它們可以極大地減少需要編寫的代碼量。如果你仍然不相信,可以看看一個月球三維模型的例子代碼-有一個庫,沒有一個庫。即使您只是簡單地看一下,代碼的長度和複雜度的差異也是顯而易見的,這是使用庫的一個很好的理由。

有許多webgl庫。大多數人所做的是在WebGL的基礎上創建對3D環境直觀的元素,如場景、相機、光源、環境光、現成的形狀、材質、紋理和效果(如霧和浮動粒子)。這些元素的概念在各個庫中幾乎保持不變。但是,它們的使用方式取決於庫的體系結構。因爲webgl可以是交互式的,所以大多數庫也提供了處理事件的簡單方法。最後,大多數庫還提供了一些頂點和片段着色器。

選擇一個WebGL的庫

1.Three.js (Github)是一個輕量級的3d引擎,複雜度非常低——這是一個很好的方法。引擎可以使用、和webgl進行渲染。這是一些關於如何開始的信息,其中對場景中的元素有很好的描述。下面是three.js api文檔。就用戶數量而言,three.js也是最受歡迎的webgl庫,因此如果你陷入困境,可以指望一個熱情的社區(irc.freenode.net上的three.js)來幫助你。

2.PhiloGL (Github)

3.GLGE (Github)

4.3D (Github)


查看WebGL源碼

總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章