summaryrefslogtreecommitdiff
path: root/src/app.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/app.cpp')
-rw-r--r--src/app.cpp32
1 files changed, 19 insertions, 13 deletions
diff --git a/src/app.cpp b/src/app.cpp
index b3df2a5..a5b3247 100644
--- a/src/app.cpp
+++ b/src/app.cpp
@@ -1,9 +1,9 @@
#include "vulkan_swapchain.h"
-#include "imgui.h"
-#include "imgui_impl_glfw.h"
#include "imgui_impl_vulkan.h"
#include "argparse/argparse.hpp"
+#include <cstdint>
+#include <sys/types.h>
#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>
@@ -15,12 +15,6 @@
std::unique_ptr<iris::Swapchain> start_up(int width, int height) {
auto glfw_extensions = get_glfw_instance_extensions();
- // std::vector<const char*> glfw_extensions = {
- // "VK_KHR_surface",
- // };
- // for (const auto& extension : glfw_extensions) {
- // std::cerr << "GLFW extension: " << extension << std::endl;
- // }
iris::Device device({}, glfw_extensions);
auto window = glfwCreateWindow(width, height, "IrisRenderer", nullptr, nullptr);
@@ -31,10 +25,6 @@ std::unique_ptr<iris::Swapchain> start_up(int width, int height) {
return std::make_unique<iris::Swapchain>(window, device);
}
-void main_loop(GLFWwindow *window) {
- (void) window;
-}
-
void shut_down(std::unique_ptr<iris::Swapchain>& swapchain) {
ImGui_ImplVulkan_Shutdown();
@@ -77,7 +67,23 @@ int main(int argc, char** argv) {
auto swapchain = start_up(window_width, window_height);
while (!glfwWindowShouldClose(swapchain->window)) {
- main_loop(swapchain->window);
+ glfwPollEvents();
+
+ int display_w, display_h;
+ glfwGetFramebufferSize(swapchain->window, &display_w, &display_h);
+ if (display_w == 0 || display_h == 0) {
+ break;
+ }
+
+ swapchain->needs_recreate |=
+ (uint32_t) display_w != swapchain->width ||
+ (uint32_t) display_h != swapchain->height;
+ if (swapchain->needs_recreate) {
+ swapchain->resize(display_w, display_h);
+ swapchain->needs_recreate = false;
+ }
+
+ ImGui_ImplVulkan_NewFrame();
}
shut_down(swapchain);