@@ -219,6 +219,14 @@ class VulkanExample : public VulkanExampleBase
219
219
*/
220
220
void createStorageImage ()
221
221
{
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
+
222
230
VkImageCreateInfo image = vks::initializers::imageCreateInfo ();
223
231
image.imageType = VK_IMAGE_TYPE_2D;
224
232
image.format = swapChain.colorFormat ;
@@ -735,10 +743,6 @@ class VulkanExample : public VulkanExampleBase
735
743
*/
736
744
void handleResize ()
737
745
{
738
- // Delete allocated resources
739
- vkDestroyImageView (device, storageImage.view , nullptr );
740
- vkDestroyImage (device, storageImage.image , nullptr );
741
- vkFreeMemory (device, storageImage.memory , nullptr );
742
746
// Recreate image
743
747
createStorageImage ();
744
748
// Update descriptors
@@ -747,6 +751,7 @@ class VulkanExample : public VulkanExampleBase
747
751
VkWriteDescriptorSet resultImageWrite = vks::initializers::writeDescriptorSet (descriptorSets[i], VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 1 , &storageImageDescriptor);
748
752
vkUpdateDescriptorSets (device, 1 , &resultImageWrite, 0 , VK_NULL_HANDLE);
749
753
}
754
+ resized = false ;
750
755
}
751
756
752
757
void updateUniformBuffers ()
0 commit comments