@@ -219,6 +219,14 @@ class VulkanExample : public VulkanExampleBase
219219 */
220220 void createStorageImage ()
221221 {
222+ // Release ressources if image is to be recreated
223+ if (storageImage.image != VK_NULL_HANDLE) {
224+ vkDestroyImageView (device, storageImage.view , nullptr );
225+ vkDestroyImage (device, storageImage.image , nullptr );
226+ vkFreeMemory (device, storageImage.memory , nullptr );
227+ storageImage = {};
228+ }
229+
222230 VkImageCreateInfo image = vks::initializers::imageCreateInfo ();
223231 image.imageType = VK_IMAGE_TYPE_2D;
224232 image.format = swapChain.colorFormat ;
@@ -735,10 +743,6 @@ class VulkanExample : public VulkanExampleBase
735743 */
736744 void handleResize ()
737745 {
738- // Delete allocated resources
739- vkDestroyImageView (device, storageImage.view , nullptr );
740- vkDestroyImage (device, storageImage.image , nullptr );
741- vkFreeMemory (device, storageImage.memory , nullptr );
742746 // Recreate image
743747 createStorageImage ();
744748 // Update descriptors
@@ -747,6 +751,7 @@ class VulkanExample : public VulkanExampleBase
747751 VkWriteDescriptorSet resultImageWrite = vks::initializers::writeDescriptorSet (descriptorSets[i], VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 1 , &storageImageDescriptor);
748752 vkUpdateDescriptorSets (device, 1 , &resultImageWrite, 0 , VK_NULL_HANDLE);
749753 }
754+ resized = false ;
750755 }
751756
752757 void updateUniformBuffers ()
0 commit comments