【发布时间】:2013-03-19 15:26:01
【问题描述】:
我在使用带有数组的常量缓冲区时遇到问题,目前我正在为我的顶点着色器发送一个大小为 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),并且数据也被正确复制。 (我仔细检查了它们)
我知道有打包规则但我找不到我的错误在哪里(可能在我面前但我看不到它......)
如果有人可以帮助我...
【问题讨论】:
标签: c++ directx game-engine hlsl vertex-shader