From 65ba842817c167b5e34991a463ba4c9f9841feee Mon Sep 17 00:00:00 2001 From: Dario Manesku Date: Mon, 6 Oct 2014 07:18:06 +0200 Subject: [PATCH] Added optional parameter to mtxProj() for OGL NDC. --- include/bx/fpumath.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/bx/fpumath.h b/include/bx/fpumath.h index 2eccb64..5f640f4 100644 --- a/include/bx/fpumath.h +++ b/include/bx/fpumath.h @@ -229,12 +229,13 @@ namespace bx _result[15] = 1.0f; } - inline void mtxProj(float* _result, float _fovy, float _aspect, float _near, float _far) + inline void mtxProj(float* _result, float _fovy, float _aspect, float _near, float _far, bool _oglNdc = false) { const float height = 1.0f/tanf(_fovy*( (float)M_PI/180.0f)*0.5f); const float width = height * 1.0f/_aspect; - const float aa = _far/(_far-_near); - const float bb = -_near * aa; + const float diff = _far-_near; + const float aa = _oglNdc ? (_far+_near)/diff : _far/diff; + const float bb = _oglNdc ? -(2.0f*_far*_near)/diff : -_near*aa; memset(_result, 0, sizeof(float)*16); _result[0] = width;