HLSL矩阵乘法

3

我刚刚在玩HLSL。我想要将向量“inputPos”转换到向量“pos”中。case2可以正常工作,但是case1不能。为什么?这两个案例不一样吗? M * M_Inv * inputPos = inputPos。为什么case1没有给出正确的值?

//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个回答

1

可能在您的情况下,变量pos是float3类型,因此如果您在第二个操作中没有提供w分量,那么会破坏您的计算。(在情况2中,您直接使用第一个乘法的结果,该结果将是float4类型)

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接