顶点着色器-常量缓冲数组

Vertex Shader - Constant Buffer Array

本文关键字:常量 缓冲 数组 顶点      更新时间:2023-10-16

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

和我得到错误的结果在shader…这是我的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太),数据也被正确复制。(我仔细检查了一下)

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

如果有人能帮我…

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