2016-02-16 20 views
0

我發現WebGL時混亂關閉時呈現奇怪的行爲。我轉載於this simplest tutorial。 只需更改字符串:奇怪的行爲,沒有在WebGL混合alpha

gl_FragColor = vec4(1.0,1.0,1.0,1.0); 至 gl_FragColor = vec4(0.0,0.0,0.0,0.5);

and gl.clearColor(0.0,0.0,0.0,1.0); 至 gl.clearColor(1.0,1.0,1.0,1.0);

因此,由於混合關閉,我應該看到白色背景上的黑色形狀(像素的alpha 0.5不應該產生影響)。但我看到白色背景上的灰色形狀。我相信我錯過了一些東西,但我無法承擔什麼。有任何想法嗎?

P.S. gl.disable(gl.BLEND)不會改變結果。

+0

可能發生的事情是,OpenGL在白色背景上呈現黑色形狀,因此RGB與您期望的完全相同,但它呈現的A通道對於黑色形狀爲0.5。 問題是,窗口系統如何將OpenGL的輸出與瀏覽器窗口合成?如果合成過程使用alpha通道進行混合,並且背景爲白色,那麼這可以解釋您所看到的灰色形狀。 – Columbo

回答

1

這基本上已經在這裏

Alpha rendering difference between OpenGL and WebGL

回答你看到的是WebGL的畫布上,默認情況下,混合與背景。無論是畫布的背景顏色還是小孩的背景顏色。 HTML的默認背景顏色是白色,所以如果您使用與白色網頁混合的50%阿爾法黑色的[0.0,0.0,0.0,0.5]進行繪製。

有關如何解決該問題,請參閱上面的鏈接。