2013-07-20 53 views
2

我正在webGL中工作。我對OpenGL相當陌生。混合功能遇到問題。我的選擇是這樣的:OpenGL混合呈現灰黑色的黑色?

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

我渲染上的目標的背景顏色[0,0,0,1]的頂部顏色[0,0,0,0.5]源矩形。根據我讀過的所有內容,我預計結果是黑色的。相反,它看起來約爲25%的白色。這是我在渲染red and black rectangles with alpha values ranging from 0.0 to 1.0時得到的結果。

View live demo and source here。我誤解了混合功能,如果是這樣,我如何得到我所期望的?謝謝!

+3

[在WebGL的HTML背景融合]的可能重複(http://stackoverflow.com/questions/11521035/blending-with-html-background- in-webgl) –

+0

是的,就是這樣!它將畫布本身設置爲透明,呈現背景顏色。我可以通過將畫布樣式設置爲'background:black'來修復它。謝謝! – Cosmologicon

回答

0

你應該爲阿爾法指定單獨的函數:

gl.enable(gl.BLEND); 
gl.blendEquation(gl.FUNC_ADD); 
gl.blendFuncSeparate(
    gl.SRC_ALPHA, 
    gl.ONE_MINUS_SRC_ALPHA, 
    gl.ONE, 
    gl.ONE_MINUS_SRC_ALPHA 
);