From 32117d0bf27e0a72165707fe4e56d231136e734b Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 16 Jan 2010 17:50:43 +0100 Subject: Use index buffers to render tiles --- .../gamezock/metacraft/data/IndexedTriangle.java | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/de/gamezock/metacraft/data/IndexedTriangle.java (limited to 'src/de/gamezock/metacraft/data/IndexedTriangle.java') diff --git a/src/de/gamezock/metacraft/data/IndexedTriangle.java b/src/de/gamezock/metacraft/data/IndexedTriangle.java new file mode 100644 index 0000000..9a999d6 --- /dev/null +++ b/src/de/gamezock/metacraft/data/IndexedTriangle.java @@ -0,0 +1,51 @@ +package de.gamezock.metacraft.data; + +import javax.vecmath.Point3f; +import javax.vecmath.Vector3f; + +public class IndexedTriangle { + private VertexBuffer buffer; + + private int[] indices; + private Vector3f normal; + + public IndexedTriangle(VertexBuffer buffer, int v1, int v2, int v3) { + this.buffer = buffer; + + indices = new int[3]; + indices[0] = v1; + indices[1] = v2; + indices[2] = v3; + + Vector3f edge1 = new Vector3f(), edge2 = new Vector3f(); + + Point3f p1 = buffer.getVertex(v1), p2 = buffer.getVertex(v2), p3 = buffer.getVertex(v3); + + edge1.sub(p1, p2); + edge2.sub(p3, p2); + + normal = new Vector3f(); + normal.cross(edge1, edge2); + normal.normalize(); + } + + public VertexBuffer getBuffer() { + return buffer; + } + + public int getIndex(int i) { + return indices[i]; + } + + public Point3f getVertex(int i) { + return buffer.getVertex(indices[i]); + } + + public Vector3f getVertexNormal(int i) { + return buffer.getNormal(indices[i]); + } + + public Vector3f getNormal() { + return normal; + } +} -- cgit v1.2.3