@author Sean Sylvis
*/
public class JoglSimpleTest implements GLEventListener
{
protected static final double kFieldOfView = 45;
protected static final double kNearClip = 0.1;
protected static final double kFarClip = 200;
private JFrame mFrame;
private Animator mAnimator;
/**
-
Constructs a JoglSimpleTest object.
*/
public JoglSimpleTest() throws Exception
{
// Get GL drawing context
GLCanvas vCanvas =
GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities());
vCanvas.addGLEventListener(this);
// Create AWT frame
mFrame = getTestFrame();
mFrame.getContentPane().add(vCanvas);
// Create animation loop object
mAnimator = new Animator(vCanvas);
// Define window-closing event
mFrame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
close();
}
});
mFrame.show();
mAnimator.start();
}
// inherited comment
public void init(GLDrawable pDrawable)
{
// Set gl and glu contexts
GL gl = pDrawable.getGL();
printGLInformation(gl);
// Set color buffer clear color
gl.glClearColor(1, 1, 1, 0);
// Default light position is (0,0,1,0) and direction is (0,0,-1)
// Enable lighting
gl.glEnable(GL.GL_LIGHTING);
gl.glEnable(GL.GL_LIGHT0);
// Enable other parameters
gl.glEnable(GL.GL_CULL_FACE);
gl.glEnable(GL.GL_DEPTH_TEST);
}
// inherited comment
public void reshape(
GLDrawable pDrawable,
int x,
int y,
int pWidth,
int pHeight)
{
GL gl = pDrawable.getGL();
GLU glu = pDrawable.getGLU();
gl.glViewport(0, 0, pWidth, pHeight);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(
kFieldOfView,
(double)pWidth / pHeight,
kNearClip,
kFarClip);
}
// inherited comment
public void display(GLDrawable pDrawable)
{
GL gl = pDrawable.getGL();
GLU glu = pDrawable.getGLU();
// Clear buffers
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
// Clear model-view matrix
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
glu.gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
GLUT glut = new GLUT();
// Set current color to red
final float[] vRed = { 1, 0, 0 };
gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, vRed);
// Draw red sphere
gl.glPushMatrix();
glut.glutSolidSphere(glu, 1.0f, 25, 25);
gl.glPopMatrix();
}
// inherited comment
public void displayChanged(
GLDrawable drawable,
boolean modeChanged,
boolean deviceChanged)
{
}
/**
/**
*
*/
private void close()
{
mAnimator.stop();
mFrame.dispose();
}
/**
-
@param gl
*/
protected static final void printGLInformation(GL gl)
{
System.out.println("GL_VENDOR: " + gl.glGetString(GL.GL_VENDOR));
System.out.println("GL_RENDERER: " + gl.glGetString(GL.GL_RENDERER));
System.out.println("GL_VERSION: " + gl.glGetString(GL.GL_VERSION));
System.out.println(
"GL_EXTENSIONS: " + gl.glGetString(GL.GL_EXTENSIONS));
}
/**
-
@param pArguments
*/
public static void main(String[] pArguments) throws Exception
{
new JoglSimpleTest();
}
}