diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/IndexBufferBuilder.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/IndexBufferBuilder.java index d191aed26..ba3c14dba 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/IndexBufferBuilder.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/IndexBufferBuilder.java @@ -1,7 +1,5 @@ package com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding; -import org.lwjgl.system.MemoryUtil; - import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -14,11 +12,10 @@ public class IndexBufferBuilder //==========// //region - /** Buffer should be freed by {@link MemoryUtil#memFree} */ public static ByteBuffer createBuffer(int quadCount) { int indexCount = quadCount * 6; // 2 triangles per quad - ByteBuffer buffer = MemoryUtil.memAlloc(indexCount * Integer.BYTES); + ByteBuffer buffer = ByteBuffer.allocateDirect(indexCount * Integer.BYTES); buffer.order(ByteOrder.nativeOrder()); buildBufferInt(quadCount, buffer); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodBufferContainer.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodBufferContainer.java index 6b1acd33e..737ff30da 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodBufferContainer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodBufferContainer.java @@ -32,7 +32,6 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.render.AbstractDhRender import com.seibel.distanthorizons.core.wrapperInterfaces.render.objects.ILodContainerUniformBufferWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.render.objects.IVertexBufferWrapper; import org.jetbrains.annotations.Nullable; -import org.lwjgl.system.MemoryUtil; import java.nio.ByteBuffer; import java.util.ArrayList; @@ -208,39 +207,8 @@ public class LodBufferContainer implements AutoCloseable - //====================// - // CPU Buffer cleanup // - //====================// - //region - - future.whenComplete((LodBufferContainer lodBufferContainer, Throwable throwable) -> - { - // all the buffers must be manually freed to prevent memory leaks - - tryFreeByteBufferList(opaqueBuffers); - tryFreeByteBufferList(transparentBuffers); - - tryFreeByteBufferList(opaqueIndexBuffers); - tryFreeByteBufferList(transparentIndexBuffers); - - }); - - //endregion - - - return future; } - private static void tryFreeByteBufferList(@Nullable ArrayList list) - { - if (list != null) - { - for (ByteBuffer buffer : list) - { - MemoryUtil.memFree(buffer); - } - } - } private ArrayList createIndexBuffers(ArrayList vertexBuffers) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodQuadBuilder.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodQuadBuilder.java index 35322ae1f..def9c07f9 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodQuadBuilder.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodQuadBuilder.java @@ -20,6 +20,7 @@ package com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.util.*; import com.seibel.distanthorizons.api.enums.config.EDhApiGrassSideRendering; @@ -33,7 +34,6 @@ import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.coreapi.util.ColorUtil; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; -import org.lwjgl.system.MemoryUtil; /** * Used to create the quads before they are converted to render-able buffers.

@@ -337,7 +337,8 @@ public class LodQuadBuilder implements AutoCloseable if (buffer == null || buffer.remaining() < BYTES_PER_QUAD) { - buffer = MemoryUtil.memAlloc(getMaxBufferByteSize()); + buffer = ByteBuffer.allocateDirect(getMaxBufferByteSize()); + buffer.order(ByteOrder.nativeOrder()); byteBufferList.add(buffer); }