1
votes

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...

1

1 Answers

2
votes

Ok I solved the problem, if anyone is having this same problem remember to see if the previous buffer is working correctly first (this can cause a ripple effect on all upcoming buffers)