web-dev-qa-db-ja.com

webglシェーダーでconsole.logを実行する方法は?

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>

助言がありますか?

15
Kirill Ivlev

シェーダーをコンパイルした後、次のようなことができます。

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

また、コンパイル中にエラーメッセージが表示されます。 GLSLは、フレームバッファ/テクスチャ以外の形式でデータをプログラムに送り返すことはできないため、出力色を調べることによってのみ何が起こっているかを確認できます。 Michaelが指摘したように、WebGLインスペクターは役立つかもしれませんが、シェーダーではそれほどではありませんが、webGLアプリの一般的なデバッグには役立ちます。

6

それが可能かどうかはわかりませんが、デバッグの目的で WebGL Inspectorライブラリ を確認することをお勧めします。

4
Michael McGuire

現在、目的の結果(画面/画像の色)を介する場合を除いて、WebGLでGLSLからデータを出力する既知の方法はありません。すでに行っていない限り、 Learning WebGL をチェックすることをお勧めします。また、 kick.js も役立つかもしれません。

3
havarc