【发布时间】:2012-11-01 20:05:21
【问题描述】:
我有一个 WebGL / Three.js 游戏,当使用 ANGLE 提供 WebGL 时,它有一个无用的着色器程序链接错误。我想在主页上向 ANGLE 用户(但不是其他人)显示一个突出的警告,以及显示切换到本机 OpenGL 渲染器的说明。如果用户不切换到本机 GL,我还想自动禁用有问题的功能(阴影)。
Three.js 没有提供检测着色器故障的好方法,我不知道如何检测 ANGLE,所以我目前正在考虑使用这个近似值:
IF Windows AND ( Chrome OR Firefox ) THEN displayWarning()
有更好的想法吗?
【问题讨论】:
-
我知道这很糟糕,但目前我会 (1) 尝试更改着色器以解决该错误 (2) 检查 Chrome Canary 是否修复了该错误 (3) 在 @ 提交错误987654321@ 或 code.google.com/p/angleproject/issues 带有 small 可重现的情况。告诉用户切换到 OpenGL 还有其他更大的问题。 Firefox 和 Chrome 都需要 DirectX 来实现视频加速和/或 2D 文本加速等其他功能,因此如果您告诉用户切换到 OpenGL,您的应用程序可能会运行得更快,但您的用户通常会有更糟糕的体验。最好只是推动尽快修复 ANGLE。
-
@gman 我不能/不想直接更改着色器,因为它是内部 Three.js 材料,但正如我所说,我将关闭一些基于用户的功能关于这个问题的答案。生成一个 small 测试用例很难,因为 three.js 的着色器很大,我现在至少需要临时工作。我看不出将 OpenGL 用于 WebGL 会如何阻止浏览器将 DirectX 用于其他事情。由于主要使用 ANGLE,因为 DX9 驱动程序比 OpenGL 2.1 驱动程序更常见,我猜如果用户可以运行我的游戏,那么任何其他 WebGL 内容也可以。
-
因为 DirectX 和 OpenGL 不能轻易混合使用,所以如果你想同时使用加速视频和加速文本以及 WebGL,所有它都必须基于 DirectX。
标签: javascript firefox google-chrome webgl three.js