1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| import java.awt.Dimension; import javax.media.opengl.*; import javax.swing.*; import com.sun.opengl.impl.Java2D;
public final class Window extends JFrame {
public Window() { super("Titel");
JPanel panel = new JPanel(null); panel.setPreferredSize(new Dimension(640, 480)); panel.setSize(640, 480); add(panel);
Java2D.invokeWithOGLContextCurrent(panel.getGraphics(), new Runnable() {
@Override public void run() { drawable = GLDrawableFactory.getFactory().createExternalGLDrawable();
context = GLDrawableFactory.getFactory().createExternalGLContext(); }
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setResizable(false); setVisible(true);
try { context.makeCurrent(); } catch (Exception e) { e.printStackTrace(); }
GL gl = context.getGL();
gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); gl.glOrtho(-4d / 3d, 4d / 3d, -1d, 1d, 0d, 1d);
gl.glMatrixMode(GL.GL_MODELVIEW); gl.glLoadIdentity(); gl.glViewport(0, 0, 640, 480);
gl.glClear(GL.GL_COLOR_BUFFER_BIT); gl.glRectf(-.8f, -.8f, .8f, .8f);
gl.glFinish();
drawable.swapBuffers(); panel.repaint(); context.release(); }
private GLDrawable drawable; private GLContext context;
private static final long serialVersionUID = 0l;
public static void main(String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() {new Window();} }); }
} |