From f990cbc740f011e7120bf49e6e4fd7124c10f434 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Thu, 5 Feb 2004 13:36:59 +0000 Subject: Reorganize two functions which seem to be tickling a gcc bug --- src/mesa/math/m_matrix.c | 63 +++++++++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/src/mesa/math/m_matrix.c b/src/mesa/math/m_matrix.c index e81be8a7e0..0ef5de0aca 100644 --- a/src/mesa/math/m_matrix.c +++ b/src/mesa/math/m_matrix.c @@ -911,21 +911,28 @@ _math_matrix_frustum( GLmatrix *mat, GLfloat bottom, GLfloat top, GLfloat nearval, GLfloat farval ) { - GLfloat x, y, a, b, c, d; GLfloat m[16]; - x = (2.0F*nearval) / (right-left); - y = (2.0F*nearval) / (top-bottom); - a = (right+left) / (right-left); - b = (top+bottom) / (top-bottom); - c = -(farval+nearval) / ( farval-nearval); - d = -(2.0F*farval*nearval) / (farval-nearval); /* error? */ - #define M(row,col) m[col*4+row] - M(0,0) = x; M(0,1) = 0.0F; M(0,2) = a; M(0,3) = 0.0F; - M(1,0) = 0.0F; M(1,1) = y; M(1,2) = b; M(1,3) = 0.0F; - M(2,0) = 0.0F; M(2,1) = 0.0F; M(2,2) = c; M(2,3) = d; - M(3,0) = 0.0F; M(3,1) = 0.0F; M(3,2) = -1.0F; M(3,3) = 0.0F; + M(0,0) = (2.0F*nearval) / (right-left); + M(0,1) = 0.0F; + M(0,2) = (right+left) / (right-left); + M(0,3) = 0.0F; + + M(1,0) = 0.0F; + M(1,1) = (2.0F*nearval) / (top-bottom); + M(1,2) = (top+bottom) / (top-bottom); + M(1,3) = 0.0F; + + M(2,0) = 0.0F; + M(2,1) = 0.0F; + M(2,2) = -(farval+nearval) / ( farval-nearval); + M(2,3) = -(2.0F*farval*nearval) / (farval-nearval); + + M(3,0) = 0.0F; + M(3,1) = 0.0F; + M(3,2) = -1.0F; + M(3,3) = 0.0F; #undef M matrix_multf( mat, m, MAT_FLAG_PERSPECTIVE ); @@ -951,22 +958,28 @@ _math_matrix_ortho( GLmatrix *mat, GLfloat bottom, GLfloat top, GLfloat nearval, GLfloat farval ) { - GLfloat x, y, z; - GLfloat tx, ty, tz; GLfloat m[16]; - x = 2.0F / (right-left); - y = 2.0F / (top-bottom); - z = -2.0F / (farval-nearval); - tx = -(right+left) / (right-left); - ty = -(top+bottom) / (top-bottom); - tz = -(farval+nearval) / (farval-nearval); - #define M(row,col) m[col*4+row] - M(0,0) = x; M(0,1) = 0.0F; M(0,2) = 0.0F; M(0,3) = tx; - M(1,0) = 0.0F; M(1,1) = y; M(1,2) = 0.0F; M(1,3) = ty; - M(2,0) = 0.0F; M(2,1) = 0.0F; M(2,2) = z; M(2,3) = tz; - M(3,0) = 0.0F; M(3,1) = 0.0F; M(3,2) = 0.0F; M(3,3) = 1.0F; + M(0,0) = 2.0F / (right-left); + M(0,1) = 0.0F; + M(0,2) = 0.0F; + M(0,3) = -(right+left) / (right-left); + + M(1,0) = 0.0F; + M(1,1) = 2.0F / (top-bottom); + M(1,2) = 0.0F; + M(1,3) = -(top+bottom) / (top-bottom); + + M(2,0) = 0.0F; + M(2,1) = 0.0F; + M(2,2) = -2.0F / (farval-nearval); + M(2,3) = -(farval+nearval) / (farval-nearval); + + M(3,0) = 0.0F; + M(3,1) = 0.0F; + M(3,2) = 0.0F; + M(3,3) = 1.0F; #undef M matrix_multf( mat, m, (MAT_FLAG_GENERAL_SCALE|MAT_FLAG_TRANSLATION)); -- cgit v1.2.3