<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">/**
 *  CS 467. Cornell University.
 */

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import net.java.games.jogl.*;

public class OpenGLDemo02 extends JFrame implements GLEventListener {
  public static final int VIEWPORT_WIDTH = 512;
  public static final int VIEWPORT_HEIGHT = 512;
  protected GLCanvas canvas;

  public OpenGLDemo02() {
    super("OpenGL Demo 02");
    setLocation(100, 100);
    setSize(VIEWPORT_WIDTH, VIEWPORT_HEIGHT);

    canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities());
    canvas.addGLEventListener(this);

    JPanel glPanel = new JPanel(new BorderLayout());
    glPanel.add(canvas, BorderLayout.CENTER);
    glPanel.setSize(VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
    getContentPane().add(glPanel);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    show();
  }

  public void display(GLDrawable gLDrawable) {
    final GL gl = gLDrawable.getGL();

    gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
    gl.glLoadIdentity();

    gl.glBegin(gl.GL_QUADS);

    // Front Face
    gl.glColor3d(0.0, 0.0, 1.0);
    gl.glVertex3f( -1.0f, -1.0f, 1.0f);
    gl.glVertex3f(1.0f, -1.0f, 1.0f);
    gl.glVertex3f(1.0f, 1.0f, 1.0f);
    gl.glVertex3f( -1.0f, 1.0f, 1.0f);

    // Back Face
    gl.glColor3d(0.0, 0.0, 1.0);
    gl.glVertex3f( -1.0f, -1.0f, -1.0f);
    gl.glVertex3f( -1.0f, 1.0f, -1.0f);
    gl.glVertex3f(1.0f, 1.0f, -1.0f);
    gl.glVertex3f(1.0f, -1.0f, -1.0f);

    // Top Face
    gl.glColor3d(0.0, 1.0, 0.0);
    gl.glVertex3f( -1.0f, 1.0f, -1.0f);
    gl.glVertex3f( -1.0f, 1.0f, 1.0f);
    gl.glVertex3f(1.0f, 1.0f, 1.0f);
    gl.glVertex3f(1.0f, 1.0f, -1.0f);

    // Bottom Face
    gl.glColor3d(0.0, 1.0, 0.0);
    gl.glVertex3f( -1.0f, -1.0f, -1.0f);
    gl.glVertex3f(1.0f, -1.0f, -1.0f);
    gl.glVertex3f(1.0f, -1.0f, 1.0f);
    gl.glVertex3f( -1.0f, -1.0f, 1.0f);

    // Right Face
    gl.glColor3d(1.0, 0.0, 0.0);
    gl.glVertex3f(1.0f, -1.0f, -1.0f);
    gl.glVertex3f(1.0f, 1.0f, -1.0f);
    gl.glVertex3f(1.0f, 1.0f, 1.0f);
    gl.glVertex3f(1.0f, -1.0f, 1.0f);

    // Left Face
    gl.glColor3d(1.0, 0.0, 0.0);
    gl.glVertex3f( -1.0f, -1.0f, -1.0f);
    gl.glVertex3f( -1.0f, -1.0f, 1.0f);
    gl.glVertex3f( -1.0f, 1.0f, 1.0f);
    gl.glVertex3f( -1.0f, 1.0f, -1.0f);

    gl.glEnd();
    //gl.glFlush();
  }

  public void displayChanged(GLDrawable gLDrawable, boolean modeChanged,
                             boolean deviceChanged) {
  }

  public void reshape(GLDrawable gLDrawable, int x, int y, int width,
                      int height) {
    final GL gl = gLDrawable.getGL();
    final GLU glu = gLDrawable.getGLU();

    gl.glViewport(0, 0, width, height);
    gl.glMatrixMode(gl.GL_PROJECTION);
    gl.glLoadIdentity();
    glu.gluPerspective(45.0f, (float) width / (float) height, 0.2f, 100.0f);
    glu.gluLookAt(3.0f, 5.0f, 5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);
    gl.glMatrixMode(gl.GL_MODELVIEW);
    gl.glLoadIdentity();
  }

  public void init(GLDrawable gLDrawable) {
    final GL gl = gLDrawable.getGL();

    gl.glEnable(gl.GL_DEPTH_TEST);
  }

  public static void main(String[] args) {
    new OpenGLDemo02();
  }
}
</pre></body></html>