clean up memory after model not needed

Ginger2
hYdos 2020-03-06 20:49:56 +10:00
parent 5324a6c1c9
commit 0627e671ef
4 changed files with 18 additions and 13 deletions

View File

@ -1,7 +1,7 @@
package com.github.hydos.ginger;
import com.github.hydos.ginger.engine.vulkan.VKVariables;
import com.github.hydos.ginger.engine.vulkan.render.VKRenderManager;
import com.github.hydos.ginger.engine.vulkan.render.*;
import com.github.hydos.ginger.engine.vulkan.render.renderers.EntityRenderer;
public class GingerVK
@ -24,5 +24,12 @@ public class GingerVK
entityRenderer = new EntityRenderer();
VKVariables.renderManager.addRenderer(entityRenderer);
}
public void cleanup()
{
for(VKBufferMesh bufferMesh: entityRenderer.entities) {
bufferMesh.cleanup();
}
}
}

View File

@ -70,11 +70,6 @@ public class VKVariables
public static VKVertex[] vertices; //TODO: remove and properly add model loading
public static int[] indices;
public static long vertexBuffer;
public static long vertexBufferMemory;
public static long indexBuffer;
public static long indexBufferMemory;
public static List<Long> uniformBuffers;
public static List<Long> uniformBuffersMemory;

View File

@ -1,5 +1,8 @@
package com.github.hydos.ginger.engine.vulkan.render;
import static org.lwjgl.vulkan.VK10.*;
import com.github.hydos.ginger.engine.vulkan.VKVariables;
import com.github.hydos.ginger.engine.vulkan.model.VKVertex;
import com.github.hydos.ginger.engine.vulkan.model.VKModelLoader.VKMesh;
@ -14,6 +17,12 @@ public class VKBufferMesh
public long vertexBufferMemory;
public long indexBufferMemory;
public void cleanup() {
vkDestroyBuffer(VKVariables.device, indexBuffer, null);
vkFreeMemory(VKVariables.device, indexBufferMemory, null);
vkDestroyBuffer(VKVariables.device, vertexBuffer, null);
vkFreeMemory(VKVariables.device, vertexBufferMemory, null);
}
}

View File

@ -36,12 +36,6 @@ public class VKUtils
vkDestroyDescriptorSetLayout(VKVariables.device, VKVariables.descriptorSetLayout, null);
vkDestroyBuffer(VKVariables.device, VKVariables.indexBuffer, null);
vkFreeMemory(VKVariables.device, VKVariables.indexBufferMemory, null);
vkDestroyBuffer(VKVariables.device, VKVariables.vertexBuffer, null);
vkFreeMemory(VKVariables.device, VKVariables.vertexBufferMemory, null);
VKVariables.inFlightFrames.forEach(frame -> {
vkDestroySemaphore(VKVariables.device, frame.renderFinishedSemaphore(), null);