JOGL 3D三角形

【JOGL 3D三角形】在本节中, 我们将通过简单的示例学习如何创建三维三角形。我们还将旋转该三角形以查看其所有侧面。
J3DTriangle.java

package com.srcmini.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; @Overridepublic 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 trianglegl.glTranslatef( -0.5f, 0.0f, -6.0f ); gl.glRotatef( rotation, 0.0f, 1.0f, 0.0f ); gl.glBegin( GL2.GL_TRIANGLES ); // Frontgl.glColor3f( 1.0f, 1.0f, 0.0f ); // Yellowgl.glVertex3f( 1.5f, 2f, 0.0f ); // Top Of Triangle gl.glColor3f( 0.0f, 1.5f, 0.0f ); // Greengl.glVertex3f( -1.5f, -1.5f, 1.5f ); // Left Of Triangle gl.glColor3f( 1.0f, 0.0f, 1.0f ); // Purplegl.glVertex3f( 1.5f, -1.5f, 1.5f ); // Right Of Triangle // Rightgl.glColor3f( 1.0f, 1.0f, 0.0f ); // Yellowgl.glVertex3f( 1.5f, 2.0f, 0.0f ); // Top Of Triangle gl.glColor3f( 1.0f, 0.0f, 1.0f ); // Purplegl.glVertex3f( 1.5f, -1.5f, 1.5f ); // Left Of Triangle gl.glColor3f( 0.0f, 1.0f, 0.0f ); // Greengl.glVertex3f( 1.5f, -1.5f, -1.5f ); // Right Of Triangle // Backgl.glColor3f( 1.0f, 1.0f, 0.0f ); // Yellowgl.glVertex3f( 1.5f, 2.0f, 0.0f ); // Top Of Triangle gl.glColor3f( 0.0f, 1.0f, 0.0f ); // Greengl.glVertex3f( 1.5f, -1.5f, -1.5f ); // Left Of Triangle gl.glColor3f( 1.0f, 0.0f, 1.0f ); // Purplegl.glVertex3f( -1.5f, -1.5f, -1.5f ); // Right Of Triangle //leftgl.glColor3f( 1.0f, 1.0f, 0.0f ); // Yellowgl.glVertex3f( 1.5f, 2.0f, 0.0f ); // Top Of Triangle gl.glColor3f( 1.0f, 0.0f, 1.0f ); // Purplegl.glVertex3f( -1.5f, -1.5f, -1.5f ); // Left Of Triangle gl.glColor3f( 0.0f, 1.0f, 0.0f ); // Greengl.glVertex3f( -1.5f, -1.5f, 1.5f ); // Right Of Triangle gl.glEnd(); gl.glFlush(); rotation += 0.6f; }@Overridepublic void dispose( GLAutoDrawable drawable ) {//method body}@Overridepublic void init( GLAutoDrawable drawable ) {//method body}@Overridepublic 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(); } }

输出:
JOGL 3D三角形

文章图片

    推荐阅读