2012-01-23 47 views
3

我正在渲染多個渲染目標的多邊形場景,以便我可以執行後處理效果。但是,我在片段着色器中設置的值似乎並未在像素着色器中準確反映出來。WebGL渲染緩衝區接收來自着色器的傾斜像素值

眼下管道看起來像這樣:

  • 渲染基本多邊形(使用簡單的着色器,下同)到中間緩衝器
  • 渲染緩衝器作爲屏幕尺寸的四到屏幕上。

我使用WebGL Inspector(http://benvanik.github.com/WebGL-Inspector/)查看中間緩衝區(使用gl.createFrameBuffer()創建)。

我有一個非常簡單的片段着色器繪製多邊形,這樣的事情時:

gl_FragColor = vec4(1, 0, 0, 0.5); 

而且這是我在繪製之前調用:

gl.disable(gl.BLEND); 

我希望在此打造一個像素(255,0,0,128)的緩衝區,但事實上,它會創建一個值爲(255,0,0,64)的像素 - 爲預期值的一半。

該程序相當龐大,因此如果答案不是立即顯現的話,我會更新具體細節的帖子。

謝謝!

+0

你怎麼知道那個像素的alpha值是多少?你在畫什麼,你正在寫這個像素值。 –

+0

恐怕我們可能需要更多的信息,但有一個想法立即跳出來:您是否啓用了抗鋸齒功能?如果是這樣,並且您正在採樣的像素位於多邊形的邊緣,則最終可能會混合爲低於預期的值。 – Toji

+0

@NicolBolas:我已經直接使用WebGL Inspector檢查了像素的值,在最終渲染中對其屏幕上的值進行了採樣,並且還要觀察其在後續處理步驟中的行爲。該值正從上面簡單的片段着色器的簡單多邊形繪製到幀緩衝區,然後該幀緩衝區將呈現到屏幕緩衝區。 – Ipsquiggle

回答

1

您是否將premultiplyAlpha設置爲true?擺弄這個是首先想到的:怪異的alpha值。

+0

我期望這會與RGB值,而不是A值,但我願意檢查出來。 – Ipsquiggle

相關問題