3

我只是在玩 HLSL 。我想在向量“pos”中获取向量“inputPos”。case2 正在工作,但 case1 没有。为什么 ?两种情况不一样吗?M * M_Inv * inputPos = inputPos。为什么案例 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,所以如果您在第二个操作中不提供 w 组件,这会打乱您的计算。(在情况 2 中,您直接使用第一个 mul 的结果,这将是一个 float4)

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