X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2FViewer.java;h=627b4572cf3a346828ee9f3409140abfcb005b68;hp=2ec797f5fdf29453a686c98311521efef891a019;hb=5360ba25cbb730399bf1153292e97cf070a7bec2;hpb=f8763e1d5c2936537f981b840e9487ae22ed9ee7 diff --git a/src/edu/berkeley/qfat/Viewer.java b/src/edu/berkeley/qfat/Viewer.java index 2ec797f..627b457 100644 --- a/src/edu/berkeley/qfat/Viewer.java +++ b/src/edu/berkeley/qfat/Viewer.java @@ -80,33 +80,31 @@ public abstract class Viewer implements GLEventListener, MouseListener, MouseMot projection = Matrix.getProjectionMatrix(gl); } - protected void updateVisibility(GL gl, Mesh mesh) { + protected synchronized void updateVisibility(GL gl, Mesh mesh) { Matrix projection = Matrix.getProjectionMatrix(gl); IntBuffer buf = ByteBuffer.allocateDirect(9*4*4).order(ByteOrder.nativeOrder()).asIntBuffer(); gl.glColor3f(0,0,0); gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - synchronized(this) { - for(Mesh.T t : mesh) t.glTriangle(gl, null); - for(Mesh.Vertex v : mesh.vertices()) { - Point p = v.getPoint(); - gl.glColor3f(1,1,1); + for(Mesh.T t : mesh) t.glTriangle(gl, null); + for(Mesh.Vertex v : mesh.vertices()) { + Point p = v.getPoint(); + gl.glColor3f(1,1,1); + gl.glBegin(gl.GL_POINTS); + p.glVertex(gl); + gl.glEnd(); + gl.glFlush(); + + Point projected = projection.times(p); + gl.glReadPixels((int)projected.x-1, (int)projected.y-1, 3, 3, gl.GL_RGB, gl.GL_UNSIGNED_BYTE, buf); + + boolean vis = false; + for(int j=0; j<9*4; j++) vis |= buf.get(j)!=0; + v.visible = vis; + if (vis) { + gl.glColor3f(0,0,0); gl.glBegin(gl.GL_POINTS); p.glVertex(gl); gl.glEnd(); - gl.glFlush(); - - Point projected = projection.times(p); - gl.glReadPixels((int)projected.x-1, (int)projected.y-1, 3, 3, gl.GL_RGB, gl.GL_UNSIGNED_BYTE, buf); - - boolean vis = false; - for(int j=0; j<9*4; j++) vis |= buf.get(j)!=0; - v.visible = vis; - if (vis) { - gl.glColor3f(0,0,0); - gl.glBegin(gl.GL_POINTS); - p.glVertex(gl); - gl.glEnd(); - } } } gl.glShadeModel(GL.GL_SMOOTH); @@ -171,7 +169,7 @@ public abstract class Viewer implements GLEventListener, MouseListener, MouseMot Vec delta = d1.plus(clickClosest).minus(closest.getPoint()); //System.out.println(delta + " " + closest.getPoint()); System.out.println(getMouse().minus(clickPoint)); - closest.move(Matrix.translate(delta), true); + closest.move(Matrix.translate(delta), false); } } } else {