顶点着色器 - 常量缓冲阵列

时间:2013-03-19 15:26:01

标签: c++ directx game-engine hlsl vertex-shader

我在使用带数组的常量缓冲区时遇到问题,目前我正在为我的顶点着色器发送一个大小为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(我的c ++代码中的MAX_NUMBER_INSTANCES也是100)正确初始化缓冲区,并且也正确复制数据。 (我仔细检查了一下)

我知道有包装规则,但我找不到我的错误(可能在我面前,但我看不到它......)

如果有人可以帮助我......

1 个答案:

答案 0 :(得分:2)

好的我解决了这个问题,如果有人遇到同样的问题,请记得先查看前一个缓冲区是否正常工作(这会对所有即将发生的缓冲区造成连锁反应)