我正在尝试了解如何在用GLSL编写的webgl着色器中模拟console.log。很容易收到错误消息,但我无法获得如何打印自定义消息。
基本上我想在浏览器的控制台中打印东西:
<script id="shader-fs1" type="x-shader/x-fragment">
void main(void)
{
//console.log doesn't work here since it's GLSL not javascript
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
}
</script>
有什么建议吗?
答案 0 :(得分:5)
编译着色器后,您可以执行以下操作:
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
alert(gl.getShaderInfoLog(shader));
}
它会在编译期间显示任何错误消息。 GLSL不能以任何其他形式将数据发送回程序,而是帧缓冲/纹理,因此您只能通过检查输出颜色来检查发生了什么。 正如迈克尔指出的那样,WebGL检查员可能对我很有用,但对着色器来说并不是那么多,而是用于webGL应用程序的一般调试
答案 1 :(得分:3)
不确定是否可以,但您可能需要查看the WebGL Inspector library以进行调试。
答案 2 :(得分:2)
目前,除了通过它的目的结果(屏幕/图像颜色)之外,没有已知的方法从WebGL中的GLSL输出数据。 除非您已经这样做,否则我建议您查看Learning WebGL,kick.js也可能对您有用。