diff --git a/example/Vulkan/VulkanAppFramework.h b/example/Vulkan/VulkanAppFramework.h index 90050705..3a25867c 100644 --- a/example/Vulkan/VulkanAppFramework.h +++ b/example/Vulkan/VulkanAppFramework.h @@ -30,12 +30,6 @@ private: Window * win =nullptr; vulkan::Instance * inst =nullptr; - void OnResize(int w,int h) - { - InitCommandBuffer(); - Resize(w,h); - } - void OnKeyDown (KeyboardButton kb){key_status[kb]=true;} void OnKeyUp (KeyboardButton kb){key_status[kb]=false;} void OnKeyPress (KeyboardButton kb){KeyPress(kb);} @@ -60,7 +54,7 @@ protected: vulkan::ShaderModuleManage * shader_manage =nullptr; -private: +protected: uint32_t swap_chain_count=0; @@ -115,7 +109,6 @@ public: if(!device) return(false); - sc_render_target=device->GetSwapchainRT(); present_complete_semaphore =device->CreateSem(); render_complete_semaphore =device->CreateSem(); @@ -143,11 +136,19 @@ public: virtual void MouseUp(uint){} virtual void MouseMove(){} virtual void MouseWheel(int,int,uint){} + + void OnResize(int w,int h) + { + InitCommandBuffer(); + Resize(w,h); + } void InitCommandBuffer() { if(cmd_buf) SAFE_CLEAR_OBJECT_ARRAY(cmd_buf,swap_chain_count); + + sc_render_target=device->GetSwapchainRT(); swap_chain_count=sc_render_target->GetImageCount(); { diff --git a/src/RenderDevice/Vulkan/VKDevice.cpp b/src/RenderDevice/Vulkan/VKDevice.cpp index 88a462fe..b7c69049 100644 --- a/src/RenderDevice/Vulkan/VKDevice.cpp +++ b/src/RenderDevice/Vulkan/VKDevice.cpp @@ -44,6 +44,7 @@ bool Device::Resize(const VkExtent2D &extent) SAFE_CLEAR(textureSQ); SAFE_CLEAR(texture_cmd_buf); + attr->Refresh(); swapchain=CreateSwapchain(attr,extent); texture_cmd_buf=CreateCommandBuffer(extent,0); diff --git a/src/RenderDevice/Vulkan/VKSwapchain.cpp b/src/RenderDevice/Vulkan/VKSwapchain.cpp index b9009124..8d4bb3a2 100644 --- a/src/RenderDevice/Vulkan/VKSwapchain.cpp +++ b/src/RenderDevice/Vulkan/VKSwapchain.cpp @@ -21,19 +21,12 @@ namespace { VkExtent2D SwapchainExtentClamp(const VkSurfaceCapabilitiesKHR &surface_caps,const VkExtent2D &acquire_extent) { - if(surface_caps.currentExtent.width==UINT32_MAX) - { - VkExtent2D swapchain_extent; + VkExtent2D swapchain_extent; - swapchain_extent.width =hgl_clamp(acquire_extent.width, surface_caps.minImageExtent.width, surface_caps.maxImageExtent.width ); - swapchain_extent.height =hgl_clamp(acquire_extent.height, surface_caps.minImageExtent.height, surface_caps.maxImageExtent.height ); + swapchain_extent.width =hgl_clamp(acquire_extent.width, surface_caps.minImageExtent.width, surface_caps.maxImageExtent.width ); + swapchain_extent.height =hgl_clamp(acquire_extent.height, surface_caps.minImageExtent.height, surface_caps.maxImageExtent.height ); - return swapchain_extent; - } - else - { - return surface_caps.currentExtent; - } + return swapchain_extent; } VkSwapchainKHR CreateSwapChain(const DeviceAttribute *dev_attr,const VkExtent2D &extent)