#ifndef CAMERA_H #define CAMERA_H #include #include #include class Camera { bool m_projectionHasChanged; bool m_viewHasChanged; glm::mat4 m_projectionMatrix; glm::mat4 m_viewMatrix; float m_fov; int m_width; int m_height; float m_near; float m_far; glm::vec3 m_position; glm::vec2 m_rotation; void computeProjectionMatrix(); void computeViewMatrix(); public: //constructor Camera(int width = 800, int height = 600, float fov_y = 45, float near = 0.1f, float far = 10.0f, glm::vec3 pos = glm::vec3()); // setters // relative: void translate(glm::vec3 vector); void rotate(glm::vec2 rad_vector); // absolute: void zoom(float new_fov_y); void resize(int width, int height); void setNear(float near); void setFar(float far); void moveTo(glm::vec3 position); void lookAt(glm::vec3 position); void lookAt(glm::vec2 rotation); // getters glm::mat4 getProjectionMatrix(); glm::mat4 getViewMatrix(); }; #endif // CAMERA_H