summaryrefslogtreecommitdiffstats
path: root/src/de/gamezock/metacraft/data/VertexBuffer.java
diff options
context:
space:
mode:
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());
+ }
+}