aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/makamys/lodmod/util/BufferWriter.java
diff options
context:
space:
mode:
authormakamys <makamys@outlook.com>2022-06-06 23:13:42 +0200
committermakamys <makamys@outlook.com>2022-06-07 01:24:22 +0200
commit9886fb39669fd7b4fe2a6f109897be2244813586 (patch)
treeaafda6ebadba60f580c16f3bf982403e3623bf0a /src/main/java/makamys/lodmod/util/BufferWriter.java
parentfd1ab256fc8a88affaacb71095e55318f0289036 (diff)
downloadNeodymium-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/BufferWriter.java')
-rw-r--r--src/main/java/makamys/lodmod/util/BufferWriter.java46
1 files changed, 46 insertions, 0 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