From 68e9ef9885c9c3f103364161b2e6d2c154345cd2 Mon Sep 17 00:00:00 2001 From: omar Date: Thu, 1 Mar 2018 22:39:06 +0100 Subject: [PATCH] Examples: Vulkan: SDL: Fixed missing resize handler (not properly merged from #1367) + tweaks. --- examples/sdl_vulkan_example/main.cpp | 6 ++++-- examples/vulkan_example/main.cpp | 11 ++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/examples/sdl_vulkan_example/main.cpp b/examples/sdl_vulkan_example/main.cpp index 1be9584d..7756880b 100644 --- a/examples/sdl_vulkan_example/main.cpp +++ b/examples/sdl_vulkan_example/main.cpp @@ -57,7 +57,7 @@ static void check_vk_result(VkResult err) abort(); } -static void resize_vulkan(SDL_Window*, int w, int h) +static void CreateOrResizeSwapChainAndFrameBuffer(int w, int h) { VkResult err; VkSwapchainKHR old_swapchain = g_Swapchain; @@ -340,7 +340,7 @@ static void setup_vulkan(SDL_Window* window, const char** extensions, uint32_t e { int w, h; SDL_GetWindowSize(window, &w, &h); - resize_vulkan(window, w, h); + CreateOrResizeSwapChainAndFrameBuffer(w, h); } @@ -639,6 +639,8 @@ int main(int, char**) ImGui_ImplSDL2_ProcessEvent(&event); if (event.type == SDL_QUIT) done = true; + if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_RESIZED && event.window.windowID == SDL_GetWindowID(window)) + CreateOrResizeSwapChainAndFrameBuffer((int)event.window.data1, (int)event.window.data2); } ImGui_ImplVulkan_NewFrame(); ImGui_ImplSDL2_NewFrame(window); diff --git a/examples/vulkan_example/main.cpp b/examples/vulkan_example/main.cpp index 5b82f5bc..78b6615e 100644 --- a/examples/vulkan_example/main.cpp +++ b/examples/vulkan_example/main.cpp @@ -60,7 +60,7 @@ static void check_vk_result(VkResult err) abort(); } -static void resize_vulkan(GLFWwindow*, int w, int h) +static void CreateOrResizeSwapChainAndFrameBuffer(int w, int h) { VkResult err; VkSwapchainKHR old_swapchain = g_Swapchain; @@ -189,6 +189,11 @@ static void resize_vulkan(GLFWwindow*, int w, int h) } } +static void GlfwResizeCallback(GLFWwindow*, int w, int h) +{ + CreateOrResizeSwapChainAndFrameBuffer(w, h); +} + #ifdef IMGUI_VULKAN_DEBUG_REPORT static VKAPI_ATTR VkBool32 VKAPI_CALL debug_report(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage, void* pUserData) { @@ -340,8 +345,8 @@ static void setup_vulkan(GLFWwindow* window, const char** extensions, uint32_t e { int w, h; glfwGetFramebufferSize(window, &w, &h); - resize_vulkan(window, w, h); - glfwSetFramebufferSizeCallback(window, resize_vulkan); + CreateOrResizeSwapChainAndFrameBuffer(w, h); + glfwSetFramebufferSizeCallback(window, GlfwResizeCallback); }