Changed the OpenGL part and the GLSL shaders to use UBO and
[demo] / src / camera.h
1 #ifndef CAMERA_H_
2 #define CAMERA_H_
3
4 #include <gmath/gmath.h>
5
6 class Camera {
7 public:
8         Camera();
9         virtual ~Camera();
10
11         virtual Mat4 get_view_matrix() const = 0;
12 };
13
14 class OrbitCamera : public Camera {
15 protected:
16         float theta;
17         float phi;
18         float distance;
19
20         Vec3 position;
21
22 public:
23         OrbitCamera();
24         virtual ~OrbitCamera();
25
26         virtual Mat4 get_view_matrix() const override;
27
28         void set_orbit_params(float theta, float phi, float distance);
29         void set_position(float x, float y, float z);
30 };
31
32 Mat4 calc_projection_matrix(float fov_deg, float aspect, float n, float f);
33
34 #endif // CAMERA_H_