From 9886fb39669fd7b4fe2a6f109897be2244813586 Mon Sep 17 00:00:00 2001 From: makamys Date: Mon, 6 Jun 2022 23:13:42 +0200 Subject: Don't use MeshQuads when mesh optimization is disabled Fixes some rendering issues (like cacti on chunk corners, and missing bottom faces) and improves performance, when optimization is not enabled. --- .../java/makamys/lodmod/util/BufferWriter.java | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/main/java/makamys/lodmod/util/BufferWriter.java (limited to 'src/main/java/makamys/lodmod/util/BufferWriter.java') diff --git a/src/main/java/makamys/lodmod/util/BufferWriter.java b/src/main/java/makamys/lodmod/util/BufferWriter.java new file mode 100644 index 0000000..ae81be1 --- /dev/null +++ b/src/main/java/makamys/lodmod/util/BufferWriter.java @@ -0,0 +1,46 @@ +package makamys.lodmod.util; + +import java.nio.ByteBuffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.nio.ShortBuffer; + +public class BufferWriter { + + private ByteBuffer buf; + + private FloatBuffer floatBuffer; + private ShortBuffer shortBuffer; + private IntBuffer intBuffer; + + public BufferWriter(ByteBuffer buf) { + this.buf = buf; + this.floatBuffer = buf.asFloatBuffer(); + this.shortBuffer = buf.asShortBuffer(); + this.intBuffer = buf.asIntBuffer(); + } + + private void incrementPosition(int add) { + buf.position(buf.position() + add); + floatBuffer.position(buf.position() / 4); + shortBuffer.position(buf.position() / 2); + intBuffer.position(buf.position() / 4); + } + + public void writeFloat(float x) { + try { + floatBuffer.put(x); + + incrementPosition(4); + } catch(Exception e){ + e.printStackTrace(); + } + } + + public void writeInt(int x) { + intBuffer.put(x); + + incrementPosition(4); + } + +} \ No newline at end of file -- cgit