GLSL シェーダのトラブルシューティング

問題

MShaderManager::getEffectsFileShader() または MShaderManager::getEffectsBufferShader() を使用して .ogsfx シェーダ インスタンスをロードするときに、シェーダがビューポートにレンダリングされず、エラーが表示されません。

どうすればシェーダ コンパイル エラーを取得できますか?

解決方法

.ogsfx シェーダをロードするときに、MShaderManager::getEffectsFileShader() を呼び出した場合、エラーは作成時ではなくバインド時に起こります。MShaderInstance.bind() を呼び出してシェーダ インスタンスを描画コンテキストにバインドし、次に MShaderManager::getLastError() または MShaderManager::getLastErrorSource() を呼び出してエフェクトのコンパイル エラーをレポートします。

または、シェーダに次のプラグマを設定すると、作成時にエラーが発生します。

#pragma FullCompileOnLoad:true; 

次に、MShaderManager::getLastError() または MShaderManager::getLastErrorSource() を呼び出してエフェクトのコンパイル エラーをレポートする必要があります。