[基本上,问题是什么,我图像的透明部分未与之前绘制的图像正确融合。我知道我可以做[]
if(alpha<=0){discard;}
在片段着色器中,唯一的问题是我计划拥有大量片段,并且不希望移动设备上每个片段的if语句。
这是我的与alpha和深度测试有关的代码:
var gl = canvas.getContext("webgl2",
{
antialias : false,
alpha : false,
premultipliedAlpha: false,
}
);
gl.enable(gl.BLEND);
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
gl.enable(gl.DEPTH_TEST);
gl.depthFunc(gl.GREATER);
而且,这些都是纹理化的gl。要点我正在画。如果更改两个图像在缓冲区中绘制的顺序,则不存在此问题。它们将在程序运行时动态旋转,因此这不是一个选择。
我的代码结果:基本上,问题是什么,我图像的透明部分无法正确地与之前绘制的图像融合在一起。我知道我可以在...