当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
,但似乎唯一与错误消息相关的方法是glEnumToString()
,它将枚举值(例如INVALID_VALUE
)转换为字符串。
简短的答案是,您不能。
WebGL仅通过返回错误号gl.getError()
。剩下的只是浏览器添加的东西,它们可以帮助开发人员发现错误,因为他们已经必须对WebGL进行大量验证。
也许您应该为此提出一个WebGL扩展。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句