I'm having problems with the use of constant buffers with arrays, currently I'm sending an array of size 100 for my vertex shader, like this:
/////////////
// 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];
};
And I'm getting wrong results at shader... Here is my C++ buffer: (almost the same)
struct InstanceInfo
{
D3DXMATRIX worldMatrix;
unsigned int currentFrame;
unsigned int totalFrames;
unsigned int animationType;
float deltaTime;
};
The buffer is initialized correctly with the size: sizeof(InstanceInfo)*MAX_NUMBER_INSTANCES (MAX_NUMBER_INSTANCES in my c++ code is 100 too) and the data is copied correctly too. (I double checked them)
I know that there is the packing rule but I cant find where is my error (probably is in front of me but I cant see it...)
If someone can help me...