LWJGL的Matrix4f.mul方法是前置还是后置倍增?

时间:2012-06-16 04:33:01

标签: java matrix lwjgl matrix-multiplication

只是想知道LWJGL的Matrix4f.mul方法是预先加倍还是后加倍。或者如果有选择的话。

1 个答案:

答案 0 :(得分:3)

根据javadoc,Matrix4f.mul将:

  

将右边的矩阵乘以左边,并将结果放在第三个矩阵中。

public static Matrix4f mul(Matrix4f left, Matrix4f right, Matrix4f dest)

因此,要实现后乘法,请将现有矩阵用作left参数,将新矩阵用作right参数。如果为dest提供了一个空对象,该函数将为您分配一个新的Matrix4f,并从函数调用中返回它。

我通常认为矩阵乘法的方法是矩阵"最接近"首先应用向量。例如:

Perspective  *  View  *  Model  *  Vec4

从最接近Vector的矩阵开始,您可以看到首先应用模型转换,然后是View转换,最后是Perspective转换。

在您的代码中,上面的内容如下所示:

Matrix4f MVP = Matrix4f.mul(View, Model, null);
Matrix4f.mul(Perspective, MVP, MVP);

Vector4f result = Matrix4f.transform(MVP, Vec4, null);

希望这有帮助!

编辑:以上是我倾向于连接我的变换,但由于矩阵乘法是关联的,因此以下内容也应该有效:

Matrix4f MVP = Matrix4f.mul(Perspective, View, null);
Matrix4f.mul(MVP, Model, MVP);

Vector4f result = Matrix4f.transform(MVP, Vec4, null);