summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/robotrace/Base.java25
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);