From 489c7122bf2f358c50588599e54bf38cfd62d5b3 Mon Sep 17 00:00:00 2001 From: adam Date: Wed, 28 Jan 2009 13:09:53 -0800 Subject: [PATCH] MeshViewer: better double-buffering darcs-hash:20090128210953-5007d-169c971257a43a95ee7e49d83059c0328eaae0a8.gz --- src/edu/berkeley/qfat/MeshViewer.java | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/edu/berkeley/qfat/MeshViewer.java b/src/edu/berkeley/qfat/MeshViewer.java index a0e236d..2fe4200 100644 --- a/src/edu/berkeley/qfat/MeshViewer.java +++ b/src/edu/berkeley/qfat/MeshViewer.java @@ -50,6 +50,9 @@ public class MeshViewer extends JPanel implements GLEventListener, MouseListener public synchronized void init(GLAutoDrawable gld) { GL gl = glcanvas.getGL();//gld.getGL(); + + gl.glEnable(gl.GL_DOUBLEBUFFER); + gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); gl.glViewport(0, 0, 500, 300); gl.glEnable(GL.GL_DEPTH_TEST); @@ -86,6 +89,14 @@ public class MeshViewer extends JPanel implements GLEventListener, MouseListener GL gl = glcanvas.getGL();//drawable.getGL(); GLU glu = new GLU(); + gl.glDrawBuffer(GL.GL_BACK); + + if (updateVisibilities) { + updateVisibilities = false; + // update vertex visibilities + updateVisibility(gl); + } + gl.glDrawBuffer(GL.GL_BACK); if (!mouseInside) gl.glClearColor(0.1f, 0.1f, 0.1f, 1.0f); else gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); @@ -185,12 +196,6 @@ public class MeshViewer extends JPanel implements GLEventListener, MouseListener projection = Matrix.getProjectionMatrix(gl); - if (updateVisibilities) { - updateVisibilities = false; - // update vertex visibilities - updateVisibility(gl); - } - if (updateClosest) { updateClosest = false; double dist = Double.MAX_VALUE; @@ -224,6 +229,9 @@ public class MeshViewer extends JPanel implements GLEventListener, MouseListener } } } + gl.glFlush(); + glcanvas.setAutoSwapBufferMode(false); + glcanvas.swapBuffers(); } protected synchronized void updateVisibility(GL gl) { -- 1.7.10.4