php Xiaobian Yuzai さんは、コンパイル中に GLSL フラグメント シェーダーで問題が発生したことを発見しましたが、エラー メッセージはありませんでした。これにより、開発者は何が問題だったのか混乱する可能性があります。この問題を解決する前に、まず明確にしておきたいのは、エラー メッセージが表示されないのは、通常、コンパイラがエラー メッセージを生成しなかったか、エラー メッセージが無視されたためであるということです。次に、考えられる原因を段階的にトラブルシューティングして解決策を見つける必要があります。
OpenGlのgo-glバインディングを使用しています。
両方のシェーダーのソースを次のように定義しました:
リーリー頂点シェーダーは問題なく作成され、コンパイルされます。
次は、フラグメント シェーダーを作成してコンパイルするコードです:
リーリー以下を出力します (残念なことに、情報ログ メッセージはありません):
リーリーバージョン core
/compatibility
を切り替え、FragColor
の名前と vec4
の異なる値を変更してみました。
また、if
ブロックをコメントアウトしてプログラムの作成を続行してみました。プログラムのブロックをチェックすると、シェーダーがコンパイルされていないため予期されるエラーが出力されます: error: linking with uncompiled/unspecializedshader
フラグメント シェーダーのコンパイル方法についてフィードバックはありますか?
Call glShaderSource()
ソース シェーダを設定するコードのみ。 コンパイルできません。次に、glCompileShader() を個別に呼び出す必要があります。
リーリー
原因
gl.GetShaderiv() および gl.COMPILE_STATUS
の結果
success は
gl.FALSE です。これは、最後のコンパイルが成功した場合に
gl.COMPILE_STATUS が
gl.TRUE のみを生成するためです。ただし、
gl.CompileShader() を呼び出したことがないため、これまでコンパイルが成功したことがなく、
gl.FALSE を受け取ります。また、これまでエラーが発生していないため、情報ログは空です。
以上がGLSL フラグメント シェーダがメッセージなしでコンパイルに失敗するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。