diff --git a/src/main.cpp b/src/main.cpp index ea82130..fdac39a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -172,9 +172,13 @@ int main(int, char*[]) { renderer->render(world, target); } + + delete light; renderer->destroyMeshBuffers(mesh); - + + delete mesh; + renderer->destroyRenderTarget(target); vkDestroySurfaceKHR(renderer->getInstance(), surface, nullptr); diff --git a/src/renderer.cpp b/src/renderer.cpp index 80b478c..54a1db0 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -383,10 +383,20 @@ void Renderer::destroyRenderTarget(RenderTarget* target) { vkDestroyFramebuffer(device_, target->swapchainFramebuffers[i], nullptr); vkDestroyImageView(device_, target->swapchainImageViews[i], nullptr); } + + delete[] target->offscreenFramebuffers; + delete[] target->offscreenDepthImageViews; + delete[] target->offscreenDepthMemory; + delete[] target->offscreenDepthImages; + delete[] target->offscreenColorImageViews; + delete[] target->offscreenColorMemory; + delete[] target->offscreenColorImages; delete[] target->swapchainFramebuffers; delete[] target->swapchainImageViews; delete[] target->swapchainImages; + + delete[] target->postSets; vkDestroySwapchainKHR(device_, target->swapchain, nullptr); diff --git a/src/worldpass.cpp b/src/worldpass.cpp index 3068be8..bb2718d 100644 --- a/src/worldpass.cpp +++ b/src/worldpass.cpp @@ -19,8 +19,13 @@ WorldPass::WorldPass(Renderer& renderer) : renderer_(renderer) { WorldPass::~WorldPass() { vkDestroyRenderPass(renderer_.getDevice(), renderPass_, nullptr); + vkDestroyDescriptorSetLayout(renderer_.getDevice(), setLayout_, nullptr); + vkDestroyPipeline(renderer_.getDevice(), pipeline_, nullptr); vkDestroyPipelineLayout(renderer_.getDevice(), pipelineLayout_, nullptr); + + vkFreeMemory(renderer_.getDevice(), lightMemory_, nullptr); + vkDestroyBuffer(renderer_.getDevice(), lightBuffer_, nullptr); } void WorldPass::render(VkCommandBuffer commandBuffer, World& world, RenderTarget* target) {