summaryrefslogtreecommitdiffstats
path: root/src/mesa/math
diff options
context:
space:
mode:
authorMathias Fröhlich <[email protected]>2014-09-21 18:09:21 +0200
committerMathias Fröhlich <[email protected]>2014-10-24 19:21:20 +0200
commit6340e609a354770e04192b9b44e91fb06aab0159 (patch)
treea23faaf3f456f4775efd556e2701ad07021ff1b4 /src/mesa/math
parent8c7ac377b7a859705479a0b421d1dacc53ca240a (diff)
mesa: Refactor viewport transform computation.
This is for preparation of ARB_clip_control. v3: Add comments. Reviewed-by: Brian Paul <[email protected]> Signed-off-by: Mathias Froehlich <[email protected]>
Diffstat (limited to 'src/mesa/math')
-rw-r--r--src/mesa/math/m_matrix.c17
-rw-r--r--src/mesa/math/m_matrix.h4
2 files changed, 10 insertions, 11 deletions
diff --git a/src/mesa/math/m_matrix.c b/src/mesa/math/m_matrix.c
index e512e456fbd..9c9310d939e 100644
--- a/src/mesa/math/m_matrix.c
+++ b/src/mesa/math/m_matrix.c
@@ -1110,16 +1110,15 @@ _math_matrix_translate( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z )
* Transforms Normalized Device Coords to window/Z values.
*/
void
-_math_matrix_viewport(GLmatrix *m, GLfloat x, GLfloat y,
- GLfloat width, GLfloat height,
- GLdouble zNear, GLdouble zFar, GLdouble depthMax)
+_math_matrix_viewport(GLmatrix *m, const double scale[3],
+ const double translate[3], double depthMax)
{
- m->m[MAT_SX] = width / 2.0F;
- m->m[MAT_TX] = m->m[MAT_SX] + x;
- m->m[MAT_SY] = height / 2.0F;
- m->m[MAT_TY] = m->m[MAT_SY] + y;
- m->m[MAT_SZ] = (GLfloat) (depthMax * ((zFar - zNear) / 2.0));
- m->m[MAT_TZ] = (GLfloat) (depthMax * ((zFar - zNear) / 2.0 + zNear));
+ m->m[MAT_SX] = scale[0];
+ m->m[MAT_TX] = translate[0];
+ m->m[MAT_SY] = scale[1];
+ m->m[MAT_TY] = translate[1];
+ m->m[MAT_SZ] = depthMax*scale[2];
+ m->m[MAT_TZ] = depthMax*translate[2];
m->flags = MAT_FLAG_GENERAL_SCALE | MAT_FLAG_TRANSLATION;
m->type = MATRIX_3D_NO_ROT;
}
diff --git a/src/mesa/math/m_matrix.h b/src/mesa/math/m_matrix.h
index dddce70190f..778d716dce7 100644
--- a/src/mesa/math/m_matrix.h
+++ b/src/mesa/math/m_matrix.h
@@ -122,8 +122,8 @@ _math_matrix_frustum( GLmatrix *mat,
GLfloat nearval, GLfloat farval );
extern void
-_math_matrix_viewport(GLmatrix *m, GLfloat x, GLfloat y, GLfloat width, GLfloat height,
- GLdouble zNear, GLdouble zFar, GLdouble depthMax);
+_math_matrix_viewport( GLmatrix *m, const double scale[3],
+ const double translate[3], double depthMax );
extern void
_math_matrix_set_identity( GLmatrix *dest );