D3D11_BUFFER_DESC ccbbd;
ZeroMemory(&ccbbd, sizeof(D3D11_BUFFER_DESC));
ccbbd.Usage = D3D11_USAGE_DEFAULT;
ccbbd.ByteWidth = sizeof(SecondStruct);
ccbbd.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
ccbbd.CPUAccessFlags = 0;
ccbbd.MiscFlags = 0;
result = sp_device->CreateBuffer(&ccbbd, NULL, &PixelCBuffer);
就是那个ByteWidth那里,CreateBuffer需要结构体有特殊要求,要加pad。
结构体必须四个数字,四个数字塞,否则报错,mul是我需要缓存的数据,而pad只是为了填充空隙,不加的话就报错,创建缓存失败。
struct SecondStruct
{
float mul;
XMFLOAT3 pad;
} ;