Kri*_*abó 4 debugging webgl dart
我已经开始使用Dart和WebGL编写一些技术演示和测试,但我似乎无法弄清楚如何在Dart中调试WebGL.
Markus Notch(Minecraft的创造者)在抽搐时有一个直播,他也用Dart和WebGL编写了他的游戏,但是每当他搞砸了一些东西时,他在WebGL的控制台上都会出现错误记录并记录错误.例如,请查看1:13:30.可悲的是,我找不到在他的代码中进行调试的部分.
当然我可以使用getShaderParameter()和检查我的着色器中getProgramParameter()的错误然后使用适当的getInfoLog()方法获取错误日志,但是对于常规调试(例如检查INVALID_ENUM错误)我可以将错误作为整数获取getError()但不能将其转换为枚举,错误消息或任何人工可读的调试信息.
我试图查看web_gl.dart源代码,但在其中找不到任何允许调试的内容.
任何帮助将非常感谢.
编辑:基于Notch的答案Chromium(可能)会自动记录这些错误.但不适合我,在Chromium控制台为空时gl.getError()报告错误1280.:(
编辑2:找到解决方案,看看我的答案.
编辑:我完全误解了这个问题.忽略这个答案.
对于着色器(顶点和片段):
gl.compileShader(shader);
boolean isCompiled = gl.getShaderParameter(shader, WebGL.COMPILE_STATUS);
if (isCompiled == false) {
String compileLog = gl.getShaderInfoLog(shader);
// Display the compile log
}
Run Code Online (Sandbox Code Playgroud)
对于链接程序:
gl.linkProgram(program);
bool isCompiled = gl.getProgramParameter(program, WebGL.LINK_STATUS);
if (isCompiled == false) {
String linkLog = gl.getProgramInfoLog(program);
// Display the link log
}
Run Code Online (Sandbox Code Playgroud)
在某些硬件上,如果没有错误,着色器信息日志和程序信息日志将为空字符串,但您不能依赖此行为.
好的,所以我实际上找到了答案,而且非常明显.
Notch是对的:Chromium会自动报告WebGL错误.但是,它会在一段时间(" WebGL: too many errors, no more errors will be reported to the console for this context.")之后停止记录它们,因为我每次都记录东西,我的控制台很快就填满了我自己的信息,将Chromium的日志推到最顶层,甚至删除它们(不确定)调试控制台最多可以存储多少行,但我记得几次滚动到顶部并且我从未见过Chromium的报告.
快速启动和停止应用程序显示了该信息.
一定要喜欢这种错误.叹
| 归档时间: |
|
| 查看次数: |
1038 次 |
| 最近记录: |