2012-06-16 51 views

回答

3

據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); 
相關問題