DirectXですべてのMSチュートリアルを実行していると、それらが常にワールド、ビュー、およびプロジェクションマトリックスをテクニックに渡し、頂点シェーダーでそれらを乗算していることに気付きました。
描画する前に行列を乗算してから、単一のWVP行列をシェーダーに渡すのではなく、それを行う理由はありますか?このように、行列は頂点ごとに1回ではなく、フレームごとに1回乗算されます。
前もって感謝します。
編集:サンプルコードで更新
MSチュートリアル:
matrix World;
matrix View;
matrix Projection;
struct VS_INPUT
{
float4 Pos : POSITION;
float4 Color : COLOR;
};
struct VS_OUTPUT
{
float4 Pos : SV_POSITION;
float4 Color : COLOR;
};
PS_INPUT VS( VS_INPUT input )
{
VS_OUTPUT output;
output.Pos = mul( input.Pos, World );
output.Pos = mul( output.Pos, View );
output.Pos = mul( output.Pos, Projection );
output.Color = input.Color;
return output;
}
なぜこのようにしないのですか?
matrix WVP;
struct VS_INPUT
{
float4 Pos : POSITION;
float4 Color : COLOR;
};
struct VS_OUTPUT
{
float4 Pos : SV_POSITION;
float4 Color : COLOR;
};
PS_INPUT VS( VS_INPUT input )
{
VS_OUTPUT output;
output.Pos = mul( input.Pos, WVP );
output.Color = input.Color;
return output;
}