私はDirectX 11を学習しており、基本的なHLSL部分に達しています。頂点シェーダで複数の定数バッファを使用したいので、の正しいStartSlot
を見つける必要があります。私はGoogleで検索し、誰かがGetResourceBindingDescByName
を使って示唆していることがわかりました。DirectX 11のGetResourceBindingDescByNameは最初のcbufferしか取得できません
私はGetResourceBindingDescByName
を試しましたが、最初のcbufferに対して正しいStartSlot
しか得られないことがわかりました。例えば、私の頂点シェーダに:
cbuffer Test1
{
float4 a;
};
cbuffer Test2
{
float4 b;
};
は今GetResourceBindingDescByName("Test1", &bind_desc)
は正常に動作しますが、GetResourceBindingDescByName("Test2", &bind_desc)
は(E_INVAILDARG
を返す)は失敗します。
誰でもお手伝いできますか?
シェーダでbを使用していますか?最適化によってストライピングされている可能性があります。 – galop1n
ありがとうございます。私はちょうど私のシェイダーのを使用します。シェーダコードにbの参照を追加して問題を解決しました。あなたはこの質問に答えることができるので、私はそれをこの質問の答えとすることができますか? – delphifirst