我正在尝试为我的游戏实施webgl。问题是我使用了多个画布,而我的webgl启用的画布在我的地形画布上是半透明的(它被绘制一次,只是随玩家移动)。这是一张图片:
我在google上搜索了过去2个小时,但找不到任何有帮助的内容。
我试过了:
getContext("experimental-webgl",{alpha: false});
这只是完全隐藏了地形(现在全黑),但我的webgl绘制的对象具有正确的颜色。
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);
gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, false);
这些都没有引起任何注意。
gl.clearColor(0, 0, 0, 0)
没有影响结果,仍然看起来像上面的截图。
此处的其他所有内容:http://games.greggman.com/game/webgl-and-alpha/
似乎没什么用。为什么画布上画的是半透明的?没有影响canvas元素的CSS。
答案 0 :(得分:0)
想出来!我正在使用WebGL-2D,这是一个将context2D API添加到webGL的javascript文件。因此,如果我调用drawImage,它实际上使用webgl来处理它。在getContext定义中,我不得不改变:
gl.colorMask(1,1,1,0);
到
gl.colorMask(1,1,1,1);
colorMask()方法指定是否可以将红色,绿色,蓝色和alpha写入帧缓冲区。
我不知道之前为什么它是0。