【发布时间】:2012-08-05 22:48:21
【问题描述】:
我正在尝试跨多个浏览器检测 WebGL 支持,但遇到了以下情况。即使访问者的视频卡被列入黑名单和/或 WebGL 被禁用,当前版本的 Firefox 似乎也使用以下检查报告了积极的支持:
if (window.WebGLRenderingContext) {
// This is true in Firefox under certain circumstances,
// even when WebGL is disabled...
}
我已尝试指导我的用户使用以下步骤启用 WebGL。这在某些情况下有效,但并非总是如此。显然,这不是我可以向公众要求的:
- 在 Firefox 的地址栏中输入 about:config
- 要启用 WebGL,请将 webgl.force-enabled 设置为 true
这导致我创建了自己的检测支持的方法,它使用 jQuery 注入一个画布元素来检测支持。这借鉴了我在各种 WebGL 库和插件中发现的许多技术。问题是,测试非常困难(非常感谢任何关于以下链接是否适合您的 cmets!)。为了使这个问题成为一个客观的问题,我想知道是否有一种普遍接受的方法来检测所有浏览器对 WebGL 的支持。
测试网址:
【问题讨论】:
-
eek,我不知道除了
experimental-webgl之外还有更多方法可以获取 webgl 上下文,感谢您指出这一点。 -
你的方法很难测试是什么意思?您是否担心它会产生误报/误报?在我看来,如果您要求 webgl 上下文但没有得到,那么您的应用程序将无法继续。除非我错过了什么?
-
@MattGreer,很难找到具有 Firefox 和黑名单视频卡和/或不受支持的图形的特定组合的测试机器。具体来说,我试图找出在什么情况下我的测试方法会在最新版本的 Firefox 中返回“false”。
-
啊,好的。对于它的价值,我有一个基于 webgl 的小网站,并且我有几台机器因 Firefox 而失败。似乎 2009 年左右的机器出现故障(对不起,我没有比这更好的数据了)。我也总是可以通过在 VirtualBox(OSX 作为主机)的 Windows 中运行 Firefox 来让 Firefox 失败,VirtualBox 的 3D 加速支持很弱。
-
仅仅检测到 WebGL 支持并不意味着它会有任何好处。 WebGL 可以通过“swiftshader”进行模拟,或者,对于 Linux 上的 Firefox,它可以部分或完全通过“mesa 3D”进行模拟。由于 Mesa 可以很好地加速 2D,因此即使 WebGL 似乎可用,手动选择画布也是有意义的。
标签: javascript jquery firefox cross-browser webgl