ID3D11ShaderReflectionでシェーダコード解析

CreateInputLayoutで入力レイアウト(ID3D11InputLayout)を作成する際、頂点シェーダが要求する入力パラメータが不足しているとエラーコード(E_INVALIDARG)を返します。ただ作成が失敗するだけならいいのですが、エラーログが出力されてしまうため、シェーダを解析して入力パラメータの不足を調べるようにします。

ID3D11ShaderReflection

このインターフェイスでシェーダの入出力パラメータ、定数バッファの変数名などの情報が取得できます。作成にはD3DReflect関数を使用します。頂点シェーダ以外のシェーダも可能です。

リンクエラー

コンパイル&リンクするとIID_ID3D11ShaderReflectionが見つからないというリンクエラーが発生するため、dxguid.libをリンカー入力に追加します。

入力レイアウトのチェック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

認証:数字を入力してください(必須) * Time limit is exhausted. Please reload CAPTCHA.