From 3b6f5bde05f25f74d7656a470c8f541d10f0451f Mon Sep 17 00:00:00 2001 From: Dario Manesku Date: Fri, 26 Feb 2016 07:50:50 +0100 Subject: [PATCH 1/2] Fixing mtxProjRhXYWH(). --- include/bx/fpumath.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/bx/fpumath.h b/include/bx/fpumath.h index be125aa..b7b8566 100644 --- a/include/bx/fpumath.h +++ b/include/bx/fpumath.h @@ -640,8 +640,8 @@ namespace bx memset(_result, 0, sizeof(float)*16); _result[ 0] = _width; _result[ 5] = _height; - _result[ 8] = _x; - _result[ 9] = -_y; + _result[ 8] = -_x; + _result[ 9] = _y; _result[10] = aa; _result[11] = 1.0f; _result[14] = -bb; From f8b0dae1b988d2c2905bdaf7edcfa7d78811c79c Mon Sep 17 00:00:00 2001 From: Dario Manesku Date: Fri, 26 Feb 2016 07:51:09 +0100 Subject: [PATCH 2/2] Added mtxOrthoLh(). --- include/bx/fpumath.h | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/include/bx/fpumath.h b/include/bx/fpumath.h index b7b8566..b45bde0 100644 --- a/include/bx/fpumath.h +++ b/include/bx/fpumath.h @@ -720,7 +720,26 @@ namespace bx mtxProjRh(_result, _fovy, _aspect, _near, _far, _oglNdc); } - inline void mtxOrtho(float* _result, float _left, float _right, float _bottom, float _top, float _near, float _far, float _offset = 0.0f, bool _oglNdc = false) + inline void mtxOrthoLh(float* _result, float _left, float _right, float _bottom, float _top, float _near, float _far, float _offset = 0.0f, bool _oglNdc = false) + { + const float aa = 2.0f/(_right - _left); + const float bb = 2.0f/(_top - _bottom); + const float cc = (_oglNdc ? 2.0f : 1.0f) / (_far - _near); + const float dd = (_left + _right)/(_left - _right); + const float ee = (_top + _bottom)/(_bottom - _top); + const float ff = _oglNdc ? (_near + _far)/(_near - _far) : _near/(_near - _far); + + memset(_result, 0, sizeof(float)*16); + _result[ 0] = aa; + _result[ 5] = bb; + _result[10] = -cc; + _result[12] = dd + _offset; + _result[13] = ee; + _result[14] = ff; + _result[15] = 1.0f; + } + + inline void mtxOrthoRh(float* _result, float _left, float _right, float _bottom, float _top, float _near, float _far, float _offset = 0.0f, bool _oglNdc = false) { const float aa = 2.0f/(_right - _left); const float bb = 2.0f/(_top - _bottom); @@ -739,6 +758,11 @@ namespace bx _result[15] = 1.0f; } + inline void mtxOrtho(float* _result, float _left, float _right, float _bottom, float _top, float _near, float _far, float _offset = 0.0f, bool _oglNdc = false) + { + return mtxOrthoRh(_result, _left, _right, _bottom, _top, _near, _far, _offset, _oglNdc); + } + inline void mtxRotateX(float* _result, float _ax) { const float sx = fsin(_ax);