Properly free other resources
This commit is contained in:
parent
40b464935f
commit
37736f88e2
5 changed files with 49 additions and 2 deletions
|
@ -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;
|
||||
|
|
|
@ -274,6 +274,8 @@ int main(int argc, char* argv[]) {
|
|||
|
||||
delete renderer;
|
||||
|
||||
ECS::destructResources();
|
||||
|
||||
writeConfig();
|
||||
|
||||
SDL_DestroyWindow(window);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue