我使用常量缓冲区将数据传输到像素着色器
问题是缓冲区在运行期间对于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_;
};
非常感谢任何帮助
答案 0 :(得分:2)
您需要填充结构以使其与16字节对齐。
// (C++)
struct Buffer
{
XMMATRIX mvp_;
XMFLOAT4 rgba_;
int usemvp_;
float padding[3];
};
此外,您必须确保将常量缓冲区设置为正确的着色器阶段,即VSSetConstantBuffers与PSSetConstantBuffers。