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