我刚刚玩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 );
感谢。
答案 0 :(得分:0)
可能在你的情况下变量pos是float3,所以如果你不在第二个操作中提供w组件会弄乱你的计算。 (在第二种情况下,你直接使用第一个mul的结果,这将是一个float4)
pos = mul( float4( inputPos, 1), c_mView );
pos = mul ( float4(pos,1) , c_mViewInverse );