diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/objects/BlazeGenericObjectVertexContainer.java b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/objects/BlazeGenericObjectVertexContainer.java index a0b3e3c15..853a0faf6 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/objects/BlazeGenericObjectVertexContainer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/blaze/objects/BlazeGenericObjectVertexContainer.java @@ -84,6 +84,7 @@ public class BlazeGenericObjectVertexContainer implements IDhGenericObjectVertex //===========================// //region + @Override public void updateVertexData(List uploadBoxList) { int boxCount = uploadBoxList.size(); @@ -188,14 +189,14 @@ public class BlazeGenericObjectVertexContainer implements IDhGenericObjectVertex } this.vertexBuffer.flip(); this.indexBuffer.flip(); - - - this.state = BlazeGenericObjectVertexContainer.EState.READY_TO_UPLOAD; } private int vertexBufferSize() { - int faceCount = this.uploadedBoxCount * 6; + // minimum of 1 box to prevent trying to create a buffer of size 0 + int boxCount = Math.max(this.uploadedBoxCount, 1); + + int faceCount = boxCount * 6; int vertexCount = faceCount * 6; int byteSize = vertexCount * 3 * Float.BYTES; // x,y,z @@ -205,11 +206,15 @@ public class BlazeGenericObjectVertexContainer implements IDhGenericObjectVertex } private int indexBufferSize() { - int quadCount = this.uploadedBoxCount * 36; + // minimum of 1 box to prevent trying to create a buffer of size 0 + int boxCount = Math.max(this.uploadedBoxCount, 1); + + int quadCount = boxCount * 36; int byteSize = quadCount * GLEnums.getTypeSize(GL32.GL_UNSIGNED_INT) * 6; return byteSize; } + @Override public void uploadDataToGpu() { // vertex @@ -245,8 +250,6 @@ public class BlazeGenericObjectVertexContainer implements IDhGenericObjectVertex COMMAND_ENCODER.writeToBuffer(bufferSlice, this.indexBuffer); } - - this.state = EState.RENDER; } private String getVertexBufferName() { return "distantHorizons:GenericVertexBuffer"; } private String getIndexBufferName() { return "distantHorizons:GenericIndexBuffer"; } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/render/openGl/generic/GlGenericObjectVertexContainer.java b/common/src/main/java/com/seibel/distanthorizons/common/render/openGl/generic/GlGenericObjectVertexContainer.java index 48eb20f31..054d7b149 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/render/openGl/generic/GlGenericObjectVertexContainer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/render/openGl/generic/GlGenericObjectVertexContainer.java @@ -105,10 +105,9 @@ public class GlGenericObjectVertexContainer implements IDhGenericObjectVertexBuf this.materialData[i] = box.material; } - - this.state = GlGenericObjectVertexContainer.EState.READY_TO_UPLOAD; } + @Override public void uploadDataToGpu() { this.tryCreateBuffers(); @@ -128,8 +127,6 @@ public class GlGenericObjectVertexContainer implements IDhGenericObjectVertexBuf // Upload materials GL32.glBindBuffer(GL32.GL_ARRAY_BUFFER, this.material); GL32.glBufferData(GL32.GL_ARRAY_BUFFER, this.materialData, GL32.GL_DYNAMIC_DRAW); - - this.state = EState.RENDER; } /** needs to be done on the render thread */ private void tryCreateBuffers() diff --git a/coreSubProjects b/coreSubProjects index cd5a3ce52..aa5383577 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit cd5a3ce52b91cca240cf87b2ea68c8212f759382 +Subproject commit aa5383577265030c1be4e4400a7f61826769bfce