2010-12-03 162 views
6

是否可以使用WebGL從頂點着色器中讀取紋理?WebGL:頂點着色器中的紋理訪問?

我寫了一個WebGL page(只是爲了試試),並使用Chrome 7進行測試。一旦我升級到Chrome 8,它就停止工作。我再次檢查webgl已啓用。錯誤是:

「的Texture2D」:沒有匹配的重載函數發現

當我更換調用的Texture2D以恆定的,它的工作原理。 使用相同紋理的片段着色器中的紋理訪問也適用。

任何人有任何想法?我特別感慨的是,升級Chrome導致其中斷。

更新:它工作在Firefox 4測試版。我報道了瀏覽器的錯誤 - 問題65340

更新2:現在在Chrome在Firefox和Chrome

+0

我認爲這可能是一些實現的限制。 – andrewmu 2010-12-03 20:23:11

+0

我懷疑這是故意的。這會限制很多技術(例如位移映射)。 – sharoz 2010-12-03 21:17:19

回答

5

它不是一個真正的 '錯誤'。

頂點紋理訪問不是OpenGL ES 2的必需特性,它是WebGL規範的基礎。我懷疑可能發生的事情是,雖然您的底層GL驅動程序支持頂點紋理訪問,但現在您已經使用Angle切換到Chrome,並且Angle不會將頂點紋理訪問報告爲可用。

您可以通過比較你的FF和Chrome版本撒切爾Ulrich的

http://webgl-bench.appspot.com/

這有MAX_VERTEX_TEXTURE_IMAGE_UNITS參數(接近尾聲)的Chrome /角度始終報告0.t

另一件事檢查是你使用的是正確的texture2D語法 - 規範發生了變化,可能FF是stil支持較老的語法。

+0

該網站是偉大的。謝謝。 它實際上在Chrome 7中工作(我試圖降級)。任何想法爲什麼他們會放棄這個功能?阻止硬件的功能有什麼好處嗎? – sharoz 2010-12-06 04:09:02

2

它想評論,但我沒有聲望。

正如alanatmech所說,它可能與Angle有關,它將所有GL調用轉發到DirectX。 因此,它不是一個功能下降和好處是,沒有OpenGL驅動程序的Windows機器上的WebGL支持。

您可以嘗試使用「--use-gl = desktop」運行Chrome,因此它將使用OpenGL渲染後端而不是Angle。 您的網站在Chrome 8.0.552.215測試版中不適用於我,但它不會提供您提到的錯誤,我在Chrome 9.0.597.10金絲雀版上得到的錯誤信息與Minefield上的標誌位無關。

相關問題