Examples: Vulkan: SDL: Fixed missing resize handler (not properly merged from #1367) + tweaks.

This commit is contained in:
omar 2018-03-01 22:39:06 +01:00
parent 296db2ed33
commit 68e9ef9885
2 changed files with 12 additions and 5 deletions

View File

@ -57,7 +57,7 @@ static void check_vk_result(VkResult err)
abort(); abort();
} }
static void resize_vulkan(SDL_Window*, int w, int h) static void CreateOrResizeSwapChainAndFrameBuffer(int w, int h)
{ {
VkResult err; VkResult err;
VkSwapchainKHR old_swapchain = g_Swapchain; 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; int w, h;
SDL_GetWindowSize(window, &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); ImGui_ImplSDL2_ProcessEvent(&event);
if (event.type == SDL_QUIT) if (event.type == SDL_QUIT)
done = true; 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_ImplVulkan_NewFrame();
ImGui_ImplSDL2_NewFrame(window); ImGui_ImplSDL2_NewFrame(window);

View File

@ -60,7 +60,7 @@ static void check_vk_result(VkResult err)
abort(); abort();
} }
static void resize_vulkan(GLFWwindow*, int w, int h) static void CreateOrResizeSwapChainAndFrameBuffer(int w, int h)
{ {
VkResult err; VkResult err;
VkSwapchainKHR old_swapchain = g_Swapchain; 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 #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) 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; int w, h;
glfwGetFramebufferSize(window, &w, &h); glfwGetFramebufferSize(window, &w, &h);
resize_vulkan(window, w, h); CreateOrResizeSwapChainAndFrameBuffer(w, h);
glfwSetFramebufferSizeCallback(window, resize_vulkan); glfwSetFramebufferSizeCallback(window, GlfwResizeCallback);
} }