package cse1030; import java.awt.*; import java.awt.event.*; import javax.media.opengl.*; import javax.media.opengl.awt.GLCanvas; import javax.media.opengl.fixedfunc.*; import com.jogamp.opengl.util.Animator; import com.jogamp.opengl.util.gl2.GLUT; /** * Self-contained example (within a single class only to keep it simple) * displaying a rotating triangle */ public class JoglTriangleComposition implements GLEventListener { private Point pointB; private TriangleC tri; private float delta = 0.0f; private JoglTriangleComposition() { pointB = new Point(0.0, 1.0, -3.0); tri = new TriangleC(new Point(-1.0, -1.0, -3.0), this.pointB, new Point( 2.0, 0.0, -3.0)); } @Override public void display(GLAutoDrawable gLDrawable) { final GLUT glut = new GLUT(); final GL2 gl = gLDrawable.getGL().getGL2(); gl.glClear(GL.GL_COLOR_BUFFER_BIT); gl.glClear(GL.GL_DEPTH_BUFFER_BIT); gl.glLoadIdentity(); gl.glTranslatef(0.0f, 0.0f, -3.0f); // Draw triangle gl.glBegin(GL2.GL_TRIANGLES); gl.glColor3f(0.0f, 1.0f, 1.0f); // set the color gl.glVertex3d(tri.getA().getX(), tri.getA().getY(), tri.getA().getZ()); gl.glVertex3d(tri.getB().getX(), tri.getB().getY(), tri.getB().getZ()); gl.glVertex3d(tri.getC().getX(), tri.getC().getY(), tri.getC().getZ()); // Done Drawing The Quad gl.glEnd(); // move point B delta += 0.0005f; Point b = tri.getB(); b.setY(1.0 + Math.sin(delta)); tri.setB(b); gl.glRasterPos2d(-1., -1.); glut.glutBitmapString(GLUT.BITMAP_TIMES_ROMAN_24, "" + Point.getNumberCreated()); } @Override public void init(GLAutoDrawable glDrawable) { GL2 gl = glDrawable.getGL().getGL2(); gl.glShadeModel(GLLightingFunc.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(GL2ES1.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); } @Override public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height) { GL2 gl = gLDrawable.getGL().getGL2(); final float aspect = (float) width / (float) height; gl.glMatrixMode(GLMatrixFunc.GL_PROJECTION); gl.glLoadIdentity(); final float fh = 0.5f; final float fw = fh * aspect; gl.glFrustumf(-fw, fw, -fh, fh, 1.0f, 1000.0f); gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); gl.glLoadIdentity(); } @Override public void dispose(GLAutoDrawable gLDrawable) { } public static void main(String[] args) { final GLCanvas canvas = new GLCanvas(); final Frame frame = new Frame("Jogl Triangle drawing"); final Animator animator = new Animator(canvas); canvas.addGLEventListener(new JoglTriangleComposition()); frame.add(canvas); frame.setSize(640, 480); frame.setResizable(false); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { animator.stop(); frame.dispose(); System.exit(0); } }); frame.setVisible(true); animator.start(); canvas.requestFocus(); } }