Archived
1
Fork 0

Properly free other resources

This commit is contained in:
Joshua Goins 2018-12-27 06:31:37 -05:00
parent 40b464935f
commit 37736f88e2
5 changed files with 49 additions and 2 deletions

View file

@ -56,6 +56,23 @@ namespace ECS {
inline std::map<EntityID, ::World*> worlds;
inline EntityID lastID = 1;
static inline void destructResources() {
for(const auto& [id, info] : infos)
delete info;
for(const auto& [id, transform] : transforms)
delete transform;
for(const auto& [id, mesh] : meshes)
delete mesh;
for(const auto& [id, light] : lights)
delete light;
for(const auto& [id, camera] : cameras)
delete camera;
}
static inline EntityID createEntity(World* world) {
EntityID newID = lastID++;
worlds[newID] = world;

View file

@ -274,6 +274,8 @@ int main(int argc, char* argv[]) {
delete renderer;
ECS::destructResources();
writeConfig();
SDL_DestroyWindow(window);

View file

@ -871,6 +871,7 @@ void Renderer::destroyRenderTarget(RenderTarget* target) {
vkDestroyImageView(device_, target->swapchainImageViews[i], nullptr);
}
// imgui
delete[] target->imguiIndexBufferSizes;
delete[] target->imguiIndexMemorys;
delete[] target->imguiIndexBuffers;
@ -879,6 +880,22 @@ void Renderer::destroyRenderTarget(RenderTarget* target) {
delete[] target->imguiVertexMemorys;
delete[] target->imguiVertexBuffers;
// smaa
delete[] target->blendDescriptorSets;
delete[] target->blendFramebuffers;
delete[] target->blendImageViews;
delete[] target->blendMemorys;
delete[] target->blendImages;
delete[] target->edgeDescriptorSets;
delete[] target->edgeFramebuffers;
delete[] target->edgeImageViews;
delete[] target->edgeMemorys;
delete[] target->edgeImages;
// dof
delete[] target->nearFieldFramebuffers;
delete[] target->nearFieldImageViews;
delete[] target->nearFieldMemory;
@ -889,6 +906,13 @@ void Renderer::destroyRenderTarget(RenderTarget* target) {
delete[] target->farFieldMemory;
delete[] target->farFieldImages;
// sobel
delete[] target->sobelFramebuffers;
delete[] target->sobelImageViews;
delete[] target->sobelMemorys;
delete[] target->sobelImages;
// offscreen
delete[] target->offscreenFramebuffers;
delete[] target->offscreenDepthImageViews;
@ -899,12 +923,11 @@ void Renderer::destroyRenderTarget(RenderTarget* target) {
delete[] target->offscreenColorMemory;
delete[] target->offscreenColorImages;
// swapchain
delete[] target->swapchainFramebuffers;
delete[] target->swapchainImageViews;
delete[] target->swapchainImages;
delete[] target->blendDescriptorSets;
delete[] target->edgeDescriptorSets;
delete[] target->dofSets;
delete[] target->postSets;

View file

@ -115,6 +115,8 @@ void SMAAPass::createDescriptorSets(RenderTarget* target) {
vkAllocateDescriptorSets(renderer.getDevice(), &allocInfo, target->blendDescriptorSets);
delete[] layouts;
for(int i = 0; i < target->numImages; i++) {
// edge
{

View file

@ -44,5 +44,8 @@ void WorldManager::destructResources(Renderer* renderer) {
for(const auto& [id, mesh] : meshes) {
renderer->destroyMeshBuffers(mesh->mesh);
renderer->destroyMaterialBuffers(mesh->material);
delete mesh->mesh;
delete mesh->material;
}
}