import javax.media.opengl.*;
import javax.media.opengl.glu.*;
import java.awt.*;
import java.awt.event.*;

public class JOGLPolygon implements GLEventListener
{
	public JOGLPolygon()
	{
		Frame frame = new Frame("JOGL test - Polygon");
		GLCanvas canvas = new GLCanvas();
		canvas.addGLEventListener(this);
		frame.add(canvas);
		frame.setSize(500,500);
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		});
		frame.show();		
	}
	
	public void init(GLAutoDrawable drawable)
	{
		GL gl = drawable.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 display(GLAutoDrawable drawable)
	{
	    GL gl = drawable.getGL();	    
	    gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
	    gl.glLoadIdentity();
	    gl.glTranslatef(0.0f, 0.0f, -6.0f);
	    gl.glBegin(GL.GL_TRIANGLES);
	    	gl.glVertex3f( 0.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 reshape(GLAutoDrawable drawable, int x, int y, int w, int h)
	{
		GLU glu = new GLU();
	    GL gl = drawable.getGL();	    
	    gl.glClear(GL.GL_COLOR_BUFFER_BIT);		    
	    gl.glMatrixMode(GL.GL_PROJECTION);
		gl.glLoadIdentity();
		glu.gluPerspective(45.0f,w/h,0.1f,100.0f);
		gl.glMatrixMode(GL.GL_MODELVIEW);
		gl.glLoadIdentity();	    
	}	
	
	public void displayChanged(	GLAutoDrawable drawable, 
								boolean modeChanged, 
								boolean deviceChanged)
	{
	}

	public static void main (String[] args)
	{	
		new JOGLPolygon();
	}
}