Webgl 在 ios safari 上没有 alpha 背景通道

YAH*_*ves 7 javascript alphablending webgl

我在页面上设置了一个 webgl 画布,并在启动时使用了这些参数:

gl = canvas.getContext("webgl", {
  alpha: true,
  premultipliedAlpha: false
});
Run Code Online (Sandbox Code Playgroud)

然后我做了所有的设置工作来制作一个程序、一个顶点着色器和一个片段着色器。

我的顶点着色器只给我一个 2d 绘图表面,我的片段着色器如下所示:

void main(void) {
    gl_FragColor = vec4(1.0, 1.0, 1.0, 0.1);
}
Run Code Online (Sandbox Code Playgroud)

所以基本上我想做的就是在页面上绘制一个透明的白色框。这适用于我测试过的所有浏览器,除了 safari/ios。在 safari 中,盒子是全白色的,看不到透明度。

这是蓝色页面背景的并排屏幕截图:

在此输入图像描述

我是否应该设置其他参数才能使其正常工作?或者ios与其他浏览器有不同的行为吗?

更新:如果我在调用片段着色器后运行清除颜色命令(意味着着色器输出被擦除并替换为清除颜色),则 webgl 画布是透明的。

 gl.clearColor(0.0, 0.0, 0.0, 0.1);
 gl.clear(gl.COLOR_BUFFER_BIT);
Run Code Online (Sandbox Code Playgroud)

然而,除了制作纯色半透明颜色之外,这并不能让我做太多事情。我希望在片段着色器本身中实现可变透明度。