summaryrefslogtreecommitdiffstats
path: root/src/de/gamezock/metacraft/data/VertexBuffer.java
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2010-01-16 17:50:43 +0100
committerMatthias Schiffer <matthias@gamezock.de>2010-01-16 17:50:43 +0100
commit32117d0bf27e0a72165707fe4e56d231136e734b (patch)
treedf5de7dedbfa7084227122505b96a4bc1d0845a0 /src/de/gamezock/metacraft/data/VertexBuffer.java
parentb9cc8e8871de73bf70406913f18b446a1fc723e8 (diff)
downloadmetacraft-32117d0bf27e0a72165707fe4e56d231136e734b.tar
metacraft-32117d0bf27e0a72165707fe4e56d231136e734b.zip
Use index buffers to render tiles
Diffstat (limited to 'src/de/gamezock/metacraft/data/VertexBuffer.java')
-rw-r--r--src/de/gamezock/metacraft/data/VertexBuffer.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/de/gamezock/metacraft/data/VertexBuffer.java b/src/de/gamezock/metacraft/data/VertexBuffer.java
new file mode 100644
index 0000000..c2205a0
--- /dev/null
+++ b/src/de/gamezock/metacraft/data/VertexBuffer.java
@@ -0,0 +1,60 @@
+package de.gamezock.metacraft.data;
+
+import java.nio.FloatBuffer;
+
+import javax.vecmath.Point3f;
+import javax.vecmath.Tuple3f;
+import javax.vecmath.Vector3f;
+
+public class VertexBuffer {
+ private FloatBuffer buffer;
+
+ public VertexBuffer(int num) {
+ buffer = FloatBuffer.allocate(2*3*num);
+ }
+
+ public FloatBuffer getBuffer() {
+ return buffer;
+ }
+
+ private void setTuple(int i, Tuple3f tuple) {
+ buffer.position(3*i);
+
+ buffer.put(tuple.x);
+ buffer.put(tuple.y);
+ buffer.put(tuple.z);
+ }
+
+ private Point3f getTuple(int i) {
+ buffer.position(3*i);
+
+ return new Point3f(buffer.get(), buffer.get(), buffer.get());
+ }
+
+ public void setNormal(int i, Vector3f normal) {
+ setTuple(2*i, normal);
+ }
+
+ public void setVertex(int i, Point3f vertex) {
+ setTuple(2*i + 1, vertex);
+ }
+
+ public Vector3f getNormal(int i) {
+ return new Vector3f(getTuple(2*i));
+ }
+
+ public Point3f getVertex(int i) {
+ return getTuple(2*i + 1);
+ }
+
+ public int getSize() {
+ return buffer.capacity() / (2*3);
+ }
+
+ public void dump() {
+ buffer.clear();
+
+ while(buffer.hasRemaining())
+ System.out.println(buffer.get());
+ }
+}