summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/core.c b/src/core.c
index 3c0017b0..bd099967 100644
--- a/src/core.c
+++ b/src/core.c
@@ -1913,13 +1913,23 @@ void BeginMode3D(Camera3D camera)
float aspect = (float)CORE.Window.currentFbo.width/(float)CORE.Window.currentFbo.height;
- double top = 0;
- if (camera.projection == CAMERA_PERSPECTIVE) top = RL_CULL_DISTANCE_NEAR*tan(camera.fovy*0.5*DEG2RAD);
- else if (camera.projection == CAMERA_ORTHOGRAPHIC) top = camera.fovy/2.0;
+ // NOTE: zNear and zFar values are important when computing depth buffer values
+ if (camera.projection == CAMERA_PERSPECTIVE)
+ {
+ // Setup perspective projection
+ double top = RL_CULL_DISTANCE_NEAR*tan(camera.fovy*0.5*DEG2RAD);
+ double right = top*aspect;
- rlFrustum(-top*aspect, top*aspect, -top, top, RL_CULL_DISTANCE_NEAR, RL_CULL_DISTANCE_FAR);
+ rlFrustum(-right, right, -top, top, RL_CULL_DISTANCE_NEAR, RL_CULL_DISTANCE_FAR);
+ }
+ else if (camera.projection == CAMERA_ORTHOGRAPHIC)
+ {
+ // Setup orthographic projection
+ double top = camera.fovy/2.0;
+ double right = top*aspect;
- // NOTE: zNear and zFar values are important when computing depth buffer values
+ rlOrtho(-right, right, -top,top, RL_CULL_DISTANCE_NEAR, RL_CULL_DISTANCE_FAR);
+ }
rlMatrixMode(RL_MODELVIEW); // Switch back to modelview matrix
rlLoadIdentity(); // Reset current matrix (modelview)