From 8045b8ba04aae39a4cf9733e72413f648b6ebe2b Mon Sep 17 00:00:00 2001 From: tylermurphy534 Date: Sun, 18 Sep 2022 21:20:51 -0400 Subject: stanford dragon rendering --- engine/xe_window.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 engine/xe_window.cpp (limited to 'engine/xe_window.cpp') diff --git a/engine/xe_window.cpp b/engine/xe_window.cpp new file mode 100755 index 0000000..2721279 --- /dev/null +++ b/engine/xe_window.cpp @@ -0,0 +1,41 @@ +#include "xe_window.hpp" +#include +#include + +#include + +namespace xe { + + XeWindow::XeWindow(int w, int h, std::string name) : width{w}, height{h}, windowName{name} { + initWindow(); + } + + XeWindow::~XeWindow() { + glfwDestroyWindow(window); + glfwTerminate(); + } + + void XeWindow::initWindow() { + glfwInit(); + glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); + glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE); + + window = glfwCreateWindow(width, height, windowName.c_str(), nullptr, nullptr); + glfwSetWindowUserPointer(window, this); + glfwSetFramebufferSizeCallback(window, framebufferResizeCallback); + } + + void XeWindow::createWindowSurface(VkInstance instance, VkSurfaceKHR *surface){ + if (glfwCreateWindowSurface(instance, window, nullptr, surface) != VK_SUCCESS) { + throw std::runtime_error("failed to create window surface"); + } + } + + void XeWindow::framebufferResizeCallback(GLFWwindow *window, int width, int height){ + auto xeWindow = reinterpret_cast(glfwGetWindowUserPointer(window)); + xeWindow->frameBufferResized = true; + xeWindow->width = width; + xeWindow->height = height; + } + +} \ No newline at end of file -- cgit v1.2.3-freya