反正有没有检测到"老鼠,WebGL遇到了障碍?"

Par*_*ris 3 javascript google-chrome webgl

我们知道有些人在我们的WebGL应用程序中出现"老鼠"错误.我们不知道为什么.我们确实要求他们报告他们的硬件配置.似乎没有相应的错误记录到我们的javascript日志记录系统.因此,我们的假设是WebGL错误主要是从控制台中被抑制的.结果,我们无法检测"Rats"类型错误.

对于非webgl驱动的浏览器,我们有一个后备策略,但要在"大鼠"情况下激活它,我们需要知道发生了"老鼠".我们怎么做?

gma*_*man 6

您应该能够通过检查webglcontextlost事件来检测它

canvas.addEventListener("webglcontextlost", reportRats);
Run Code Online (Sandbox Code Playgroud)

如果您想尝试处理自动恢复,您也可以这样做

canvas.addEventListener("webglcontextlost", function(e) {
   // prevent the default (the default is don't recover)
   e.preventDefault(); 
}); 
Run Code Online (Sandbox Code Playgroud)

要处理恢复,如果浏览器决定恢复WebGL上下文,则需要检查webglcontextrestored事件

canvas.addEventListener("webglcontextrestored", function(e) {
   // recreate all WebGL resources
}); 
Run Code Online (Sandbox Code Playgroud)

至于报告,至少在Chrome中,你也可以通过检查的GPU /驱动器WEBGL_debug_renderer_info扩展.显然谷歌地图使用它不在某些支持WebGL的旧GPU /驱动程序上使用WebGL,但对于显示在其分析中的Google Maps来说显然太慢了.