diff options
Diffstat (limited to 'src/robotrace/Base.java')
-rw-r--r-- | src/robotrace/Base.java | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/robotrace/Base.java b/src/robotrace/Base.java index 0f67ce6..e083afd 100644 --- a/src/robotrace/Base.java +++ b/src/robotrace/Base.java @@ -4,6 +4,7 @@ import com.jogamp.opengl.util.FPSAnimator; import com.jogamp.opengl.util.gl2.GLUT; import com.jogamp.opengl.util.texture.Texture; import com.jogamp.opengl.util.texture.TextureIO; +import java.awt.BorderLayout; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; @@ -20,6 +21,7 @@ import javax.media.opengl.GL; import javax.media.opengl.GL2; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLEventListener; +import javax.media.opengl.awt.GLCanvas; import javax.media.opengl.awt.GLJPanel; import javax.media.opengl.glu.GLU; import javax.swing.UIManager; @@ -107,21 +109,26 @@ abstract public class Base { // Redirect OpenGL listener to the abstract render functions. GLJPanel glPanel = (GLJPanel) frame.glPanel; - glPanel.addGLEventListener(new GLEventDelegate()); + + // HACK: get better performance + GLCanvas glCanvas = new GLCanvas(); + frame.remove(glPanel); + frame.getContentPane().add(glCanvas, BorderLayout.CENTER); + glCanvas.addGLEventListener(new GLEventDelegate()); // Attach mouse and keyboard listeners. GLListener listener = new GLListener(); - glPanel.addMouseListener(listener); - glPanel.addMouseMotionListener(listener); - glPanel.addMouseWheelListener(listener); - glPanel.addKeyListener(listener); - glPanel.setFocusable(true); - glPanel.requestFocusInWindow(); - + glCanvas.addMouseListener(listener); + glCanvas.addMouseMotionListener(listener); + glCanvas.addMouseWheelListener(listener); + glCanvas.addKeyListener(listener); + glCanvas.setFocusable(true); + glCanvas.requestFocusInWindow(); + // Attach animator to OpenGL panel and begin refresh // at the specified number of frames per second. final FPSAnimator animator = - new FPSAnimator((GLJPanel) frame.glPanel, FPS, true); + new FPSAnimator(glCanvas, FPS, true); animator.setIgnoreExceptions(false); animator.setPrintExceptions(true); |