如何在webgl着色器中使用console.log?

时间:2013-07-01 03:07:32

标签: javascript opengl-es glsl webgl

我正在尝试了解如何在用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>

有什么建议吗?

3 个答案:

答案 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 WebGLkick.js也可能对您有用。