我使用一个常量缓冲区将数据传输到我的像素着色器。
问题在于,无论更新到缓冲区的是什么数据,在运行时,对于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_;
};任何帮助都是非常感谢的。
发布于 2013-02-09 09:38:51
你需要填充你的结构,使它16字节对齐。
// (C++)
struct Buffer
{
XMMATRIX mvp_;
XMFLOAT4 rgba_;
int usemvp_;
float padding[3];
};此外,您还必须确保将常量缓冲区设置为正确的着色器阶段,即VSSetConstantBuffers vs PSSetConstantBuffers。
https://stackoverflow.com/questions/14782061
复制相似问题