Archived
1
Fork 0

Properly clean up resources

This commit is contained in:
Joshua Goins 2018-10-24 19:29:44 -04:00
parent cdf95d4aff
commit fef5254904
3 changed files with 20 additions and 1 deletions

View file

@ -172,9 +172,13 @@ int main(int, char*[]) {
renderer->render(world, target); renderer->render(world, target);
} }
delete light;
renderer->destroyMeshBuffers(mesh); renderer->destroyMeshBuffers(mesh);
delete mesh;
renderer->destroyRenderTarget(target); renderer->destroyRenderTarget(target);
vkDestroySurfaceKHR(renderer->getInstance(), surface, nullptr); vkDestroySurfaceKHR(renderer->getInstance(), surface, nullptr);

View file

@ -383,10 +383,20 @@ void Renderer::destroyRenderTarget(RenderTarget* target) {
vkDestroyFramebuffer(device_, target->swapchainFramebuffers[i], nullptr); vkDestroyFramebuffer(device_, target->swapchainFramebuffers[i], nullptr);
vkDestroyImageView(device_, target->swapchainImageViews[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->swapchainFramebuffers;
delete[] target->swapchainImageViews; delete[] target->swapchainImageViews;
delete[] target->swapchainImages; delete[] target->swapchainImages;
delete[] target->postSets;
vkDestroySwapchainKHR(device_, target->swapchain, nullptr); vkDestroySwapchainKHR(device_, target->swapchain, nullptr);

View file

@ -19,8 +19,13 @@ WorldPass::WorldPass(Renderer& renderer) : renderer_(renderer) {
WorldPass::~WorldPass() { WorldPass::~WorldPass() {
vkDestroyRenderPass(renderer_.getDevice(), renderPass_, nullptr); vkDestroyRenderPass(renderer_.getDevice(), renderPass_, nullptr);
vkDestroyDescriptorSetLayout(renderer_.getDevice(), setLayout_, nullptr);
vkDestroyPipeline(renderer_.getDevice(), pipeline_, nullptr); vkDestroyPipeline(renderer_.getDevice(), pipeline_, nullptr);
vkDestroyPipelineLayout(renderer_.getDevice(), pipelineLayout_, 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) { void WorldPass::render(VkCommandBuffer commandBuffer, World& world, RenderTarget* target) {