2012-02-14 98 views
1

我想用webGL着色器做一些渲染,但是我需要讀取由前一幀着色器生成的數據數組。我正在使用着色器寫入紋理並使用相同的着色器讀取該紋理。但是,這不起作用。着色器可以從最後一幀讀取紋理並完美地寫入幀緩衝區,但它不能再次寫入紋理。我也嘗試將紋理複製到其他圖像單元,但它也不起作用。我想知道是否對webGL的紋理有任何限制,您無法在同一着色器中進行讀/寫操作?或者我做錯了什麼?WebGL紋理同時讀取/寫入

由於提前, 易

回答

5

從常見的錯誤在http://www.opengl.org/wiki/GLSL_:_common_mistakes: 「通常情況下,你不應該品嚐的紋理和渲染到相同的紋理,同時這將使你未定義行爲只是有可能。在某些GPU上工作,並且使用某些驅動程序版本,但不是其他版本。「

改用兩個紋理採用乒乓方式(下面的教程是OpenGL的,但使用的WebGL技術應該是直線前進):

http://www.mathematik.tu-dortmund.de/~goeddeke/gpgpu/oldstuff/HelloPingPong.pdf

+0

感謝您的答覆。我想知道如果webGL支持不同的顏色緩衝區。但我試圖通過使用glBindTexture將紋理複製到兩個圖像單元。所以着色器從一個單元讀取紋理並寫入另一個單元,但是,它不起作用。有沒有人知道這是否可行? – 2012-02-14 18:15:37

+1

不是,這是不可行的。你需要使用乒乓方法。 Hre是一個從它剛寫到http://webglsamples.googlecode.com/hg/persistence/persistence.html的紋理中讀取的樣本,並且有一個關於它的視頻http://www.youtube.com/watch?v= rfQ8rKGTVlg#噸= 31m42s – gman 2012-02-14 22:56:49