diff options
| author | Juan Linietsky | 2015-03-02 00:54:10 -0300 |
|---|---|---|
| committer | Juan Linietsky | 2015-03-02 00:54:43 -0300 |
| commit | a1f715a4da71fbc2b7d6fad68624bf8b22c6da17 (patch) | |
| tree | 5cd305c8f8858504f0b5efb804b2c291b1dc5089 /core/math/camera_matrix.cpp | |
| parent | 0e732637d07d908daf64526f222e71fea402f3db (diff) | |
| download | godot-a1f715a4da71fbc2b7d6fad68624bf8b22c6da17.tar.gz godot-a1f715a4da71fbc2b7d6fad68624bf8b22c6da17.tar.zst godot-a1f715a4da71fbc2b7d6fad68624bf8b22c6da17.zip | |
Diffstat (limited to 'core/math/camera_matrix.cpp')
| -rw-r--r-- | core/math/camera_matrix.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/core/math/camera_matrix.cpp b/core/math/camera_matrix.cpp index a60dea737..fbe5f8c74 100644 --- a/core/math/camera_matrix.cpp +++ b/core/math/camera_matrix.cpp @@ -121,7 +121,7 @@ void CameraMatrix::set_orthogonal(float p_size, float p_aspect, float p_znear, f void CameraMatrix::set_frustum(float p_left, float p_right, float p_bottom, float p_top, float p_near, float p_far) { - +#if 0 ///@TODO, give a check to this. I'm not sure if it's working. set_identity(); @@ -133,10 +133,27 @@ void CameraMatrix::set_frustum(float p_left, float p_right, float p_bottom, floa matrix[2][3]=-(2*p_far*p_near) / (p_far-p_near); matrix[3][2]=-1; matrix[3][3]=0; +#else + float *te = &matrix[0][0]; + float x = 2 * p_near / ( p_right - p_left ); + float y = 2 * p_near / ( p_top - p_bottom ); + + float a = ( p_right + p_left ) / ( p_right - p_left ); + float b = ( p_top + p_bottom ) / ( p_top - p_bottom ); + float c = - ( p_far + p_near ) / ( p_far - p_near ); + float d = - 2 * p_far * p_near / ( p_far - p_near ); + + te[0] = x; te[4] = 0; te[8] = a; te[12] = 0; + te[1] = 0; te[5] = y; te[9] = b; te[13] = 0; + te[2] = 0; te[6] = 0; te[10] = c; te[14] = d; + te[3] = 0; te[7] = 0; te[11] = - 1; te[15] = 0; + +#endif } + float CameraMatrix::get_z_far() const { const float * matrix = (const float*)this->matrix; |
