我正在使用常量缓冲区将数据传输到我的像素着色器
问题是在运行时,对于 float4 成员的 x、y、z 和 w,缓冲区在着色器中包含 0,无论什么数据更新到缓冲区
结构定义如下:
// (C++)
struct Buffer
{
XMMATRIX mvp_;
XMFLOAT4 rgba_;
int usemvp_;
};
// HLSL
cbuffer Buffer : register( b0 )
{
matrix mvp_;
float4 rgba_;
int usemvp_;
};
非常感谢任何帮助
最佳答案
您需要填充结构以使其 16 字节对齐。
// (C++)
struct Buffer
{
XMMATRIX mvp_;
XMFLOAT4 rgba_;
int usemvp_;
float padding[3];
};
此外,您还必须确保将常量缓冲区设置到正确的着色器阶段,即 VSSetConstantBuffers 与 PSSetConstantBuffers。
关于c++ - D3D10 常量缓冲区不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14782061/