javascript - 有没有办法检测到 "Rats, WebGL hit a Snag?"

标签 javascript google-chrome webgl

我们知道某些人在我们的 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/

相关文章:

javascript - 二维缩放到 webgl 中的点

javascript - 使用帧缓冲区渲染到立方体贴图纹理

Javascript 某些方法嵌套在 For 中

javascript - AngularJS 从作用域创建新的作用域

javascript - JavaScript "Object"函数有什么作用?

javascript - 在 CoffeeScript 模块中导出对象的优雅方法是什么?

css - @media 查询不适用于移动设备。在 Chrome 中运行良好

javascript - 停止 Chrome 扩展中的内容脚本

html - <TD> 元素发明了额外的空间只是为了弄乱我的布局

three.js - Famo.us、Three.js 和 Clara.io