我在本教程中重点介绍了对象颜色: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);
答案 0 :(得分:2)
听起来你可能没有启用混音。尝试在初始化代码中添加以下行:
gl.enable(gl.BLEND);
gl.blendFunc(gl.SRC_ALPHA, gl.ONE);
看看你是否得到了不同的结果。混合模式可能不是您想要的,但它至少应该告诉您它是否正常工作。
要更深入地了解混合,请查看Learning WebGL Lesson 8。