Javascript 如何在webgl着色器中console.log?
我试图理解如何在用GLSL编写的webgl着色器中模拟console.log。获取错误消息很容易,但我不知道如何打印自定义消息 基本上,我想在浏览器的控制台中打印内容:Javascript 如何在webgl着色器中console.log?,javascript,opengl-es,glsl,webgl,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
<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>
真空总管(真空)
{
//console.log在这里不起作用,因为它是GLSL而不是javascript
gl_FragColor=vec4(0.0,0.0,0.0,1.0);
}
有什么建议吗?不确定这是否可行,但您可能需要检查以进行调试。目前,除了通过特定结果(屏幕/图像颜色)外,没有已知的方法从WebGL中的GLSL输出数据。
除非您已经这样做了,否则我建议您退房,这也可能对您有用。编译着色器后,您可以执行以下操作:
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
alert(gl.getShaderInfoLog(shader));
}
它会在编译过程中显示任何错误消息。
GLSL不能以帧缓冲区/纹理以外的任何其他形式将数据发送回程序,所以只能通过检查输出颜色来检查发生了什么。
正如Michael所指出的,WebGL inspector可能对我很有用,但对于着色器来说并不是那么有用,但对于WebGL应用程序的一般调试来说,这应该是公认的答案。由于这个原因,我已经将$@#从一个严重的着色器错误中记录下来。谢谢你。