3
想知道LWJGL的Matrix4f.mul方法是前置還是後置乘法。或者如果有一種方法可供選擇。LWJGL的Matrix4f.mul方法是前置還是後置乘法?
想知道LWJGL的Matrix4f.mul方法是前置還是後置乘法。或者如果有一種方法可供選擇。LWJGL的Matrix4f.mul方法是前置還是後置乘法?
據javadoc的,Matrix4f.mul
將:
乘以從右向左矩陣,並將結果存放在第三矩陣。
public static Matrix4f mul(Matrix4f left, Matrix4f right, Matrix4f dest)
那麼,要實現後的乘法,用戶現有的矩陣作爲left
參數,以及新的矩陣爲right
參數。如果您爲dest
提供空對象,則該函數將爲您分配新的Matrix4f
,並從函數調用中返回該對象。
我通常會考慮矩陣乘法的方式是,矩陣「最接近」矢量首先被應用。例如:
Perspective * View * Model * Vec4
與最近的Vector中的矩陣開始,你可以看到,模型轉換,首先最後由透視變換應用,其次是景觀改造,然後。
在你的代碼,上面看起來像:
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);