0

私は、directx11 を使用してプログラムを作成しており、ビュー マトリックスを操作する基本的なカメラ クラスを作成しました。プログラムをテストすると、シーンは動かないという結果になりましたが、カメラを動かすと、任意の場所で見えるものを切り取る効果があります。私が何を意味するかを示すために、いくつかの写真を添付し​​ました。

今のところ、ピクセル シェーダーは赤のピクセルのみを出力するようにしています。

私の頂点シェーダーは、SDK の例に基づいています。

cbuffer cbChangeOnResize : register(b1) { matrix Projection; };

cbuffer cbChangesEveryFrame : register(b2)
{
    matrix View;
    matrix World;
};


struct VS_INPUT
{
    float4 Pos : POSITION;
    float2 Tex : TEXCOORD0;
};

struct PS_INPUT
{
    float4 Pos : SV_POSITION;
    float2 Tex : TEXCOORD0;
};

PS_INPUT TEX_VS(VS_INPUT input)
{
    PS_INPUT output = (PS_INPUT)0;
    output.Pos = mul(input.Pos, World);
    output.Pos = mul(output.Pos, View);
    output.Pos = mul(output.Pos, Projection);
    output.Tex = input.Tex;

    return output;
}

この問題について数日間頭を悩ませてきましたが、何が原因なのか、どのコードが関連しているのかさえわかりません。PIX は、ワールド、ビュー、およびプロジェクション マトリックスが存在し、適用されているように見えますが、何かが正しくないことは明らかです。

ありがとうございました。

4

2 に答える 2

1

シェーダー内で行列を渡す前に行列を転置する代わりに、row_major 修飾子を使用できます。

于 2012-01-31T15:00:51.343 に答える
0

数学的な失敗です。転置の代わりにビュー マトリックスをシェーダーに送信しました。

于 2012-01-31T11:43:19.220 に答える