diff options
| author | makamys <makamys@outlook.com> | 2022-06-06 23:13:42 +0200 |
|---|---|---|
| committer | makamys <makamys@outlook.com> | 2022-06-07 01:24:22 +0200 |
| commit | 9886fb39669fd7b4fe2a6f109897be2244813586 (patch) | |
| tree | aafda6ebadba60f580c16f3bf982403e3623bf0a /src/main/java/makamys/lodmod/util | |
| parent | fd1ab256fc8a88affaacb71095e55318f0289036 (diff) | |
| download | Neodymium-9886fb39669fd7b4fe2a6f109897be2244813586.tar.gz Neodymium-9886fb39669fd7b4fe2a6f109897be2244813586.tar.bz2 Neodymium-9886fb39669fd7b4fe2a6f109897be2244813586.zip | |
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.
Diffstat (limited to 'src/main/java/makamys/lodmod/util')
| -rw-r--r-- | src/main/java/makamys/lodmod/util/BufferWriter.java | 46 | ||||
| -rw-r--r-- | src/main/java/makamys/lodmod/util/Util.java | 6 |
2 files changed, 50 insertions, 2 deletions
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 diff --git a/src/main/java/makamys/lodmod/util/Util.java b/src/main/java/makamys/lodmod/util/Util.java index ae80b78..851e6f5 100644 --- a/src/main/java/makamys/lodmod/util/Util.java +++ b/src/main/java/makamys/lodmod/util/Util.java @@ -53,9 +53,11 @@ public class Util { } public static byte[] byteBufferToArray(ByteBuffer buffer) { - byte[] dst = new byte[buffer.remaining()]; + byte[] dst = new byte[buffer.limit()]; + int pos = buffer.position(); + buffer.position(0); buffer.get(dst); - buffer.flip(); + buffer.position(pos); return dst; } |
