1

配列での定数バッファーの使用に問題があります。現在、次のように頂点シェーダーにサイズ 100 の配列を送信しています。

/////////////
// DEFINES //
/////////////
#define MAX_NUMBER_INSTANCES 100

/////////////
// STRUCTS // 
///////////// 
struct InstanceInfo 
{ 
   matrix InstanceWorldMatrix; 
   uint CurrentFrame; 
   uint TotalFrames; 
   uint AnimationType; 
   float DeltaTime; 
}; 

///////////// 
// BUFFERS // 
///////////// 
cbuffer InstanceBuffer 
{ 
   InstanceInfo Instance[MAX_NUMBER_INSTANCES]; 
};

そして、シェーダーで間違った結果が得られます...これが私のC++バッファーです:(ほぼ同じ)

struct InstanceInfo
{
     D3DXMATRIX worldMatrix;
     unsigned int currentFrame;
     unsigned int totalFrames;
     unsigned int animationType;
     float deltaTime;
};

バッファーは sizeof(InstanceInfo)*MAX_NUMBER_INSTANCES (私の C++ コードの MAX_NUMBER_INSTANCES も 100 です) のサイズで正しく初期化され、データも正しくコピーされます。(私はそれらをダブルチェックしました)

パッキングルールがあることは知っていますが、どこにエラーがあるのか​​ わかりません(おそらく目の前にありますが、見えません...)

誰かが私を助けることができれば...

4

1 に答える 1

2

OK、問題を解決しました。誰かがこの同じ問題を抱えている場合は、最初に前のバッファが正しく機能しているかどうかを確認することを忘れないでください (これにより、今後のすべてのバッファに波及効果が生じる可能性があります)。

于 2013-03-19T18:27:29.423 に答える