From cbc77718f01a8190e1a8aa0e9afdc2a3a3403358 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Fri, 11 May 2012 22:38:56 +0200 Subject: Fix regression of commit de2b129a56335262a44a05541a3ab2e35668cc6e: ProjectFloat Matrix Multiplication of gluUnProject(..) impl. ProjectFloat's previous gluMultMatricesf(..) used row-major order, but the replacement multMatrixf(..) uses column-major order (like OpenGL, ..). Note: The replaced 'gluMultMatrixVecf' by multMatrixVecf() already used column-major order. Fix: Reverse the arguments of matrix multiplication m1 x m2 -> m2 x m1 Added proper API documentation in FloatUtil -> Column Major Order of Linear Matrix Layout --- src/jogl/classes/jogamp/opengl/ProjectFloat.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/jogl/classes/jogamp/opengl/ProjectFloat.java') diff --git a/src/jogl/classes/jogamp/opengl/ProjectFloat.java b/src/jogl/classes/jogamp/opengl/ProjectFloat.java index bce3f3cfc..ce8405f74 100644 --- a/src/jogl/classes/jogamp/opengl/ProjectFloat.java +++ b/src/jogl/classes/jogamp/opengl/ProjectFloat.java @@ -615,7 +615,7 @@ public class ProjectFloat { float[] in = this.in; float[] out = this.out; - FloatUtil.multMatrixf(modelMatrix, modelMatrix_offset, projMatrix, projMatrix_offset, matrix, 0); + FloatUtil.multMatrixf(projMatrix, projMatrix_offset, modelMatrix, modelMatrix_offset, matrix, 0); if (!gluInvertMatrixf(matrix, 0, matrix, 0)) { return false; @@ -659,7 +659,7 @@ public class ProjectFloat { FloatBuffer in = this.inBuf; FloatBuffer out = this.outBuf; - FloatUtil.multMatrixf(modelMatrix, projMatrix, matrixBuf); + FloatUtil.multMatrixf(projMatrix, modelMatrix, matrixBuf); if (!gluInvertMatrixf(matrixBuf, matrixBuf)) { return false; @@ -715,7 +715,7 @@ public class ProjectFloat { FloatBuffer in = this.inBuf; FloatBuffer out = this.outBuf; - FloatUtil.multMatrixf(modelMatrix, projMatrix, matrixBuf); + FloatUtil.multMatrixf(projMatrix, modelMatrix, matrixBuf); if (!gluInvertMatrixf(matrixBuf, matrixBuf)) { return false; @@ -786,7 +786,7 @@ public class ProjectFloat { float[] in = this.in; float[] out = this.out; - FloatUtil.multMatrixf(modelMatrix, modelMatrix_offset, projMatrix, projMatrix_offset, matrix, 0); + FloatUtil.multMatrixf(projMatrix, projMatrix_offset, modelMatrix, modelMatrix_offset, matrix, 0); if (!gluInvertMatrixf(matrix, 0, matrix, 0)) return false; @@ -847,7 +847,7 @@ public class ProjectFloat { FloatBuffer in = this.inBuf; FloatBuffer out = this.outBuf; - FloatUtil.multMatrixf(modelMatrix, projMatrix, matrixBuf); + FloatUtil.multMatrixf(projMatrix, modelMatrix, matrixBuf); if (!gluInvertMatrixf(matrixBuf, matrixBuf)) return false; -- cgit v1.2.3