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));
|