3

私はちょうど HLSL で遊んでいました。ベクター「pos」でベクター「inputPos」を取得したい。case2 は機能していますが、 case1 ではありません。なぜ ?どちらも同じではありませんか?M * M_Inv * 入力位置 = 入力位置。ケース1が正しい値を与えていないのはなぜですか?

//case 1
pos = mul( float4( inputPos, 1), c_mView );     // Line1
pos = mul ( pos ,  c_mViewInverse );            // Line2

//case2
pos = mul ( mul( float4( inputPos, 1), c_mView ) ,  c_mViewInverse );

ありがとう。

4

1 に答える 1

0

おそらくあなたの場合、変数posはfloat3であるため、2番目の操作でwコンポーネントを提供しないと、計算が台無しになります。(ケース 2 では、float4 になる最初の mul の結果を直接使用します)

pos = mul( float4( inputPos, 1), c_mView );
pos = mul ( float4(pos,1) ,  c_mViewInverse ); 
于 2012-09-10T14:28:40.840 に答える