From 63e1c12564381fcd7b0d5cebb626231bf8dea068 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 12 Apr 2026 15:18:11 -0500 Subject: [PATCH] use down stream IBOs instead of re-creating at upload --- .../wrappers/buffer/BlazeVertexBufferWrapper.java | 7 +------ .../render/openGl/glObject/buffer/GLVertexBuffer.java | 10 +++++++--- .../openGl/glObject/buffer/GlQuadIndexBuffer.java | 6 +----- coreSubProjects | 2 +- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/buffer/BlazeVertexBufferWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/buffer/BlazeVertexBufferWrapper.java index 20475ab49..0898b1f54 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/buffer/BlazeVertexBufferWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/wrappers/buffer/BlazeVertexBufferWrapper.java @@ -140,7 +140,7 @@ public class BlazeVertexBufferWrapper implements IVertexBufferWrapper } @Override - public void uploadIndexBuffer(ByteBuffer buffer, int vertexCount) + public void uploadIndexBuffer(ByteBuffer indexBuffer, int vertexCount) { int oldIndexCount = this.indexCount; // 4 vertices per face, but 6 indices (IE 2 triangles) per face, aka need to multiply by 1.5 @@ -169,17 +169,12 @@ public class BlazeVertexBufferWrapper implements IVertexBufferWrapper this.indexGpuBuffer.close(); } - ByteBuffer indexBuffer = IndexBufferBuilder.createBuffer(this.vertexCount); - int usage = GpuBuffer.USAGE_COPY_DST | GpuBuffer.USAGE_INDEX; this.indexGpuBuffer = GPU_DEVICE.createBuffer(BlazeVertexBufferWrapper::getIndexBufferName, usage, indexBuffer.capacity()); GpuBufferSlice bufferSlice = new GpuBufferSlice(this.indexGpuBuffer, /*offset*/ 0, indexBuffer.capacity()); COMMAND_ENCODER.writeToBuffer(bufferSlice, indexBuffer); - - MemoryUtil.memFree(indexBuffer); - } } private static String getIndexBufferName() { return "distantHorizons:LodIndexBuffer"; } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/openGl/glObject/buffer/GLVertexBuffer.java b/common/src/main/java/com/seibel/distanthorizons/common/render/openGl/glObject/buffer/GLVertexBuffer.java index 48d2c5f1d..13e4ceb6d 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/openGl/glObject/buffer/GLVertexBuffer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/openGl/glObject/buffer/GLVertexBuffer.java @@ -22,15 +22,16 @@ package com.seibel.distanthorizons.common.render.openGl.glObject.buffer; import java.nio.ByteBuffer; import com.seibel.distanthorizons.common.render.openGl.glObject.GLProxy; +import com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding.IndexBufferBuilder; import com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding.LodQuadBuilder; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; -import com.seibel.distanthorizons.core.jar.EPlatform; import com.seibel.distanthorizons.core.render.RenderThreadTaskHandler; import com.seibel.distanthorizons.core.wrapperInterfaces.render.AbstractDhRenderApiDefinition; import com.seibel.distanthorizons.core.wrapperInterfaces.render.objects.IVertexBufferWrapper; import org.lwjgl.opengl.GL32; import com.seibel.distanthorizons.api.enums.config.EDhApiGpuUploadMethod; +import org.lwjgl.system.MemoryUtil; /** * This is a container for a OpenGL @@ -83,7 +84,10 @@ public class GLVertexBuffer extends GLBuffer implements IVertexBufferWrapper int maxSize = LodQuadBuilder.getMaxBufferByteSize(); int maxVertexCount = maxSize / LodQuadBuilder.BYTES_PER_VERTEX; int maxQuadCount = (maxVertexCount / 4); - GLOBAL_QUAD_IBO.upload(maxQuadCount); + + ByteBuffer buffer = IndexBufferBuilder.createBuffer(maxQuadCount); + GLOBAL_QUAD_IBO.upload(buffer, maxQuadCount); + MemoryUtil.memFree(buffer); }); } } @@ -158,7 +162,7 @@ public class GLVertexBuffer extends GLBuffer implements IVertexBufferWrapper this.quadIBO = new GlQuadIndexBuffer(); int quadCount = (vertexCount / 4); - this.quadIBO.upload(quadCount); + this.quadIBO.upload(buffer, quadCount); } //endregion diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/openGl/glObject/buffer/GlQuadIndexBuffer.java b/common/src/main/java/com/seibel/distanthorizons/common/render/openGl/glObject/buffer/GlQuadIndexBuffer.java index 0e3a4ecef..8944b5107 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/openGl/glObject/buffer/GlQuadIndexBuffer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/openGl/glObject/buffer/GlQuadIndexBuffer.java @@ -43,7 +43,7 @@ public class GlQuadIndexBuffer extends GLIndexBuffer public GlQuadIndexBuffer() { super(false); } - public void upload(int quadCount) + public void upload(ByteBuffer buffer, int quadCount) { if (quadCount < 0) { @@ -63,12 +63,8 @@ public class GlQuadIndexBuffer extends GLIndexBuffer } this.glType = GL32.GL_UNSIGNED_INT; - ByteBuffer buffer = IndexBufferBuilder.createBuffer(quadCount); - this.bind(); super.uploadBuffer(buffer, EDhApiGpuUploadMethod.DATA, this.indicesCount * GLEnums.getTypeSize(this.glType), GL32.GL_STATIC_DRAW); - - MemoryUtil.memFree(buffer); } //endregion diff --git a/coreSubProjects b/coreSubProjects index a44c5d562..d62d21776 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit a44c5d562d3603a4f1941e4de80efd7d9cecd1a3 +Subproject commit d62d21776d8afdc5b76e73a9ec642f0d56cc9474