JOGL 3D Triangle
JOGL 3D Triangle with Introduction, Installation, Interfaces, Classes, Frame using AWT, Frame using Swing, 2D Objects, Primitives Shapes, 3D Cube, 3D Triangle, 3D Basic Shape, 3D Objects etc.

JOGL 3D Triangle
In this section, we will learn how to create a three-dimensional triangle with the help of simple example. We will also rotate this triangle to see all its sides.
J3DTriangle.java
- package com.tpoint.jogl;
- import javax.media.opengl.*;
- import javax.media.opengl.awt.GLCanvas;
- import javax.media.opengl.glu.GLU;
- import javax.swing.JFrame;
- import com.jogamp.opengl.util.FPSAnimator;
- public class J3DTriangle implements GLEventListener {
- private GLU glu = new GLU();
- private float rotation = 0.0f;
- @Override
- public void display(GLAutoDrawable drawable) {
- final GL2 gl = drawable.getGL().getGL2();
- gl.glClear( GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT );
- gl.glLoadIdentity();
- // Move triangle
- gl.glTranslatef( -0.5f, 0.0f, -6.0f );
- gl.glRotatef( rotation, 0.0f, 1.0f, 0.0f );
- gl.glBegin( GL2.GL_TRIANGLES );
- // Front
- gl.glColor3f( 1.0f, 1.0f, 0.0f ); // Yellow
- gl.glVertex3f( 1.5f, 2f, 0.0f ); // Top Of Triangle
- gl.glColor3f( 0.0f, 1.5f, 0.0f ); // Green
- gl.glVertex3f( -1.5f, -1.5f, 1.5f ); // Left Of Triangle
- gl.glColor3f( 1.0f, 0.0f, 1.0f ); // Purple
- gl.glVertex3f( 1.5f, -1.5f, 1.5f ); // Right Of Triangle
- // Right
- gl.glColor3f( 1.0f, 1.0f, 0.0f ); // Yellow
- gl.glVertex3f( 1.5f, 2.0f, 0.0f ); // Top Of Triangle
- gl.glColor3f( 1.0f, 0.0f, 1.0f ); // Purple
- gl.glVertex3f( 1.5f, -1.5f, 1.5f ); // Left Of Triangle
- gl.glColor3f( 0.0f, 1.0f, 0.0f ); // Green
- gl.glVertex3f( 1.5f, -1.5f, -1.5f ); // Right Of Triangle
- // Back
- gl.glColor3f( 1.0f, 1.0f, 0.0f ); // Yellow
- gl.glVertex3f( 1.5f, 2.0f, 0.0f ); // Top Of Triangle
- gl.glColor3f( 0.0f, 1.0f, 0.0f ); // Green
- gl.glVertex3f( 1.5f, -1.5f, -1.5f ); // Left Of Triangle
- gl.glColor3f( 1.0f, 0.0f, 1.0f ); // Purple
- gl.glVertex3f( -1.5f, -1.5f, -1.5f ); // Right Of Triangle
- //left
- gl.glColor3f( 1.0f, 1.0f, 0.0f ); // Yellow
- gl.glVertex3f( 1.5f, 2.0f, 0.0f ); // Top Of Triangle
- gl.glColor3f( 1.0f, 0.0f, 1.0f ); // Purple
- gl.glVertex3f( -1.5f, -1.5f, -1.5f ); // Left Of Triangle
- gl.glColor3f( 0.0f, 1.0f, 0.0f ); // Green
- gl.glVertex3f( -1.5f, -1.5f, 1.5f ); // Right Of Triangle
- gl.glEnd();
- gl.glFlush();
- rotation += 0.6f;
- }
- @Override
- public void dispose( GLAutoDrawable drawable ) {
- //method body
- }
- @Override
- public void init( GLAutoDrawable drawable ) {
- //method body
- }
- @Override
- public void reshape( GLAutoDrawable drawable, int x, int y, int width, int height ) {
- final GL2 gl = drawable.getGL().getGL2();
- if(height<=0)
- height = 1;
- final float h = ( float ) width / ( float ) height;
- gl.glViewport( 0, 0, width, height );
- gl.glMatrixMode( GL2.GL_PROJECTION );
- gl.glLoadIdentity();
- glu.gluPerspective( 45.0f, h, 1.0, 20.0 );
- gl.glMatrixMode( GL2.GL_MODELVIEW );
- gl.glLoadIdentity();
- }
- public static void main( String[] args ) {
- final GLProfile gp = GLProfile.get( GLProfile.GL2 );
- GLCapabilities cap = new GLCapabilities(gp );
- final GLCanvas gc = new GLCanvas( cap );
- J3DTriangle triangle = new J3DTriangle();
- gc.addGLEventListener( triangle );
- gc.setSize( 400, 400 );
- final JFrame frame = new JFrame( "3D Triangle" );
- frame.add(gc);
- frame.setSize(500,400);
- frame.setVisible(true);
- final FPSAnimator animator = new FPSAnimator(gc,400,true);
- animator.start();
- }
- }