[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/view Display.java, 1.62, 1.63
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2007-12-07 11:00:12
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv16588/src/net/sourceforge/bprocessor/gl/view Modified Files: Display.java Log Message: Surfaces with size 4 is drawn as quads Grid generation Index: Display.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view/Display.java,v retrieving revision 1.62 retrieving revision 1.63 diff -C2 -d -r1.62 -r1.63 *** Display.java 3 Dec 2007 17:54:29 -0000 1.62 --- Display.java 7 Dec 2007 11:00:15 -0000 1.63 *************** *** 13,16 **** --- 13,17 ---- import java.util.HashMap; import java.util.HashSet; + import java.util.Iterator; import java.util.LinkedList; import java.util.List; *************** *** 540,552 **** } private static void draw(Surface surface, boolean reverse) { ! glu.gluTessBeginPolygon(tesselator, null); ! drawContour(surface, reverse); ! for (Surface current : surface.getHoles()) { ! if (surface.getOwner() == current.getOwner()) { ! drawContour(current, reverse); } } - glu.gluTessEndPolygon(tesselator); } --- 541,581 ---- } + private static void drawQuad(Surface surface, boolean reverse) { + List<Vertex> vertices = surface.getVertices(); + Iterator<Vertex> iter = vertices.iterator(); + Vertex v0 = iter.next(); + Vertex v1 = iter.next(); + Vertex v2 = iter.next(); + Vertex v3 = iter.next(); + if (reverse) { + gl.glBegin(GL.GL_QUADS); + gl.glVertex3d(v3.getX(), v3.getY(), v3.getZ()); + gl.glVertex3d(v2.getX(), v2.getY(), v2.getZ()); + gl.glVertex3d(v1.getX(), v1.getY(), v1.getZ()); + gl.glVertex3d(v0.getX(), v0.getY(), v0.getZ()); + gl.glEnd(); + } else { + gl.glBegin(GL.GL_QUADS); + gl.glVertex3d(v0.getX(), v0.getY(), v0.getZ()); + gl.glVertex3d(v1.getX(), v1.getY(), v1.getZ()); + gl.glVertex3d(v2.getX(), v2.getY(), v2.getZ()); + gl.glVertex3d(v3.getX(), v3.getY(), v3.getZ()); + gl.glEnd(); + } + } + private static void draw(Surface surface, boolean reverse) { ! if (surface.getEdges().size() == 4 && surface.getHoles().size() == 0) { ! drawQuad(surface, reverse); ! } else { ! glu.gluTessBeginPolygon(tesselator, null); ! drawContour(surface, reverse); ! for (Surface current : surface.getHoles()) { ! if (surface.getOwner() == current.getOwner()) { ! drawContour(current, reverse); ! } } + glu.gluTessEndPolygon(tesselator); } } *************** *** 891,894 **** --- 920,929 ---- } + long t0 = System.currentTimeMillis(); + long tc0 = System.currentTimeMillis(); + long ts0 = 0; + long ts1 = 0; + long te0 = 0; + long te1 = 0; { // Geometry collection *************** *** 987,990 **** --- 1022,1028 ---- } + long tc1 = System.currentTimeMillis(); + + if (interior) { // Geometry rendering *************** *** 1009,1013 **** --- 1047,1053 ---- paintSurfaces(surfaces, alice); } else if (mode == View.LIGHTING_MODE) { + ts0 = System.currentTimeMillis(); paintSurfaces(surfaces, transparency); + ts1 = System.currentTimeMillis(); } else if (mode == View.WIREFRAME_MODE) { // do not paint surfaces *************** *** 1046,1050 **** --- 1086,1094 ---- color = grey; } + + te0 = System.currentTimeMillis(); paintEdges(normal, color, size); + te1 = System.currentTimeMillis(); + paintEdges(smooth, grey, 1.0f); paintStippled(stippled, middleblue, size); *************** *** 1067,1070 **** --- 1111,1124 ---- } } + long t1 = System.currentTimeMillis(); + + long overall = t1 - t0; + long ctime = tc1 - tc0; + long stime = ts1 - ts0; + long etime = te1 - te0; + if (overall > 1000) { + System.out.println(space + " all: " + overall); + System.out.println("c: " + ctime + " s: " + stime + " e: " + etime); + } for (Space current : elements) { draw(current, inside || (current == active)); |