配列での定数バッファーの使用に問題があります。現在、次のように頂点シェーダーにサイズ 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 です) のサイズで正しく初期化され、データも正しくコピーされます。(私はそれらをダブルチェックしました)
パッキングルールがあることは知っていますが、どこにエラーがあるのか わかりません(おそらく目の前にありますが、見えません...)
誰かが私を助けることができれば...