hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/window.cpp46
-rw-r--r--src/core/window.h24
-rw-r--r--src/main.c6
-rw-r--r--src/main.cpp11
4 files changed, 81 insertions, 6 deletions
diff --git a/src/core/window.cpp b/src/core/window.cpp
new file mode 100644
index 0000000..3a6ba2c
--- /dev/null
+++ b/src/core/window.cpp
@@ -0,0 +1,46 @@
+#include "window.h"
+#include <cstdint>
+
+namespace Donut
+{
+ static bool s_glfw_initialized = false;
+ static uint32_t s_glfw_window_count = 0;
+
+ Window::Window(const std::string& title, int width, int height)
+ : m_title(title), m_width(width), m_height(height)
+ {
+ if (!s_glfw_initialized)
+ {
+ glfwInit();
+ s_glfw_initialized = true;
+ }
+
+ m_window = glfwCreateWindow(width, height, title.c_str(), nullptr, nullptr);
+ glfwMakeContextCurrent(m_window);
+
+ s_glfw_window_count++;
+ }
+
+ Window::~Window()
+ {
+ glfwDestroyWindow(m_window);
+ s_glfw_window_count--;
+
+ if (s_glfw_window_count == 0)
+ {
+ glfwTerminate();
+ s_glfw_initialized = false;
+ }
+ }
+
+ void Window::on_update() const
+ {
+ glfwPollEvents();
+ glfwSwapBuffers(m_window);
+ }
+
+ bool Window::should_close() const
+ {
+ return glfwWindowShouldClose(m_window);
+ }
+}
diff --git a/src/core/window.h b/src/core/window.h
new file mode 100644
index 0000000..5f0e36e
--- /dev/null
+++ b/src/core/window.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include <GLFW/glfw3.h>
+#include <string>
+
+namespace Donut
+{
+ class Window
+ {
+ public:
+ Window(const std::string& title, int width, int height);
+ ~Window();
+
+ bool should_close() const;
+ void on_update() const;
+ private:
+ GLFWwindow* m_window;
+
+ std::string m_title;
+ int m_width;
+ int m_height;
+ bool m_is_closed;
+ };
+}
diff --git a/src/main.c b/src/main.c
deleted file mode 100644
index b2c1bc6..0000000
--- a/src/main.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <stdio.h>
-
-int main(void)
-{
- puts("Donut");
-} \ No newline at end of file
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644
index 0000000..c6bbd94
--- /dev/null
+++ b/src/main.cpp
@@ -0,0 +1,11 @@
+#include "core/window.h"
+
+int main()
+{
+ Donut::Window window("Donut", 1280, 720);
+
+ while (!window.should_close())
+ {
+ window.on_update();
+ }
+}