0

ピクセルシェーダーにデータを転送するために定数バッファーを使用しています

問題は、バッファに更新されるデータに関係なく、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_;
};

どんな助けでも大歓迎です

4

1 に答える 1

2

構造体を 16 バイトに揃えるためにパディングする必要があります。

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

また、定数バッファーを正しいシェーダー ステージ (つまり、VSSetConstantBuffers と PSSetConstantBuffers) に設定していることを確認する必要があります。

于 2013-02-09T01:38:51.370 に答える