--- /dev/null
+#ifndef TACOS_GRAPHICS_VIEWPORT_HPP_
+#define TACOS_GRAPHICS_VIEWPORT_HPP_
+
+#include <glm/glm.hpp>
+
+
+namespace tacos {
+
+class Viewport {
+
+public:
+ Viewport(int width, int height);
+
+ Viewport(const Viewport &) = delete;
+ Viewport &operator =(const Viewport &) = delete;
+
+ void Resize(int w, int h) noexcept;
+
+ int Width() const noexcept { return width; }
+ int Height() const noexcept { return height; }
+
+ const glm::mat4 &Perspective() const noexcept { return perspective; }
+ const glm::mat4 &Ortho() const noexcept { return ortho; }
+
+private:
+ int width;
+ int height;
+
+ float fov;
+ float aspect;
+ float near;
+ float far;
+
+ glm::mat4 perspective;
+ glm::mat4 ortho;
+
+};
+
+}
+
+#endif