2012-07-19 57 views
1

我正試圖在黑色背景上繪製一個半透明的黑色三角形。WebGL blendFunc錯誤或誤解?

enter image description here

這裏是我的示例:http://codewithoutborders.com/posted/blend.html

的blendFunc設置並啓用(行151):

gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); 
gl.enable(gl.BLEND); 

緩衝區被清除黑色(行129):

gl.clearColor(0.0, 0.0, 0.0, 1.0); 
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 

着色器用半透明填充噸黑色(第10行):

gl_FragColor = vec4(0.0, 0.0, 0.0, .5); 

我期望的三角形是黑色,因爲該文檔指出

result = {foreground}*sourceAlpha + {background}*(1-sourceAlpha) 
     = (0,0,0,.5)*.5 + (0,0,0,1)*.5 
     = (0,0,0,.75) 

其是黑色,是嗎?

那麼灰色從哪裏來?

回答

2

(如何尷尬。回答我的問題張貼3分鐘後,但在此之前顯著脫髮)

灰色來自於HTML頁面的白色背景上顯示「衝」 3/4後通過透明的洞,儘管否則黑色的畫布。

加入

style="background:black;" 

的標籤解決了這個問題。

[GMAN的評論,下面,是一個更好的修復]

+3

您也可以在不使用的αcanvas.getContext(「實驗 - WebGL的」,{阿爾法:假})創建你的畫布; – gman 2012-07-19 16:04:17

+0

輝煌,謝謝! – Spongman 2012-07-19 17:09:33

相關問題