]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/matrix.cpp
Refactor projection matrix handling
[libs/gl.git] / source / core / matrix.cpp
index 0eb9e916aac6a56cffcc4de00ec08d35edc77812..54dbdff6ca0c2355105a523c54352c543bb13458 100644 (file)
@@ -65,10 +65,10 @@ Matrix Matrix::ortho(float l, float r, float b, float t, float n, float f)
        Matrix result;
        result(0, 0) = 2/(r-l);
        result(1, 1) = 2/(t-b);
-       result(2, 2) = -2/(f-n);
+       result(2, 2) = -1/(f-n);
        result(0, 3) = -(r+l)/(r-l);
        result(1, 3) = -(t+b)/(t-b);
-       result(2, 3) = -(f+n)/(f-n);
+       result(2, 3) = 0.5f-0.5f*(f+n)/(f-n);
        return result;
 }
 
@@ -97,9 +97,9 @@ Matrix Matrix::frustum(float l, float r, float b, float t, float n, float f)
        result(1, 1) = 2*n/(t-b);
        result(0, 2) = (r+l)/(r-l);
        result(1, 2) = (t+b)/(t-b);
-       result(2, 2) = -(f+n)/(f-n);
+       result(2, 2) = -f/(f-n);
        result(3, 2) = -1;
-       result(2, 3) = -2*f*n/(f-n);
+       result(2, 3) = -f*n/(f-n);
        result(3, 3) = 0;
        return result;
 }