package com.total.test;

import javax.media.opengl.GL;
import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.JFrame;

public class GLCanvasTest {

  public static void main(String[] args) {

    final JFrame frame = new JFrame("Canvas test");

    GLCanvas canvas = new GLCanvas();

    canvas.addGLEventListener(new SimpleScene());

    frame.add(canvas);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(800, 800);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }

  private static class SimpleScene implements GLEventListener {

    public void init(GLAutoDrawable drawable) {}

    public void dispose(GLAutoDrawable drawable) {}

    public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {}

    public void display(GLAutoDrawable drawable) {
      update();
      render(drawable);
    }

    private void update() {
      // nothing to update yet
    }

    private void render(GLAutoDrawable drawable) {
      GL2 gl = drawable.getGL().getGL2();

      // draw a triangle filling the window
      gl.glBegin(GL.GL_TRIANGLES);
      gl.glColor3f(1, 0, 0);
      gl.glVertex2f(-1, -1);
      gl.glColor3f(0, 1, 0);
      gl.glVertex2f(0, 1);
      gl.glColor3f(0, 0, 1);
      gl.glVertex2f(1, -1);
      gl.glEnd();
    }

  }
}
