如何在webgl中设置半透明色?

时间:2011-12-14 19:33:52

标签: javascript html5-canvas webgl

我在本教程中重点介绍了对象颜色:http://learningwebgl.com/blog/?p=134

此代码将创建一个红色方块:

squareVertexColorBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexColorBuffer);
colors = []
for (var i=0; i < 4; i++) {
  colors = colors.concat([1.0, 0.0, 0.0, 1.0]);
}
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(colors), gl.STATIC_DRAW);

它可以工作,但如果我将代码修改为:

colors = colors.concat([1.0, 0.0, 0.0, 0.5]);

然后物体不是半透明的,它是粉红色的。我不知道,为什么它是粉红色的。由于绿色背景,对象颜色应该在绿色和粉红色之间:

gl.clearColor(0.0, 1.0, 0.0, 1.0);
gl.enable(gl.DEPTH_TEST);

1 个答案:

答案 0 :(得分:2)

听起来你可能没有启用混音。尝试在初始化代码中添加以下行:

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

看看你是否得到了不同的结果。混合模式可能不是您想要的,但它至少应该告诉您它是否正常工作。

要更深入地了解混合,请查看Learning WebGL Lesson 8