我在使用带数组的常量缓冲区时遇到问题,目前我正在为我的顶点着色器发送一个大小为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)正确初始化缓冲区,并且也正确复制数据。 (我仔细检查了一下)
我知道有包装规则,但我找不到我的错误(可能在我面前,但我看不到它......)
如果有人可以帮助我......
答案 0 :(得分:2)
好的我解决了这个问题,如果有人遇到同样的问题,请记得先查看前一个缓冲区是否正常工作(这会对所有即将发生的缓冲区造成连锁反应)