diff --git a/src/vk.cpp b/src/vk.cpp index 53c0140..67df634 100644 --- a/src/vk.cpp +++ b/src/vk.cpp @@ -809,11 +809,15 @@ void Vulkan::createBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryP // Уничтожение буфера и освобождение его памяти void Vulkan::destroyBuffer(VkBuffer buffer) { - vkDeviceWaitIdle(logicalDevice); // Ожидание окончания асинхронных задач + // Проверка что такой буфер ещё существует + if (databuffers.find(buffer) != databuffers.end()) + { + vkDeviceWaitIdle(logicalDevice); // Ожидание окончания асинхронных задач - vkDestroyBuffer(databuffers[buffer].first /*logicalDevice*/, buffer, nullptr); // Уничтожение буфера - vkFreeMemory(databuffers[buffer].first /*logicalDevice*/, databuffers[buffer].second /*VkDeviceMemory*/, nullptr); // Освобождение памяти буфера - databuffers.erase(buffer); // Удалим ключ из словаря + vkDestroyBuffer(databuffers[buffer].first /*logicalDevice*/, buffer, nullptr); // Уничтожение буфера + vkFreeMemory(databuffers[buffer].first /*logicalDevice*/, databuffers[buffer].second /*VkDeviceMemory*/, nullptr); // Освобождение памяти буфера + databuffers.erase(buffer); // Удалим ключ из словаря + } } // Создание пула команд