У меня проблемы с использованием постоянных буферов с массивами, в настоящее время я отправляю массив размером 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;
};
Буфер инициализируется правильно с size: sizeof (InstanceInfo) * MAX_NUMBER_INSTANCES (MAX_NUMBER_INSTANCES в моем коде c ++ тоже 100) и данные тоже копируются правильно. (Я дважды проверил их)
Я знаю, что есть правило упаковки, но я не могу найти, где моя ошибка (вероятно, передо мной, но я не могу видеть это …)
Если кто-то может мне помочь …
Хорошо, я решил проблему, если у кого-то возникла такая же проблема, не забудьте сначала проверить, правильно ли работает предыдущий буфер (это может вызвать волновой эффект для всех последующих буферов).
Других решений пока нет …