From 9cb41d127063297432f768f7cb0f466b76921103 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Mon, 18 Jan 2010 21:18:07 +0100 Subject: Give up tile based maps; maps look much better now --- src/de/gamezock/metacraft/ui/Main.java | 42 ++++++++++++++---------------- src/de/gamezock/metacraft/ui/Renderer.java | 37 ++++++-------------------- 2 files changed, 27 insertions(+), 52 deletions(-) (limited to 'src/de/gamezock/metacraft/ui') diff --git a/src/de/gamezock/metacraft/ui/Main.java b/src/de/gamezock/metacraft/ui/Main.java index f5eb3f9..287af22 100644 --- a/src/de/gamezock/metacraft/ui/Main.java +++ b/src/de/gamezock/metacraft/ui/Main.java @@ -16,16 +16,17 @@ import javax.media.opengl.awt.GLCanvas; import javax.media.opengl.glu.GLU; import de.gamezock.metacraft.data.Map; +import de.gamezock.metacraft.data.TestMap; public class Main implements GLEventListener { private Renderer renderer = new Renderer(this); private Frame frame = new Frame("metacraft"); private GLCanvas canvas; - private GLU glu = new GLU(); - private Map currentMap = new Map(); + private Map currentMap = new TestMap(); + public Main() { GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GL2)); @@ -56,27 +57,6 @@ public class Main implements GLEventListener { frame.setVisible(true); canvas.requestFocusInWindow(); - - try { - Thread.sleep(500); - } catch (InterruptedException e) { - } - - new Thread(new Runnable() { - - @Override - public void run() { - while(true) { - try { - Thread.sleep(10); - } catch (InterruptedException e) { - } - - canvas.display(); - } - } - - }).start(); } Map getCurrentMap() { @@ -117,6 +97,22 @@ public class Main implements GLEventListener { gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION, new float[] {10, 10, 10, 1}, 0); gl.glMaterialfv(GL.GL_FRONT, GL2.GL_SPECULAR, new float[] {0, 0, 0, 0}, 0); + + new Thread(new Runnable() { + + @Override + public void run() { + while(true) { + canvas.display(); + + try { + Thread.sleep(10); + } catch (InterruptedException e) { + } + } + } + + }).start(); } @Override diff --git a/src/de/gamezock/metacraft/ui/Renderer.java b/src/de/gamezock/metacraft/ui/Renderer.java index 6d8d04a..8d4b8d2 100644 --- a/src/de/gamezock/metacraft/ui/Renderer.java +++ b/src/de/gamezock/metacraft/ui/Renderer.java @@ -1,14 +1,11 @@ package de.gamezock.metacraft.ui; import java.nio.IntBuffer; -import java.util.List; import javax.media.opengl.GL; import javax.media.opengl.GL2; -import de.gamezock.metacraft.data.IndexedTriangle; import de.gamezock.metacraft.data.Map; -import de.gamezock.metacraft.data.Tile; import de.gamezock.metacraft.data.VertexBuffer; public class Renderer { @@ -18,22 +15,6 @@ public class Renderer { this.main = main; } - private void renderTile(GL2 gl, Tile tile) { - List triangles = tile.getData().getTriangles(); - - if(triangles.isEmpty()) - return; - - VertexBuffer buffer = triangles.get(0).getBuffer(); - - gl.glInterleavedArrays(GL2.GL_N3F_V3F, 0, buffer.getBuffer().clear()); - - IntBuffer indexBuffer = tile.getData().getIndexBuffer(); - indexBuffer.clear(); - - gl.glDrawElements(GL.GL_TRIANGLES, indexBuffer.capacity(), GL2.GL_UNSIGNED_INT, indexBuffer); - } - public void render(GL2 gl) { gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); @@ -48,16 +29,14 @@ public class Renderer { gl.glColor3f(1, 1, 1); - for(int x = 0; x < currentMap.getWidth(); ++x) { - for(int y = 0; y < currentMap.getHeight(); ++y) { - gl.glPushMatrix(); - - gl.glTranslatef(currentMap.getTileSize()*x, currentMap.getTileSize()*y, currentMap.getTileHeight(x, y)); - renderTile(gl, currentMap.getTile(x, y)); - - gl.glPopMatrix(); - } - } + VertexBuffer buffer = currentMap.getVertexBuffer(); + + gl.glInterleavedArrays(GL2.GL_N3F_V3F, 0, buffer.getBuffer().clear()); + + IntBuffer indexBuffer = currentMap.getIndexBuffer(); + indexBuffer.clear(); + + gl.glDrawElements(GL.GL_TRIANGLES, indexBuffer.capacity(), GL2.GL_UNSIGNED_INT, indexBuffer); gl.glPopMatrix(); } -- cgit v1.2.3