I'm trying to use OpenGL in a Java project so I've downloaded installed jogl and the following code compiles fine but it seems OpenGL is never setup.
MainWindow which sets up OpenGL.
[source lang='Java']
import java.awt.*;
import javax.swing.*;
import javax.media.opengl.GL;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLDrawableFactory;
public class MainWindow extends JFrame
{
private Renderer mainRenderer;
private GLCanvas mainCanvas;
public void createMainWindow( )
{
setSize( 500, 500 );
setTitle( "Test" );
setLocation( 20, 200 );
//Display the window.
show();
setupOpenGL( );
}
public void setupOpenGL( )
{
GLCapabilities caps = new GLCapabilities();
caps.setHardwareAccelerated( true );
caps.setDoubleBuffered( true );
mainCanvas = new GLCanvas( caps, null, null, null );
mainRenderer = new Renderer();
mainCanvas.setSize( 320, 240 );
mainCanvas.addGLEventListener( mainRenderer );
Container con = getContentPane();
con.add( mainCanvas );
mainCanvas.display();
}
public void update()
{
mainCanvas.display();
}
}
Renderer
[source lang='Java']
import javax.media.opengl.GL;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.glu.GLU;
public class Renderer implements GLEventListener
{
private static final GLU glu = new GLU();
public void display( GLAutoDrawable glDrawable )
{
final GL gl = glDrawable.getGL();
gl.glClear( GL.GL_COLOR_BUFFER_BIT );
gl.glClear( GL.GL_DEPTH_BUFFER_BIT );
gl.glLoadIdentity();
gl.glTranslatef( 0.0f, 0.0f, -5.0f );
gl.glBegin( GL.GL_QUADS );
gl.glColor3f( 1.0f, 0.0f, 0.0f );
gl.glVertex3f( -1.0f, 1.0f, 0.0f );
gl.glVertex3f( -1.0f, -1.0f, 0.0f );
gl.glVertex3f( 1.0f, -1.0f, 0.0f );
gl.glVertex3f( 1.0f, 1.0f, 0.0f );
gl.glEnd();
}
public void displayChanged( GLAutoDrawable glDrawable, boolean modeChanged, boolean deviceChanged )
{
}
public void init( GLAutoDrawable glDrawable )
{
final GL gl = glDrawable.getGL();
gl.glShadeModel(GL.GL_SMOOTH);
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.glClearDepth(1.0f);
gl.glEnable(GL.GL_DEPTH_TEST);
gl.glDepthFunc(GL.GL_LEQUAL);
gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);
}
public void reshape( GLAutoDrawable glDrawable, int x, int y, int width, int height )
{
final GL gl = glDrawable.getGL();
if(height <= 0) {
height = 1;
}
final float h = (float)width / (float)height;
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(50.0f, h, 1.0, 1000.0);
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
}
}
Main Loop
[source lang='Java']
while( bQuit == false )
{
mainWindow.update();
}
It compiles fine and I get a window but I don't get any OpenGL stuff at all. Every gl/java tut/article seems to setup in a completly different way each time and I can't seem to get any of them working.
Thanks for looking!