Properly handle resize

This commit is contained in:
Sascha Willems 2020-09-11 20:57:06 +02:00
parent 3643d10cac
commit 08648a417f
2 changed files with 20 additions and 2 deletions

View file

@ -40,8 +40,26 @@ void VulkanExample::getEnabledFeatures()
deviceCreatepNextChain = &enabledPhysicalDeviceShadingRateImageFeaturesNV; deviceCreatepNextChain = &enabledPhysicalDeviceShadingRateImageFeaturesNV;
} }
/*
If the window has been resized, we need to recreate the shading rate image
*/
void VulkanExample::handleResize()
{
// Delete allocated resources
vkDestroyImageView(device, shadingRateImage.view, nullptr);
vkDestroyImage(device, shadingRateImage.image, nullptr);
vkFreeMemory(device, shadingRateImage.memory, nullptr);
// Recreate image
prepareShadingRateImage();
}
void VulkanExample::buildCommandBuffers() void VulkanExample::buildCommandBuffers()
{ {
if (resized)
{
handleResize();
}
VkCommandBufferBeginInfo cmdBufInfo = vks::initializers::commandBufferBeginInfo(); VkCommandBufferBeginInfo cmdBufInfo = vks::initializers::commandBufferBeginInfo();
VkClearValue clearValues[2]; VkClearValue clearValues[2];
@ -377,9 +395,8 @@ void VulkanExample::prepare()
VulkanExampleBase::prepare(); VulkanExampleBase::prepare();
loadAssets(); loadAssets();
vkCmdBindShadingRateImageNV = reinterpret_cast<PFN_vkCmdBindShadingRateImageNV>(vkGetDeviceProcAddr(device, "vkCmdBindShadingRateImageNV"));
// [POI] // [POI]
vkCmdBindShadingRateImageNV = reinterpret_cast<PFN_vkCmdBindShadingRateImageNV>(vkGetDeviceProcAddr(device, "vkCmdBindShadingRateImageNV"));
physicalDeviceShadingRateImagePropertiesNV.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV; physicalDeviceShadingRateImagePropertiesNV.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV;
VkPhysicalDeviceProperties2 deviceProperties2{}; VkPhysicalDeviceProperties2 deviceProperties2{};
deviceProperties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2; deviceProperties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;

View file

@ -56,6 +56,7 @@ public:
VulkanExample(); VulkanExample();
~VulkanExample(); ~VulkanExample();
virtual void getEnabledFeatures(); virtual void getEnabledFeatures();
void handleResize();
void buildCommandBuffers(); void buildCommandBuffers();
void loadglTFFile(std::string filename); void loadglTFFile(std::string filename);
void loadAssets(); void loadAssets();