hlsl矩阵乘法

时间:2012-09-05 11:03:37

标签: matrix hlsl

我刚刚玩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 );

感谢。

1 个答案:

答案 0 :(得分:0)

可能在你的情况下变量pos是float3,所以如果你不在第二个操作中提供w组件会弄乱你的计算。 (在第二种情况下,你直接使用第一个mul的结果,这将是一个float4)

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