WebGL透明黑色

时间:2010-12-08 15:32:19

标签: transparency shader webgl

我有一个奇怪的问题,在尝试在WebGL中进行混合时我无法弄清楚。黑色呈现完全透明,其中带有灰色阴影的所有内容也呈现为半透明。我已经将它设置为使用alpha通道作为透明度的来源,并且在某些方面它起作用,在更改alpha值时,每个非黑/灰的东西都会以不同方式呈现。但即使我将alpha设置为1,黑色仍然显示为透明。

这就是我启用透明度的方法:

this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE);
this.gl.enable(this.gl.BLEND);
this.gl.disable(this.gl.DEPTH_TEST);

着色器的透明部分:

   gl_FragColor = vec4(texColor.rgb * vLightWeight, texColor.a * uAlpha);

其中texColor是正在采样的纹理颜色,vLightWeight是在顶点着色器中计算的阴影,而uAlpha是我用于透明度的均匀颜色。

1 个答案:

答案 0 :(得分:3)

我认为你应该 gl.ONE_MINUS_SRC_ALPHA ,你当前有 gl.ONE


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

相关问题