diff --git a/src/main/java/me/cortex/zenith/client/core/rendering/GeometryManager.java b/src/main/java/me/cortex/zenith/client/core/rendering/GeometryManager.java index 3967e3be..af55e580 100644 --- a/src/main/java/me/cortex/zenith/client/core/rendering/GeometryManager.java +++ b/src/main/java/me/cortex/zenith/client/core/rendering/GeometryManager.java @@ -145,6 +145,9 @@ public class GeometryManager { } public void free() { + while (!this.buildResults.isEmpty()) { + this.buildResults.pop().free(); + } this.sectionMetaBuffer.free(); this.geometryBuffer.free(); } diff --git a/src/main/java/me/cortex/zenith/client/core/rendering/building/RenderGenerationService.java b/src/main/java/me/cortex/zenith/client/core/rendering/building/RenderGenerationService.java index aa5d051e..a090bc66 100644 --- a/src/main/java/me/cortex/zenith/client/core/rendering/building/RenderGenerationService.java +++ b/src/main/java/me/cortex/zenith/client/core/rendering/building/RenderGenerationService.java @@ -57,6 +57,8 @@ public class RenderGenerationService { int buildFlags = task.flagSupplier.applyAsInt(section); if (buildFlags != 0) { var mesh = factory.generateMesh(section, buildFlags); + section.release(); + this.resultConsumer.accept(mesh.clone()); if (false) { @@ -67,8 +69,9 @@ public class RenderGenerationService { } else { mesh.free(); } + } else { + section.release(); } - section.release(); } }