我们知道某些人在我们的 WebGL 应用程序中出现了“Rats”错误。我们不完全知道为什么。我们确实要求他们报告他们拥有的硬件配置。似乎没有相应的错误记录到我们的 javascript 日志系统。因此,我们的假设是 WebGL 错误主要被控制台抑制。因此,我们无法检测到“Rats”类型的错误。
我们有一个针对非 webgl 驱动的浏览器的回退策略,但要在“老鼠”情况下激活它,我们需要知道发生了“老鼠”。我们怎样才能做到这一点?
最佳答案
您应该能够通过检查 webglcontextlost
事件来检测它
canvas.addEventListener("webglcontextlost", reportRats);
如果你想尝试处理自动恢复,你也可以这样做
canvas.addEventListener("webglcontextlost", function(e) {
// prevent the default (the default is don't recover)
e.preventDefault();
});
要处理恢复,当浏览器决定恢复 WebGL 上下文时,您需要检查 webglcontextrestored
事件
canvas.addEventListener("webglcontextrestored", function(e) {
// recreate all WebGL resources
});
至于报告,至少在 Chrome 中您还可以使用 the WEBGL_debug_renderer_info
extension 检查 GPU/驱动程序.显然,谷歌地图使用它来不在某些支持 WebGL 的旧 GPU/驱动程序上使用 WebGL,但对于谷歌地图来说显然太慢了,这在他们的分析中出现了。
关于javascript - 有没有办法检测到 "Rats, WebGL hit a Snag?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39541082/