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

Kir*_*lev 15 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>
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Abs*_*thm 6

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

if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
    alert(gl.getShaderInfoLog(shader));
}
Run Code Online (Sandbox Code Playgroud)

并且它将在编译过程中向您显示任何错误消息。GLSL不能以帧缓冲/纹理以外的任何其他形式将数据发送回程序,因此您只能通过检查输出颜色来检查正在发生的情况。正如Michael所指出的,WebGL检查器可能对我有用,但对于着色器而言却没什么用,但对于WebGL应用程序的常规调试而言却不那么有用


Mic*_*ire 3

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