Cでは、次のようなコードをデバッグできます。
fprintf(stderr, "blah: %f", some_var);
gLSLでは...とにかく、頂点またはフラグメントシェーダーの値をダンプするだけですか?遅くてもかまいません。値をダンプしたいだけです。理想的には、次のような設定が必要です。
これは実現可能ですか? (パフォーマンスは気にしません。1つのフレームでこれを実行したいだけです)。
ありがとう!
残念ながら、それは直接不可能です。しかし、可能な解決策の1つは、最終的に多くを使用することになります(ただし、GLSL開発者の間ではかなり一般的です)、意図した最終結果の代わりに値を色として「印刷」することです。
もちろん、これには多くの制限があります。 1つは、値が(0,1.0)
範囲。 mod
、fract
などの関数は、これらの場合に役立ちます。しかし、一般的に、これはGLSLで「printf」に相当すると私が見ているものです。
値を出力する代わりに、GLSLデバッガーを試すことを考えましたか?
たとえば、 glslDevil を使用すると、シェーダーの実行をステップ実行し、各ステップで変数を調べることができます。
AMD CodeXLをチェックしてください。フレームごとにステップ実行して、opengl状態の値、シェーダーコード、およびテクスチャーメモリを検査できます。
http://developer.AMD.com/tools-and-sdks/heterogeneous-computing/codexl/