【问题标题】:D3D10 Constant buffer not workingD3D10 常量缓冲区不起作用
【发布时间】:2013-04-17 14:59:58
【问题描述】:

我正在使用常量缓冲区将数据传输到我的像素着色器

问题是缓冲区在运行时对于 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_;
};

非常感谢任何帮助

【问题讨论】:

    标签: c++ directx buffer hlsl direct3d11


    【解决方案1】:

    您需要填充您的结构以使其 16 字节对齐。

    // (C++)
    struct Buffer
    {
        XMMATRIX mvp_;
        XMFLOAT4 rgba_;
        int usemvp_;
        float padding[3];
    };
    

    您还必须确保将常量缓冲区设置到正确的着色器阶段,即 VSSetConstantBuffers 与 PSSetConstantBuffers。

    【讨论】:

    • 我从未调用过 PSSetConstantBuffers()!感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多