18

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

有什么建议么?

4

3 回答 3

8

编译着色器后,您可以执行以下操作:

if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
    alert(gl.getShaderInfoLog(shader));
}

它会在编译过程中向您显示任何错误消息。GLSL 不能以除帧缓冲区/纹理之外的任何其他形式将数据发送回程序,因此您只能通过检查输出颜色来检查正在发生的事情。正如 Michael 所指出的那样,WebGL 检查器可能对我有用,但对于着色器来说不是那么多,而是用于 webGL 应用程序的一般调试

于 2013-07-01T07:51:19.780 回答
4

不确定这是否可行,但您可能需要查看WebGL Inspector 库以进行调试。

于 2013-07-01T03:37:39.860 回答
3

目前没有已知的方法可以在 WebGL 中从 GLSL 输出数据,除非通过它的目的结果(屏幕/图像颜色)。除非你已经这样做了,否则我建议你查看Learning WebGLkick.js也可能对你有用。

于 2013-07-01T06:02:01.140 回答