1

我在使用带有数组的常量缓冲区时遇到问题,目前我正在为我的顶点着色器发送一个大小为 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;
};

缓冲区已使用大小正确初始化: sizeof(InstanceInfo)*MAX_NUMBER_INSTANCES (我的 c++ 代码中的 MAX_NUMBER_INSTANCES 也是 100)并且数据也被正确复制。(我仔细检查了它们)

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

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

4

1 回答 1

2

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

于 2013-03-19T18:27:29.423 回答