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 std::map<EntityID, ::World*> worlds;
|
||||||
inline EntityID lastID = 1;
|
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) {
|
static inline EntityID createEntity(World* world) {
|
||||||
EntityID newID = lastID++;
|
EntityID newID = lastID++;
|
||||||
worlds[newID] = world;
|
worlds[newID] = world;
|
||||||
|
|
|
@ -274,6 +274,8 @@ int main(int argc, char* argv[]) {
|
||||||
|
|
||||||
delete renderer;
|
delete renderer;
|
||||||
|
|
||||||
|
ECS::destructResources();
|
||||||
|
|
||||||
writeConfig();
|
writeConfig();
|
||||||
|
|
||||||
SDL_DestroyWindow(window);
|
SDL_DestroyWindow(window);
|
||||||
|
|
|
@ -871,6 +871,7 @@ void Renderer::destroyRenderTarget(RenderTarget* target) {
|
||||||
vkDestroyImageView(device_, target->swapchainImageViews[i], nullptr);
|
vkDestroyImageView(device_, target->swapchainImageViews[i], nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// imgui
|
||||||
delete[] target->imguiIndexBufferSizes;
|
delete[] target->imguiIndexBufferSizes;
|
||||||
delete[] target->imguiIndexMemorys;
|
delete[] target->imguiIndexMemorys;
|
||||||
delete[] target->imguiIndexBuffers;
|
delete[] target->imguiIndexBuffers;
|
||||||
|
@ -879,6 +880,22 @@ void Renderer::destroyRenderTarget(RenderTarget* target) {
|
||||||
delete[] target->imguiVertexMemorys;
|
delete[] target->imguiVertexMemorys;
|
||||||
delete[] target->imguiVertexBuffers;
|
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->nearFieldFramebuffers;
|
||||||
delete[] target->nearFieldImageViews;
|
delete[] target->nearFieldImageViews;
|
||||||
delete[] target->nearFieldMemory;
|
delete[] target->nearFieldMemory;
|
||||||
|
@ -889,6 +906,13 @@ void Renderer::destroyRenderTarget(RenderTarget* target) {
|
||||||
delete[] target->farFieldMemory;
|
delete[] target->farFieldMemory;
|
||||||
delete[] target->farFieldImages;
|
delete[] target->farFieldImages;
|
||||||
|
|
||||||
|
// sobel
|
||||||
|
delete[] target->sobelFramebuffers;
|
||||||
|
delete[] target->sobelImageViews;
|
||||||
|
delete[] target->sobelMemorys;
|
||||||
|
delete[] target->sobelImages;
|
||||||
|
|
||||||
|
// offscreen
|
||||||
delete[] target->offscreenFramebuffers;
|
delete[] target->offscreenFramebuffers;
|
||||||
|
|
||||||
delete[] target->offscreenDepthImageViews;
|
delete[] target->offscreenDepthImageViews;
|
||||||
|
@ -899,12 +923,11 @@ void Renderer::destroyRenderTarget(RenderTarget* target) {
|
||||||
delete[] target->offscreenColorMemory;
|
delete[] target->offscreenColorMemory;
|
||||||
delete[] target->offscreenColorImages;
|
delete[] target->offscreenColorImages;
|
||||||
|
|
||||||
|
// swapchain
|
||||||
delete[] target->swapchainFramebuffers;
|
delete[] target->swapchainFramebuffers;
|
||||||
delete[] target->swapchainImageViews;
|
delete[] target->swapchainImageViews;
|
||||||
delete[] target->swapchainImages;
|
delete[] target->swapchainImages;
|
||||||
|
|
||||||
delete[] target->blendDescriptorSets;
|
|
||||||
delete[] target->edgeDescriptorSets;
|
|
||||||
delete[] target->dofSets;
|
delete[] target->dofSets;
|
||||||
delete[] target->postSets;
|
delete[] target->postSets;
|
||||||
|
|
||||||
|
|
|
@ -115,6 +115,8 @@ void SMAAPass::createDescriptorSets(RenderTarget* target) {
|
||||||
|
|
||||||
vkAllocateDescriptorSets(renderer.getDevice(), &allocInfo, target->blendDescriptorSets);
|
vkAllocateDescriptorSets(renderer.getDevice(), &allocInfo, target->blendDescriptorSets);
|
||||||
|
|
||||||
|
delete[] layouts;
|
||||||
|
|
||||||
for(int i = 0; i < target->numImages; i++) {
|
for(int i = 0; i < target->numImages; i++) {
|
||||||
// edge
|
// edge
|
||||||
{
|
{
|
||||||
|
|
|
@ -44,5 +44,8 @@ void WorldManager::destructResources(Renderer* renderer) {
|
||||||
for(const auto& [id, mesh] : meshes) {
|
for(const auto& [id, mesh] : meshes) {
|
||||||
renderer->destroyMeshBuffers(mesh->mesh);
|
renderer->destroyMeshBuffers(mesh->mesh);
|
||||||
renderer->destroyMaterialBuffers(mesh->material);
|
renderer->destroyMaterialBuffers(mesh->material);
|
||||||
|
|
||||||
|
delete mesh->mesh;
|
||||||
|
delete mesh->material;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue