]> git.tdb.fi Git - libs/gl.git/blobdiff - source/camera.cpp
Add orthographic mode to Camera
[libs/gl.git] / source / camera.cpp
index fca3ea33d504773d90e073c598175a33d9be2f46..a0c89e0efb6c2129354efa273545bb20605008b6 100644 (file)
@@ -7,6 +7,7 @@ namespace GL {
 
 Camera::Camera():
        fov(Geometry::Angle<float>::from_turns(0.125)),
+       height(0),
        aspect(4.0/3.0),
        clip_near(0.1),
        clip_far(10),
@@ -26,6 +27,15 @@ void Camera::set_field_of_view(const Geometry::Angle<float> &f)
        update_projection_matrix();
 }
 
+void Camera::set_orthographic(float w, float h)
+{
+       fov = Geometry::Angle<float>::zero();
+       height = h;
+       if(w)
+               aspect = w/h;
+       update_projection_matrix();
+}
+
 void Camera::set_aspect(float a)
 {
        aspect = a;
@@ -101,7 +111,10 @@ void Camera::update_projection_matrix()
        float right = frustum_w*(frustum_x+1.0f);
        float bottom = frustum_h*(frustum_y-1.0f);
        float top = frustum_h*(frustum_y+1.0f);
-       proj_matrix = Matrix::frustum(left, right, bottom, top, clip_near, clip_far);
+       if(fov>Geometry::Angle<float>::zero())
+               proj_matrix = Matrix::frustum(left, right, bottom, top, clip_near, clip_far);
+       else
+               proj_matrix = Matrix::ortho(left, right, bottom, top, clip_near, clip_far);
 }
 
 void Camera::update_object_matrix()