老鼠! WebGL遇到了麻烦 - 如何调试?

时间:2016-04-20 07:05:05

标签: javascript google-chrome debugging canvas webgl

调用canvas.getContext("webgl");让Chrome触发“Rats!WebGL遇到障碍”消息,并且不会提供任何信息。我该如何解决这个问题?

我没有收到canvas.getContext("webgl")返回null以外的其他信息我甚至不知道如果我自己没有使用该设备,则Chrome会失败并显示占用手机屏幕25%的消息因为这不会触发错误。

这是一个函数的一部分,该函数应该通过创建新画布并获取webGL上下文来测试WebGL是否受支持:

var webGLIsSupported = function() {
  if (typeof window.webGLIsSupported !== 'undefined') {return window.webGLIsSupported;}

  var canvas = $('<canvas></canvas>')[0];
  var ctx;
  try {
    ctx = canvas.getContext('webgl'); // <- this triggers the message, and fails
  }
  catch (e) {
    window.webGLIsSupported = false;
    return false;
  }
  window.webGLIsSupported = !!ctx;
  return window.webGLIsSupported;
};

哪里可以开始获取有关哪些内容无效的信息?没有任何日志是非常令人沮丧的。

canvas.getContext('webgl')更改为canvas.getContext('experimental-webgl')没有任何区别。

我在Samsung S6上运行Chrome 49.0.2623.105。

1 个答案:

答案 0 :(得分:1)

正如您所注意到的,检查null是一种了解上下文创建是否成功的方法。但是当你只检查它时,没有关于“为什么”的信息。

实际上有一个事件应该用于此目的:webglcontextcreationerror

它包含一个statusMessage属性,它可以为您提供有关创建上下文失败的“原因”的更多信息。

来自MDN:

canvas.addEventListener("webglcontextcreationerror", function(e) {
  console.log(e.statusMessage || "Unknown error"); 
}, false);

但是,我不知道你能否对你得到的信息采取任何行动......