update_object_matrix();
}
+void Camera::copy_parameters(const Camera &source)
+{
+ fov = source.fov;
+ height = source.height;
+ aspect = source.aspect;
+ clip_near = source.clip_near;
+ clip_far = source.clip_far;
+ frustum_x = source.frustum_x;
+ frustum_y = source.frustum_y;
+ rotate = source.rotate;
+ position = source.position;
+ look_dir = source.look_dir;
+ up_dir = source.up_dir;
+ update_projection_matrix();
+ update_object_matrix();
+}
+
void Camera::set_field_of_view(const Geometry::Angle<float> &f)
{
fov = f;
proj_matrix = Matrix::ortho(left, right, bottom, top, clip_near, clip_far);
proj_matrix = Matrix::rotation(rotate, Vector3(0, 0, 1))*proj_matrix;
+ adjust_projection_matrix(proj_matrix);
+
shdata.uniform("clip_eye_matrix", proj_matrix);
shdata.uniform("eye_clip_matrix", invert(proj_matrix));
}