Javascript WebGL:以字符串形式获取错误/警告消息文本
当WebGL中发生错误时,浏览器控制台中通常会显示警告消息 例如,尝试创建过大的纹理:Javascript WebGL:以字符串形式获取错误/警告消息文本,javascript,runtime-error,webgl,Javascript,Runtime Error,Webgl,当WebGL中发生错误时,浏览器控制台中通常会显示警告消息 例如,尝试创建过大的纹理: gl.texImage2D( gl.TEXTURE_2D, // target 0, // level gl.RGBA, // internalformat 1000000, // width 1000000, // height 0,
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错误,因此不可能捕获它们以获取它们的消息
属性
仅返回ErrorCode
枚举值,例如无效的\u值
仅提供与特定着色器相关的错误消息(例如编译错误)
仅提供与特定程序相关的错误消息(例如链接错误)
Khronos已经创建了一个名为
WebGLDebugUtils
,但似乎与错误消息相关的唯一方法是glEnumToString()
,它将枚举值(例如无效值
)转换为字符串。简而言之,您不能
WebGL仅通过gl.getError()
返回错误号。剩下的只是浏览器添加的东西,以帮助开发人员发现错误,因为他们已经需要对WebGL进行大量验证
也许你应该。非常感谢。我注意到,对于某些错误(例如,试图渲染不符合要求的NPOT纹理),控制台中会记录一条警告消息(无法通过编程获得),并且
gl.getError()
返回无错误
。我想这就是你所说的开发人员“必须进行大量验证”的意思吧?由于WebGL可能会默默地无法渲染NPOT纹理,因此开发人员有责任在尝试渲染它之前验证NPOT纹理是否满足要求?是的,规范OpenGL ES规范说这在技术上不是一个错误,但这是一个很难找到的问题。WebGL实现无论如何都必须进行检查,这样他们就不会让较新版本的GL允许ES 2.0不允许的东西(否则就无法跨浏览器工作),所以。。因为他们已经在检查了,所以他们可以为你打印一条警告。