1. ホーム
  2. opengl

[解決済み] glGetShaderiv() GL_COMPILE_STATUS GL_FALSE を返す

2022-02-07 12:35:41

質問

Visual Studioのプロジェクトを他のコンピュータで開いてみました。これが関連するかどうかわかりませんが、もともと私はWGL_SAMPLES_ARBパラメータを8から4に変更するまで、MSAAピクセルフォーマットを見つけるのに問題がありました。

しかし、画面上の画像は白黒で、どのようなマトリックス変換にも反応しませんでした。

私はOpenGL SuperBible 5th editionにあるGLShaderManagerのコードを使っています。それはglCompileShader()を呼んだ後、GL_COMPILE_STATUSパラメータでglGetShaderiv()を呼んでいます。私はブレークポイントを設定し、そして、確かにそれはGL_FALSEで戻っています。

他のパソコンではこのようなことは起こりません。何が原因なのか、何か心当たりはありますか?このマシンはATI Radeon HD 5450を使用しており、ドライバを更新したばかりです。

解決方法を教えてください。

しかし、GLSLは厄介な獣で、グラフィックボード、ドライバ、プラットフォーム、バージョンごとに、有効なコードを構成する考え方が異なります。

テストやデバッギングでは、常に以下のようなコードを追加する必要があります。 GL_COMPILE_STATUSGL_LINK_STATUS で、コンパイルに失敗した場合は、ベイルアウトするか、少なくとも警告を表示します。

使用方法 glGetShaderInfoLog glGetProgramInfoLog をクリックすると、シェーダーコンパイラーとリンカーからの出力がそれぞれ得られます。これらはおそらく、何が間違っているのか(あるいはコンパイラがどう考えているのか)を教えてくれるでしょう。