2013-03-19 2 views
1

У меня возникли проблемы с использованием постоянных буферов с массивами, в настоящее время я посылаю массив размера 100 для моих вершинных шейдеров, как это:Vertex Shader - Constant Buffer Массив

///////////// 
// 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 (MAX_NUMBER_INSTANCES в моей C++ код является 100 тоже), и данные также скопированы правильно. (Я проверил их)

Я знаю, что есть правила упаковки, но я не могу найти, где моя ошибка (вероятно, передо мной, но я не могу видеть его ...)

Если кто-то может помочь мне ...

ответ

2

Ok Я решил проблему, если кто-то, имеющий такую ​​же проблему, помните, чтобы увидеть, если предыдущий буфер работает правильно первый (это может вызвать волновой эффект на всех предстоящих буферов)