当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
)到一个字符串。
答案 0 :(得分:2)
简短的回答是,你不能。
WebGL仅通过gl.getError()
返回错误号。其余的只是浏览器添加的东西,以帮助开发人员找到他们的错误,因为他们已经必须对WebGL进行大量验证。