WebGL:将错误/警告消息文本作为字符串获取

时间:2014-10-16 08:48:04

标签: javascript runtime-error webgl

当WebGL中发生错误时,通常会在浏览器的控制台中显示警告消息。

例如,尝试创建一个太大的纹理:

gl.texImage2D(
    gl.TEXTURE_2D,     // target
    0,                 // level
    gl.RGBA,           // internalformat
    1000000,           // width
    1000000,           // height
    0,                 // border
    gl.RGBA,           // format
    gl.UNSIGNED_BYTE,  // type
    null               // data
);

Chrome和Safari会在控制台中显示此警告消息:

WebGL: INVALID_VALUE: texImage2D: width or height out of range

Firefox会显示以下警告消息:

Error: WebGL: texImage2D: the maximum width for level 0 is 4096

如何以编程方式从WebGL获取此消息?

我正在寻找类似gl.getErrorMessage()的东西,它会返回一个字符串。

我尝试了什么

WebGL错误不会引发JavaScript错误,因此无法catch他们获取message属性。

gl.getError()仅返回ErrorCode枚举值,例如INVALID_VALUE

gl.getShaderInfoLog()仅提供与特定着色器相关的错误消息(例如编译错误)。

gl.getProgramInfoLog()仅提供与特定程序相关的错误消息(例如,链接错误)。

Khronos创建了一个名为WebGLDebugUtils的{​​{3}},但似乎与错误消息相关的唯一方法是glEnumToString(),它会转换枚举值(例如INVALID_VALUE)到一个字符串。

1 个答案:

答案 0 :(得分:2)

简短的回答是,你不能。

WebGL仅通过gl.getError()返回错误号。其余的只是浏览器添加的东西,以帮助开发人员找到他们的错误,因为他们已经必须对WebGL进行大量验证。

也许你应该propose a WebGL extension for it