/** * */ package cg; import javax.swing.JFrame; import com.jogamp.opengl.GL2; import com.jogamp.opengl.GLAutoDrawable; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLEventListener; import com.jogamp.opengl.GLProfile; import com.jogamp.opengl.awt.GLCanvas; import com.jogamp.opengl.glu.GLU; /** * @author * */ /** * JOGL Example #: 3D Shapes - two solid cubes (using push & pop) */ public class Main implements GLEventListener { /** * @param args */ private GLU glu = new GLU(); public static void main(String[] args) { // TODO Auto-generated method stub //instantiating OpenGL functionality final GLProfile profile = GLProfile.get(GLProfile.GL2); GLCapabilities capabilities = new GLCapabilities(profile); //creating canvas final GLCanvas glcanvas = new GLCanvas(capabilities); //setting frame size inputs final int width = 800; final int height = 600; Main m = new Main(); glcanvas.addGLEventListener(m); //creating frame final JFrame frame = new JFrame ("OpenGL Fenster"); //adding canvas to frame frame.getContentPane().add(glcanvas); //setting visibility and sizes to frame: frame.setSize(width, height); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } @Override public void init(GLAutoDrawable drawable) { GL2 gl = drawable.getGL().getGL2(); gl.glClearColor(0.000f, 0.749f, 1.000f, 1.0f); gl.glEnable(GL2.GL_DEPTH_TEST); } @Override public void dispose(GLAutoDrawable drawable) { // TODO Auto-generated method stub } @Override public void display(GLAutoDrawable drawable) { GL2 gl = drawable.getGL().getGL2(); gl.glClear(GL2.GL_DEPTH_BUFFER_BIT); gl.glMatrixMode(GL2.GL_MODELVIEW); gl.glLoadIdentity(); gl.glTranslatef(0.0f, 0.0f, -10.0f); gl.glPushMatrix(); gl.glTranslatef(-2.0f, 0.0f, 0.0f); gl.glRotatef(45.0f, 0.0f, 1.0f, 0.0f); drawCube(gl); gl.glPopMatrix(); gl.glTranslatef(2.0f, 0.0f, 0.0f); gl.glRotatef(45.0f, 1.0f, 0.0f, 0.0f); drawCube(gl); } @Override public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { final GL2 gl = drawable.getGL().getGL2(); final float h = (float) width / (float) height; gl.glMatrixMode(GL2.GL_PROJECTION); gl.glLoadIdentity(); glu.gluPerspective(45.0f, h, 1.0, 20.0); } // Würfel // v6----- v5 // /| /| // v1------v0| // | | | | // | v7----|-v4 // |/ |/ // v2------v3 public void drawCube(GL2 gl) { gl.glBegin(GL2.GL_QUADS); gl.glColor3f(1f, 0f, 0f); //red color gl.glVertex3f(1.0f, 1.0f, -1.0f); // v5 Top Right (Top) gl.glVertex3f(-1.0f, 1.0f, -1.0f); // v6 Top Left (Top) gl.glVertex3f(-1.0f, 1.0f, 1.0f); // v1 Bottom Left (Top) gl.glVertex3f(1.0f, 1.0f, 1.0f); // v0 Bottom Right (Top) gl.glColor3f(0f, 1f, 0f); //green color gl.glVertex3f(1.0f, -1.0f, 1.0f); // v3 Top Right (Bottom) gl.glVertex3f(-1.0f, -1.0f, 1.0f); // v2 Top Left (Bottom) gl.glVertex3f(-1.0f, -1.0f, -1.0f); // v7 Bottom Left (Bottom) gl.glVertex3f(1.0f, -1.0f, -1.0f); // v4 Bottom Right (Bottom) gl.glColor3f(0f, 0f, 1f); //blue color gl.glVertex3f(1.0f, 1.0f, 1.0f); // v0 Top Right (Front) gl.glVertex3f(-1.0f, 1.0f, 1.0f); // v1 Top Left (Front) gl.glVertex3f(-1.0f, -1.0f, 1.0f); // v2 Bottom Left (Front) gl.glVertex3f(1.0f, -1.0f, 1.0f); // v3 Bottom Right (Front) gl.glColor3f(1f, 1f, 0f); //yellow (red + green) gl.glVertex3f(1.0f, -1.0f, -1.0f); // v4 Bottom Left (Back) gl.glVertex3f(-1.0f, -1.0f, -1.0f); // v7 Bottom Right (Back) gl.glVertex3f(-1.0f, 1.0f, -1.0f); // v6 Top Right (Back) gl.glVertex3f(1.0f, 1.0f, -1.0f); // v5 Top Left (Back) gl.glColor3f(1f, 0f, 1f); //purple (red + green) gl.glVertex3f(-1.0f, 1.0f, 1.0f); // v1 Top Right (Left) gl.glVertex3f(-1.0f, 1.0f, -1.0f); // v6 Top Left (Left) gl.glVertex3f(-1.0f, -1.0f, -1.0f); // v7 Bottom Left (Left) gl.glVertex3f(-1.0f, -1.0f, 1.0f); // v2 Bottom Right (Left) gl.glColor3f(0f, 1f, 1f); //sky blue (blue + green) gl.glVertex3f(1.0f, 1.0f, -1.0f); // v5 Top Right (Right) gl.glVertex3f(1.0f, 1.0f, 1.0f); // v0 Top Left (Right) gl.glVertex3f(1.0f, -1.0f, 1.0f); // v3 Bottom Left (Right) gl.glVertex3f(1.0f, -1.0f, -1.0f); // v4 Bottom Right (Right) gl.glEnd(); } }