summary refs log tree commit diff
path: root/src/Window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Window.cpp')
-rw-r--r--src/Window.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/Window.cpp b/src/Window.cpp
new file mode 100644
index 0000000..8bb8580
--- /dev/null
+++ b/src/Window.cpp
@@ -0,0 +1,45 @@
+#include <stdexcept>
+#include "Window.hpp"
+
+namespace MC {
+
+Window::Window(const char *title, uint32_t width, uint32_t height) {
+    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
+    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
+    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
+    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
+
+    m_window = glfwCreateWindow(width, height, title, nullptr, nullptr);
+    if (m_window == nullptr) {
+        throw std::runtime_error("Failed to create window.");
+    }
+
+    glfwMakeContextCurrent(m_window);
+}
+
+Window::~Window() {
+    glfwDestroyWindow(m_window);
+}
+
+bool Window::should_close() {
+    return glfwWindowShouldClose(m_window);
+}
+
+GLFWwindow* Window::get() {
+    return m_window;
+}
+
+void Window::close() {
+    glfwSetWindowShouldClose(m_window, true);
+}
+
+bool Window::key(int key, int type) {
+    return (glfwGetKey(m_window, key) == type);
+}
+
+void Window::start_frame() {
+    glfwSwapBuffers(m_window);
+    glfwPollEvents();
+}
+
+}
\ No newline at end of file