]> git.localhorst.tv Git - blobs.git/blob - src/graphics/Camera.hpp
simple planet render
[blobs.git] / src / graphics / Camera.hpp
1 #ifndef BLOBS_GRAPHICS_CAMERA_HPP_
2 #define BLOBS_GRAPHICS_CAMERA_HPP_
3
4 #include "glm.hpp"
5
6
7 namespace blobs {
8 namespace graphics {
9
10 class Camera {
11
12 public:
13         Camera() noexcept;
14         ~Camera() noexcept;
15
16         Camera(const Camera &) = delete;
17         Camera &operator =(const Camera &) = delete;
18
19         Camera(Camera &&) = delete;
20         Camera &operator =(Camera &&) = delete;
21
22 public:
23         void FOV(float f) noexcept;
24         void Aspect(float r) noexcept;
25         void Aspect(float w, float h) noexcept;
26         void Clip(float near, float far) noexcept;
27
28         const glm::mat4 &Projection() const noexcept { return projection; }
29         const glm::mat4 &View() const noexcept { return view; }
30         void View(const glm::mat4 &v) noexcept;
31
32 private:
33         void UpdateProjection() noexcept;
34
35 private:
36         float fov;
37         float aspect;
38         float near;
39         float far;
40
41         glm::mat4 projection;
42         glm::mat4 view;
43
44 };
45
46 }
47 }
48
49 #endif