From f05eac2637fcdf5b4c30e95ae50fc73e272ea3ba Mon Sep 17 00:00:00 2001 From: James Seibel Date: Tue, 6 Aug 2024 20:47:23 -0500 Subject: [PATCH] test --- .../render/bufferBuilding/ColumnRenderBuffer.java | 5 +++++ .../render/bufferBuilding/LodQuadBuilder.java | 9 ++++----- .../render/glObject/buffer/QuadElementBuffer.java | 5 ++++- .../core/render/renderer/ScreenQuad.java | 5 +++-- .../renderer/generic/GenericObjectRenderer.java | 11 +++++------ 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBuffer.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBuffer.java index cea580bc5..6b6807787 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBuffer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBuffer.java @@ -33,6 +33,7 @@ import com.seibel.distanthorizons.core.util.objects.StatsMap; import com.seibel.distanthorizons.api.enums.config.EDhApiGpuUploadMethod; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper; import org.apache.logging.log4j.Logger; +import org.lwjgl.system.MemoryUtil; import java.nio.ByteBuffer; import java.util.Iterator; @@ -220,6 +221,10 @@ public class ColumnRenderBuffer implements AutoCloseable vbos[vboIndex] = null; vbo.close(); LOGGER.error("Failed to upload buffer: ", e); + } + finally + { + MemoryUtil.memFree(bb); } 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 b9db5c836..12e2daf01 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 @@ -38,6 +38,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftCli import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; import com.seibel.distanthorizons.coreapi.util.MathUtil; import org.apache.logging.log4j.Logger; +import org.lwjgl.system.MemoryUtil; /** * Used to create the quads before they are converted to render-able buffers.

@@ -414,9 +415,8 @@ public class LodQuadBuilder { return new Iterator() { - final ByteBuffer bb = ByteBuffer.allocateDirect(ColumnRenderBuffer.FULL_SIZED_BUFFER) - .order(ByteOrder.nativeOrder()); - int dir = skipEmpty(0); + final ByteBuffer bb = MemoryUtil.memAlloc(ColumnRenderBuffer.FULL_SIZED_BUFFER); + int dir = this.skipEmpty(0); int quad = 0; private int skipEmpty(int d) @@ -482,8 +482,7 @@ public class LodQuadBuilder { return new Iterator() { - final ByteBuffer bb = ByteBuffer.allocateDirect(ColumnRenderBuffer.FULL_SIZED_BUFFER) - .order(ByteOrder.nativeOrder()); + final ByteBuffer bb = MemoryUtil.memAlloc(ColumnRenderBuffer.FULL_SIZED_BUFFER); int directionIndex = this.skipEmptyDirectionIndices(0); int quad = 0; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/buffer/QuadElementBuffer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/buffer/QuadElementBuffer.java index 915d70c3d..f01ff0abd 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/buffer/QuadElementBuffer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/buffer/QuadElementBuffer.java @@ -25,6 +25,7 @@ import com.seibel.distanthorizons.core.render.glObject.GLEnums; import com.seibel.distanthorizons.core.render.glObject.GLProxy; import org.apache.logging.log4j.Logger; import org.lwjgl.opengl.GL32; +import org.lwjgl.system.MemoryUtil; import java.lang.invoke.MethodHandles; import java.nio.ByteBuffer; @@ -154,7 +155,7 @@ public class QuadElementBuffer extends GLElementBuffer LOGGER.info("Quad IBO Resizing from [" + getCapacity() + "] to [" + quadCount + "]" + " with type: " + GLEnums.getString(type)); - ByteBuffer buffer = ByteBuffer.allocateDirect(indicesCount * GLEnums.getTypeSize(type)).order(ByteOrder.nativeOrder()); + ByteBuffer buffer = MemoryUtil.memAlloc(indicesCount * GLEnums.getTypeSize(type)); buildBuffer(quadCount, buffer, type); if (!gl.bufferStorageSupported) { @@ -169,6 +170,8 @@ public class QuadElementBuffer extends GLElementBuffer super.uploadBuffer(buffer, EDhApiGpuUploadMethod.BUFFER_STORAGE, indicesCount * GLEnums.getTypeSize(type), 0); } + + MemoryUtil.memFree(buffer); } } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/ScreenQuad.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/ScreenQuad.java index 2f9abd294..b551ffcdd 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/ScreenQuad.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/ScreenQuad.java @@ -24,6 +24,7 @@ import com.seibel.distanthorizons.core.render.glObject.buffer.GLVertexBuffer; import com.seibel.distanthorizons.core.render.glObject.vertexAttribute.AbstractVertexAttribute; import com.seibel.distanthorizons.core.render.glObject.vertexAttribute.VertexPointer; import org.lwjgl.opengl.GL32; +import org.lwjgl.system.MemoryUtil; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -86,14 +87,14 @@ public class ScreenQuad private void createBuffer() { - ByteBuffer buffer = ByteBuffer.allocateDirect(box_vertices.length * Float.BYTES); - buffer.order(ByteOrder.nativeOrder()); + ByteBuffer buffer = MemoryUtil.memAlloc(box_vertices.length * Float.BYTES); buffer.asFloatBuffer().put(box_vertices); buffer.rewind(); this.boxBuffer = new GLVertexBuffer(false); this.boxBuffer.bind(); this.boxBuffer.uploadBuffer(buffer, box_vertices.length, EDhApiGpuUploadMethod.DATA, box_vertices.length * Float.BYTES); + MemoryUtil.memFree(buffer); } } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/GenericObjectRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/GenericObjectRenderer.java index b3768548d..41baf1522 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/GenericObjectRenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/GenericObjectRenderer.java @@ -50,6 +50,7 @@ import org.apache.logging.log4j.Logger; import org.lwjgl.opengl.ARBInstancedArrays; import org.lwjgl.opengl.GL32; import org.lwjgl.opengl.GL33; +import org.lwjgl.system.MemoryUtil; import java.awt.*; import java.nio.ByteBuffer; @@ -192,24 +193,22 @@ public class GenericObjectRenderer implements IDhApiCustomRenderRegister private void createBuffers() { // box vertices - ByteBuffer boxVerticesBuffer = ByteBuffer.allocateDirect(BOX_VERTICES.length * Float.BYTES); - boxVerticesBuffer.order(ByteOrder.nativeOrder()); + ByteBuffer boxVerticesBuffer = MemoryUtil.memAlloc(BOX_VERTICES.length * Float.BYTES); boxVerticesBuffer.asFloatBuffer().put(BOX_VERTICES); boxVerticesBuffer.rewind(); this.boxVertexBuffer = new GLVertexBuffer(false); this.boxVertexBuffer.bind(); this.boxVertexBuffer.uploadBuffer(boxVerticesBuffer, 8, EDhApiGpuUploadMethod.DATA, BOX_VERTICES.length * Float.BYTES); - + MemoryUtil.memFree(boxVerticesBuffer); // box vertex indexes - ByteBuffer solidIndexBuffer = ByteBuffer.allocateDirect(BOX_INDICES.length * Integer.BYTES); - solidIndexBuffer.order(ByteOrder.nativeOrder()); + ByteBuffer solidIndexBuffer = MemoryUtil.memAlloc(BOX_INDICES.length * Integer.BYTES); solidIndexBuffer.asIntBuffer().put(BOX_INDICES); solidIndexBuffer.rewind(); this.boxIndexBuffer = new GLElementBuffer(false); this.boxIndexBuffer.uploadBuffer(solidIndexBuffer, EDhApiGpuUploadMethod.DATA, BOX_INDICES.length * Integer.BYTES, GL32.GL_STATIC_DRAW); this.boxIndexBuffer.bind(); - + MemoryUtil.memFree(solidIndexBuffer); } private void addGenericDebugObjects() {