为什么透明像素无法在WebGL中正确融合

问题描述 投票:0回答:1

我的代码结果:Weird

[基本上,问题是什么,我图像的透明部分未与之前绘制的图像正确融合。我知道我可以做[]

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。要点我正在画。如果更改两个图像在缓冲区中绘制的顺序,则不存在此问题。它们将在程序运行时动态旋转,因此这不是一个选择。

我的代码结果:基本上,问题是什么,我图像的透明部分无法正确地与之前绘制的图像融合在一起。我知道我可以在...

2d webgl transparency alpha blending
1个回答
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.