javascript - Webgl 在 ios safari 上没有 alpha 背景通道
问题描述
我在我的页面上设置了一个 webgl 画布,并在启动时使用了这些参数:
gl = canvas.getContext("webgl", {
alpha: true,
premultipliedAlpha: false
});
然后我做了所有的设置工作来制作一个程序,一个顶点着色器和一个片段着色器。
我的顶点着色器只给了我一个二维绘图表面,我的片段着色器看起来像这样:
void main(void) {
gl_FragColor = vec4(1.0, 1.0, 1.0, 0.1);
}
所以基本上我要做的就是在页面上绘制一个透明的白框。这适用于我测试过的所有浏览器,除了 safari/ios。在 safari 中,盒子是全白的,看不到透明度。
这是带有蓝色页面背景的并排屏幕截图:
我应该设置其他参数来完成这项工作吗?还是 ios 的行为与其他浏览器不同?
更新:如果我在调用片段着色器后运行清除颜色命令(意味着着色器输出被擦除并替换为清除颜色),则 webgl 画布是透明的。
gl.clearColor(0.0, 0.0, 0.0, 0.1);
gl.clear(gl.COLOR_BUFFER_BIT);
然而,除了制作纯色半透明颜色之外,这并没有让我做太多事情。我希望在片段着色器本身中进行可变透明度。
解决方案
推荐阅读
- android - 使用分页库更新单个元素的最佳方法
- php - ZF3 中的 Zend_Locale() 替换
- html - 根据 C++ 中产生的随机数的值产生一个 Html RGB 值
- javascript - 在一页中运行多个 Angular 应用程序
- java - 从过滤器访问 UserDetails (Spring)
- mysql - MySQL - 选择 JSON 密钥对值的数据
- python - 如何使用python条带支付确认支付访问网页
- javascript - 使用 NGINX 时无法在 Node.js 下使用 AJAX 发出 GET 请求
- mysql - 在 MySql 中创建一个 ID 为 CHV18000002 的列
- python - TypeError: can't pickle cv2.xfeatures2d_SIFT objects(在使用 joblib.Parallel 期间发生)