All pastes #563781 Raw Edit

Untitled

public java v1 · immutable
·published 2007-06-13 09:34 UTC
rendered paste body
package Buchstaben;import java.awt.event.*;import javax.media.opengl.*;import javax.media.opengl.glu.*;import com.sun.opengl.util.Animator;import java.nio.*;public class JOGLEventListener implements GLEventListener, KeyListener {	private final GLU glu = new GLU();	private Animator animator = null;	private final int MAX_PARTICLES = 1000; 	private Particle particles[] = new Particle[MAX_PARTICLES];	private int[] textures = new int[1] ;	    private float a = 0.0f;    private float b = 0.0f;    private float j = 0.0f;    private float o = 0.0f;    private float g = 0.0f;    private float l = 0.0f;	/** 	 * Called by the drawable immediately after the OpenGL context is 	 * initialized for the first time. Can be used to perform one-time OpenGL 	 * initialization such as setup of lights and display lists.	 * @param gLDrawable The GLDrawable object.	 */	public void init(GLAutoDrawable gld) {		GL gl = gld.getGL();		gl.glEnable( GL.GL_BLEND );		gl.glEnable(GL.GL_TEXTURE_2D);		gl.glGenTextures(1,textures, 0);		gl.glBindTexture(GL.GL_TEXTURE_2D,textures[0]);		gl.glTexParameteri( GL.GL_TEXTURE_2D,			GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);		gl.glTexParameteri( GL.GL_TEXTURE_2D,			GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);				ByteBuffer dest = null;		byte[] data = getTextureData();	    dest = ByteBuffer.allocateDirect(data.length);	    dest.order(ByteOrder.nativeOrder());	    dest.put(data, 0, data.length);	    dest.rewind();	    		gl.glTexImage2D (GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, 256, 256,				0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, dest);				gld.addKeyListener(this);	}	/** 	 * Called by the drawable to initiate OpenGL rendering by the client.	 * After all GLEventListeners have been notified of a display event, the 	 * drawable will swap its buffers if necessary.	 * @param gLDrawable The GLDrawable object.	 */   	public void display(GLAutoDrawable gld) {	    GL gl = gld.getGL();	    gl.glClear(GL.GL_COLOR_BUFFER_BIT|GL.GL_DEPTH_BUFFER_BIT);  // Clear The Screen And The Depth Buffer	   	    gl.glDisable(GL.GL_DEPTH_TEST);	    gl.glColor3f(1.0f,0.0f,0.0f);      			    gl.glEnable(GL.GL_BLEND );				//Blendmodus ein - fuer Texturen	    gl.glLoadIdentity();                		    gl.glTranslatef( -0.1f, 0.8f, -2.0f);	 	   	    for(int i=0; i<MAX_PARTICLES; i++) {			Particle p = particles[i];			if (p == null) {				p = particles[i] = createParticle();				break;			}			if (p.getLocation(Particle.LOCATION_Y) < -4.0f)				p = particles[i] = createParticle();										p.setSpeed(Particle.SPEED_Y,p.getSpeed(Particle.SPEED_Y)-0.0004f);					p.evolve();								gl.glBlendFunc(GL.GL_SRC_ALPHA,GL.GL_ONE);					gl.glBegin(GL.GL_QUADS);										gl.glTexCoord2f(0.0f,0.2f);					gl.glVertex3f( p.getLocation(Particle.LOCATION_X),					p.getLocation(Particle.LOCATION_Y)+1.2f,					p.getLocation(Particle.LOCATION_Z));								gl.glTexCoord2f(0.0f,0.2f);					gl.glVertex3f( p.getLocation(Particle.LOCATION_X),					p.getLocation(Particle.LOCATION_Y)-0.4f,					p.getLocation(Particle.LOCATION_Z));										gl.glTexCoord2f(1f,0.0f);					gl.glVertex3f( p.getLocation(Particle.LOCATION_X),					p.getLocation(Particle.LOCATION_Y)-0.4f,					p.getLocation(Particle.LOCATION_Z));								gl.glTexCoord2f(3f,1f);					gl.glVertex3f( p.getLocation(Particle.LOCATION_X)+0.8f,					p.getLocation(Particle.LOCATION_Y)+0.4f,					p.getLocation(Particle.LOCATION_Z));			gl.glEnd();		}//for End	    	    gl.glDisable( GL.GL_BLEND );	    gl.glEnable(GL.GL_DEPTH_TEST);	    gl.glLoadIdentity();                	    //L		gl.glTranslatef(0.5f,0.2f,-3.0f);			gl.glRotatef(b,0.0f,1.0f,0.0f);				gl.glBegin(GL.GL_QUADS);						gl.glColor3f(1.0f,1.0f,0.0f);							//Vorderseite			//1		float faul = 0.2f;		//Verschieben mithilfe des floats faul anstelle jeden wert neu zu schreiben...			gl.glVertex3f(-faul+0.0f,0.6f,0.0f);			gl.glVertex3f(-faul+0.0f,-0.4f,0.0f);			gl.glColor3f(0.75f,1.0f,0.75f);			gl.glVertex3f(-faul+0.2f,-0.4f,0.0f);			gl.glVertex3f(-faul+0.2f,0.6f,0.0f);		//2			gl.glVertex3f(-faul+0.2f,-0.4f,0.0f);			gl.glVertex3f(-faul+0.2f,-0.2f,0.0f);			gl.glColor3f(1.0f,1.0f,0.0f);			gl.glVertex3f(-faul+0.4f,-0.2f,0.0f);			gl.glVertex3f(-faul+0.4f,-0.4f,0.0f);		//Rückseite		//1						gl.glVertex3f(-faul+0.0f,0.6f,-0.2f);			gl.glVertex3f(-faul+0.0f,-0.4f,-0.2f);			gl.glColor3f(0.75f,1.0f,0.75f);			gl.glVertex3f(-faul+0.2f,-0.4f,-0.2f);			gl.glVertex3f(-faul+0.2f,0.6f,-0.2f);		//2			gl.glVertex3f(-faul+0.2f,-0.4f,-0.2f);			gl.glVertex3f(-faul+0.2f,-0.2f,-0.2f);			gl.glColor3f(1.0f,1.0f,-0.2f);			gl.glVertex3f(-faul+0.4f,-0.2f,-0.2f);			gl.glVertex3f(-faul+0.4f,-0.4f,-0.2f);		//Zwischenstücke	    //1			gl.glVertex3f(-faul+0.0f,0.6f,-0.2f);			gl.glVertex3f(-faul+0.0f,0.6f,0.0f);			gl.glColor3f(0.75f,1.0f,0.75f);			gl.glVertex3f(-faul+0.2f,0.6f,0.0f);			gl.glVertex3f(-faul+0.2f,0.6f,-0.2f);		//2			gl.glVertex3f(-faul+0.2f,0.6f,-0.2f);			gl.glVertex3f(-faul+0.2f,0.6f,0.0f);			gl.glVertex3f(-faul+0.2f,-0.2f,0.0f);			gl.glVertex3f(-faul+0.2f,-0.2f,-0.2f);		//3			gl.glVertex3f(-faul+0.2f,-0.2f,-0.2f);			gl.glVertex3f(-faul+0.2f,-0.2f,0.0f);			gl.glColor3f(1.0f,1.0f,-0.2f);			gl.glVertex3f(-faul+0.4f,-0.2f,0.0f);			gl.glVertex3f(-faul+0.4f,-0.2f,-0.2f);		//4			gl.glVertex3f(-faul+0.4f,-0.2f,-0.2f);			gl.glVertex3f(-faul+0.4f,-0.2f,0.0f);			gl.glVertex3f(-faul+0.4f,-0.4f,0.0f);			gl.glVertex3f(-faul+0.4f,-0.4f,-0.2f);		//5			gl.glVertex3f(-faul+0.4f,-0.4f,-0.2f);			gl.glVertex3f(-faul+0.4f,-0.4f,0.0f);			gl.glColor3f(0.75f,1.0f,0.75f);			gl.glVertex3f(-faul+0.2f,-0.4f,0.0f);			gl.glVertex3f(-faul+0.2f,-0.4f,-0.2f);		//6			gl.glVertex3f(-faul+0.2f,-0.4f,-0.2f);			gl.glVertex3f(-faul+0.2f,-0.4f,0.0f);			gl.glColor3f(1.0f,1.0f,-0.2f);			gl.glVertex3f(-faul+0.0f,-0.4f,0.0f);			gl.glVertex3f(-faul+0.0f,-0.4f,-0.2f);		//7						gl.glVertex3f(-faul+0.0f,-0.4f,-0.2f);			gl.glVertex3f(-faul+0.0f,-0.4f,0.0f);			gl.glVertex3f(-faul+0.0f,0.6f,0.0f);			gl.glVertex3f(-faul+0.0f,0.6f,-0.2f);							gl.glEnd();							//Form beenden				b-=0.55f;					//Rotationsgeschwindigkeit verringern				gl.glFlush();						//S						gl.glLoadIdentity();			// Reset The Current Modelview Matrix					gl.glTranslatef(-0.5f,0.2f,-3.0f);	//Nach links verschieben				gl.glRotatef(a,0.0f,1.0f,0.0f);			//an der Y-Achse rotieren lassen										gl.glBegin(GL.GL_QUADS);		//Vorderseite			//1						gl.glVertex3f(-faul+0.0f,0.0f,0.0f);				gl.glVertex3f(-faul+0.0f,-0.2f,0.0f);				gl.glColor3f(0.75f,1.0f,0.75f);				gl.glVertex3f(-faul+0.2f,-0.4f,0.0f);		        gl.glVertex3f(-faul+0.2f,-0.2f,0.0f);        //2		        gl.glVertex3f(-faul+0.2f,-0.4f,0.0f);		        gl.glVertex3f(-faul+0.2f,0.2f,0.0f);		        gl.glColor3f(1.0f,1.0f,0.0f);			        gl.glVertex3f(-faul+0.4f,0.0f,0.0f);		        gl.glVertex3f(-faul+0.4f,-0.2f,0.0f);        //3		        gl.glColor3f(0.75f,1.0f,0.75f);		        gl.glVertex3f(-faul+0.2f,0.0f,0.0f);		        gl.glVertex3f(-faul+0.2f,0.6f,0.0f);		        gl.glColor3f(1.0f,1.0f,0.0f);		        gl.glVertex3f(-faul+0.0f,0.4f,0.0f);		        gl.glVertex3f(-faul+0.0f,0.2f,0.0f);        //4		        gl.glColor3f(0.75f,1.0f,0.75f);		        gl.glVertex3f(-faul+0.2f,0.6f,0.0f);		        gl.glVertex3f(-faul+0.2f,0.4f,0.0f);		        gl.glColor3f(1.0f,1.0f,0.0f);		        gl.glVertex3f(-faul+0.4f,0.2f,0.0f);		        gl.glVertex3f(-faul+0.4f,0.4f,0.0f);		        		        		                //Rückseite        //1						gl.glVertex3f(-faul+0.0f,0.0f,-0.2f);				gl.glVertex3f(-faul+0.0f,-0.2f,-0.2f);				gl.glColor3f(0.75f,1.0f,0.75f);				gl.glVertex3f(-faul+0.2f,-0.4f,-0.2f);		        gl.glVertex3f(-faul+0.2f,-0.2f,-0.2f);        //2		        gl.glVertex3f(-faul+0.2f,-0.4f,-0.2f);		        gl.glVertex3f(-faul+0.2f,0.2f,-0.2f);		        gl.glColor3f(1.0f,1.0f,-0.2f);			        gl.glVertex3f(-faul+0.4f,0.0f,-0.2f);		        gl.glVertex3f(-faul+0.4f,-0.2f,-0.2f);        //3		        gl.glColor3f(0.75f,1.0f,0.75f);		        gl.glVertex3f(-faul+0.2f,0.0f,-0.2f);		        gl.glVertex3f(-faul+0.2f,0.6f,-0.2f);		        gl.glColor3f(1.0f,1.0f,-0.2f);		        gl.glVertex3f(-faul+0.0f,0.4f,-0.2f);		        gl.glVertex3f(-faul+0.0f,0.2f,-0.2f);        //4		        gl.glColor3f(0.75f,1.0f,0.75f);		        gl.glVertex3f(-faul+0.2f,0.6f,-0.2f);		        gl.glVertex3f(-faul+0.2f,0.4f,-0.2f);		        gl.glColor3f(1.0f,1.0f,-0.2f);		        gl.glVertex3f(-faul+0.4f,0.2f,-0.2f);		        gl.glVertex3f(-faul+0.4f,0.4f,-0.2f);        //Zwischenstücke        //1		        gl.glVertex3f(-faul+0.0f,0.0f,0f);		        gl.glVertex3f(-faul+0.0f,0.0f,-0.2f);		        gl.glVertex3f(-faul+0.0f,-0.2f,-0.2f);		        gl.glVertex3f(-faul+0.0f,-0.2f,0f);        //2		        gl.glVertex3f(-faul+0.0f,-0.2f,-0.2f);		        gl.glVertex3f(-faul+0.0f,-0.2f,0f);		        gl.glColor3f(0.75f,1.0f,0.75f);		        gl.glVertex3f(-faul+0.2f,-0.4f,0f);		        gl.glVertex3f(-faul+0.2f,-0.4f,-0.2f);        //3		        gl.glVertex3f(-faul+0.2f,-0.4f,0f);		        gl.glVertex3f(-faul+0.2f,-0.4f,-0.2f);		        gl.glColor3f(1.0f,1.0f,-0.2f);		        gl.glVertex3f(-faul+0.4f,-0.2f,-0.2f);		        gl.glVertex3f(-faul+0.4f,-0.2f,0f);        //4		        gl.glVertex3f(-faul+0.4f,-0.2f,0f);		        gl.glVertex3f(-faul+0.4f,-0.2f,-0.2f);		        gl.glVertex3f(-faul+0.4f,0.0f,-0.2f);		        gl.glVertex3f(-faul+0.4f,0.0f,0f);		                //5		        		        gl.glVertex3f(-faul+0.4f,0.0f,0f);		        gl.glVertex3f(-faul+0.4f,0.0f,-0.2f);		        gl.glColor3f(0.75f,1.0f,0.75f);		        gl.glVertex3f(-faul+0.2f,0.2f,-0.2f);		        gl.glVertex3f(-faul+0.2f,0.2f,0f);        //6				        gl.glVertex3f(-faul+0.2f,0.2f,0f);		        gl.glVertex3f(-faul+0.2f,0.2f,-0.2f);		        gl.glVertex3f(-faul+0.2f,0.4f,-0.2f);		        gl.glVertex3f(-faul+0.2f,0.4f,0f);							//7		        gl.glVertex3f(-faul+0.2f,0.4f,0f);		        gl.glVertex3f(-faul+0.2f,0.4f,-0.2f);		        gl.glColor3f(1.0f,1.0f,-0.2f);		        gl.glVertex3f(-faul+0.4f,0.2f,-0.2f);		        gl.glVertex3f(-faul+0.4f,0.2f,0f);        //8		        gl.glVertex3f(-faul+0.4f,0.2f,0f);		        gl.glVertex3f(-faul+0.4f,0.2f,-0.2f);		        gl.glVertex3f(-faul+0.4f,0.4f,-0.2f);		        gl.glVertex3f(-faul+0.4f,0.4f,0f);		//9			        gl.glVertex3f(-faul+0.4f,0.4f,0f);		        gl.glVertex3f(-faul+0.4f,0.4f,-0.2f);		        gl.glColor3f(0.75f,1.0f,0.75f);		        gl.glVertex3f(-faul+0.2f,0.6f,-0.2f);		        gl.glVertex3f(-faul+0.2f,0.6f,0f);        //10		        gl.glVertex3f(-faul+0.2f,0.6f,0f);		        gl.glVertex3f(-faul+0.2f,0.6f,-0.2f);		        gl.glColor3f(1.0f,1.0f,-0.2f);		        gl.glVertex3f(-faul+0.0f,0.4f,-0.2f);		        gl.glVertex3f(-faul+0.0f,0.4f,0f);        //11		        gl.glVertex3f(-faul+0.0f,0.4f,0f);		        gl.glVertex3f(-faul+0.0f,0.4f,-0.2f);		        gl.glVertex3f(-faul+0.0f,0.2f,-0.2f);		        gl.glVertex3f(-faul+0.0f,0.2f,0f);		//12		        gl.glVertex3f(-faul+0.0f,0.2f,0f);		        gl.glVertex3f(-faul+0.0f,0.2f,-0.2f);		        gl.glColor3f(0.75f,1.0f,0.75f);		        gl.glVertex3f(-faul+0.2f,0.0f,-0.2f);		        gl.glVertex3f(-faul+0.2f,0.0f,0f);        //13		        gl.glVertex3f(-faul+0.2f,0.0f,0f);		        gl.glVertex3f(-faul+0.2f,0.0f,-0.2f);		        gl.glVertex3f(-faul+0.2f,-0.2f,-0.2f);		        gl.glVertex3f(-faul+0.2f,-0.2f,0f);        //14		        gl.glVertex3f(-faul+0.2f,-0.2f,0f);		        gl.glVertex3f(-faul+0.2f,-0.2f,-0.2f);		        gl.glColor3f(1.0f,1.0f,-0.2f);		        gl.glVertex3f(-faul+0.0f,0.0f,-0.2f);		        gl.glVertex3f(-faul+0.0f,0.0f,0f);		        gl.glEnd();					a-=0.55f;						//rotationsgeschwindigkeit verringern				gl.glFlush();						//JOGL-Schriftzug				gl.glLoadIdentity();				//reste VIEW				gl.glTranslatef(-3.0f,-4.0f,-10.0f);//An den Achsen Bewegen				gl.glRotatef(j,1.0f,0.0f,0.0f);		//an der Achse rotieren lassen		//J		//1				gl.glBegin(GL.GL_QUADS);					gl.glColor3f(1.0f,0.0f,1.0f);				gl.glVertex3f(-0.4f,-0.2f,0.0f);				gl.glVertex3f(-0.2f,-0.2f,0.0f);				gl.glColor3f(0.0f,1.0f,1.0f);				gl.glVertex3f(-0.2f,-0.4f,0.0f);				gl.glVertex3f(-0.4f,-0.4f,0.0f);		//2				gl.glVertex3f(-0.2f,-0.4f,0.0f);				gl.glVertex3f(-0.4f,-0.4f,0.0f);				gl.glVertex3f(-0.2f,-0.6f,0.0f);				gl.glVertex3f(-0.0f,-0.6f,0.0f);		//3				gl.glVertex3f(-0.0f,-0.6f,0.0f);				gl.glVertex3f(-0.2f,-0.4f,0.0f);				gl.glVertex3f(0.4f,-0.4f,0.0f);				gl.glVertex3f(0.2f,-0.6f,0.0f);		//4				gl.glVertex3f(0.2f,-0.4f,0.0f);				gl.glVertex3f(0.4f,-0.4f,0.0f);				gl.glColor3f(1.0f,0.0f,1.0f);				gl.glVertex3f(0.4f,0.6f,0.0f);				gl.glVertex3f(0.2f,0.6f,0.0f);				gl.glEnd();							j-=0.5f;											gl.glFlush();											//o				gl.glLoadIdentity();								gl.glTranslatef(-1.5f,-4.0f,-10.0f);					gl.glRotatef(o,1.0f,0.0f,0.0f);								gl.glBegin(GL.GL_QUADS);			//1								gl.glVertex3f(-0.2f,0.2f,0.0f);						gl.glVertex3f(0.0f,0.4f,0.0f);					gl.glVertex3f(0.0f,0.6f,0.0f);				        gl.glVertex3f(-0.2f,0.6f,0.0f);				//2		        gl.glVertex3f(0.2f,0.2f,0.0f);						gl.glVertex3f(0.0f,0.4f,0.0f);					gl.glVertex3f(0.0f,0.6f,0.0f);				        gl.glVertex3f(0.2f,0.6f,0.0f);			//3		        					gl.glVertex3f(0.2f,0.6f,0.0f);					gl.glVertex3f(0.4f,0.4f,0.0f);					gl.glColor3f(0.0f,1.0f,1.0f);		        gl.glVertex3f(0.4f,-0.4f,0.0f);			        gl.glVertex3f(0.2f,-0.6f,0.0f);		//4		        gl.glVertex3f(0.2f,-0.2f,0.0f);		        gl.glVertex3f(0.2f,-0.6f,0.0f);		        gl.glVertex3f(0.0f,-0.6f,0.0f);		        gl.glVertex3f(0.0f,-0.4f,0.0f);		        						        //5		        gl.glVertex3f(0.0f,-0.4f,0.0f);		        gl.glVertex3f(0.0f,-0.6f,0.0f);		        gl.glVertex3f(-0.2f,-0.6f,0.0f);		        gl.glVertex3f(-0.2f,-0.2f,0.0f);		 	    //6		        gl.glVertex3f(-0.2f,-0.6f,0.0f);		        gl.glVertex3f(-0.4f,-0.4f,0.0f);		        gl.glColor3f(1.0f,0.0f,1.0f);		        gl.glVertex3f(-0.4f,0.4f,0.0f);		        gl.glVertex3f(-0.2f,0.6f,0.0f);		        gl.glEnd();				    o-=0.5f;									gl.glFlush();				//G				gl.glLoadIdentity();								gl.glTranslatef(1.5f,-4.0f,-10.0f);				gl.glRotatef(g,1.0f,0.0f,0.0f);						gl.glBegin(GL.GL_QUADS);	        //1										gl.glVertex3f( 0.4f, 0.2f, 0.0f);					gl.glVertex3f( 0.4f, 0.4f, 0.0f);					gl.glVertex3f( 0.2f, 0.6f, 0.0f);					gl.glVertex3f( 0.2f, 0.4f, 0.0f);			//2				gl.glVertex3f( 0.2f, 0.4f, 0.0f);					gl.glVertex3f( 0.2f, 0.6f, 0.0f);				gl.glVertex3f( 0.0f, 0.6f, 0.0f);				gl.glVertex3f( 0.0f, 0.4f, 0.0f);			//3				gl.glVertex3f( 0.0f, 0.4f, 0.0f);				gl.glVertex3f( 0.0f, 0.6f, 0.0f);				gl.glVertex3f( -0.4f, 0.2f, 0.0f);				gl.glVertex3f( -0.2f, 0.2f, 0.0f);		//4				gl.glVertex3f( -0.2f, 0.2f, 0.0f);				gl.glVertex3f( -0.4f, 0.2f, 0.0f);				gl.glColor3f(0.0f,1.0f,1.0f);				gl.glVertex3f( -0.4f, -0.4f, 0.0f);				gl.glVertex3f( -0.2f, -0.2f, 0.0f);		//5				gl.glVertex3f( -0.2f, -0.2f, 0.0f);				gl.glVertex3f( 0.0f, -0.4f, 0.0f);				gl.glVertex3f( -0.2f, -0.6f, 0.0f);				gl.glVertex3f( -0.4f, -0.4f, 0.0f);		//6				gl.glVertex3f( -0.2f, -0.6f, 0.0f);				gl.glVertex3f( 0.0f, -0.4f, 0.0f);				gl.glVertex3f( 0.2f, -0.4f, 0.0f);				gl.glVertex3f( 0.2f, -0.6f, 0.0f);		//7				gl.glVertex3f( 0.2f, -0.6f, 0.0f);				gl.glVertex3f( 0.2f, -0.2f, 0.0f);				gl.glVertex3f( 0.4f, -0.2f, 0.0f);				gl.glVertex3f( 0.4f, -0.4f, 0.0f);		//8				gl.glVertex3f( 0.4f, -0.2f, 0.0f);				gl.glVertex3f( 0.0f, -0.2f, 0.0f);				gl.glVertex3f( 0.0f, 0.0f, 0.0f);				gl.glVertex3f( 0.4f, 0.0f, 0.0f);				gl.glEnd();																    			    g-=0.5f;										gl.glFlush();				//L				gl.glLoadIdentity();								gl.glTranslatef(3f,-4.0f,-10.0f);					gl.glRotatef(l,1.0f,0.0f,0.0f);										gl.glBegin(GL.GL_QUADS);					//1				gl.glColor3f(1.0f,0.0f,1.0f);				gl.glVertex3f( -0.4f, 0.6f, 0.0f);					gl.glVertex3f( -0.2f, 0.6f, 0.0f);				gl.glColor3f(0.0f,1.0f,1.0f);				gl.glVertex3f( -0.2f, -0.6f, 0.0f);				gl.glVertex3f( -0.4f, -0.6f, 0.0f);		//2				gl.glVertex3f( -0.2f, -0.4f, 0.0f);				gl.glVertex3f( 0.4f, -0.4f, 0.0f);				gl.glVertex3f( 0.4f, -0.6f, 0.0f);				gl.glVertex3f( -0.2f, -0.6f, 0.0f);				gl.glEnd();																			    l-=0.5f;										gl.glFlush();									}	/** 	 * Called by the drawable during the first repaint after the component has 	 * been resized. The client can update the viewport and view volume of the 	 * window appropriately, for example by a call to 	 * GL.glViewport(int, int, int, int); note that for convenience the component	 * has already called GL.glViewport(int, int, int, int)(x, y, width, height)	 * when this method is called, so the client may not have to do anything in	 * this method.	 * @param gLDrawable The GLDrawable object.	 * @param x The X Coordinate of the viewport rectangle.	 * @param y The Y coordinate of the viewport rectanble.	 * @param width The new width of the window.	 * @param height The new height of the window.	 */	public void reshape(GLAutoDrawable gld, int x, int y, int width, int height) {		GL gl = gld.getGL();		if (height <= 0) // avoid a divide by zero error!			height = 1;		float h = (float)width / (float)height;		gl.glViewport(0, 0, width, height);		gl.glMatrixMode(GL.GL_PROJECTION);		gl.glLoadIdentity();		glu.gluPerspective(65.0f, h, 1.0, 20.0);		gl.glMatrixMode(GL.GL_MODELVIEW);		gl.glLoadIdentity();	}	/** 	 * Called when the display mode has been changed.  <B>!! CURRENTLY UNIMPLEMENTED IN JOGL !!</B>	 * @param gLDrawable The GLDrawable object.	 * @param modeChanged Indicates if the video mode has changed.	 * @param deviceChanged Indicates if the video device has changed.	 */	public void displayChanged(GLAutoDrawable gld, boolean modeChanged, boolean deviceChanged) {	}	/** 	 * Invoked when a key has been pressed.	 * See the class description for {@link KeyEvent} for a definition of	 * a key pressed event.	 * @param e The KeyEvent.	 */	public void keyPressed(KeyEvent e) {		if (e.getKeyCode() == KeyEvent.VK_ESCAPE){			animator.stop();			System.exit(0);		}	}	/** 	 * Invoked when a key has been released.	 * See the class description for {@link KeyEvent} for a definition of	 * a key released event.	 * @param e The KeyEvent.	 */	public void keyReleased(KeyEvent e) {}	/** 	 * Invoked when a key has been typed.	 * See the class description for {@link KeyEvent} for a definition of	 * a key typed event.	 * @param e The KeyEvent.	 */	public void keyTyped(KeyEvent e) {}	/**	 * Used to register an Animator Object, which can be controlled from inside 	 * this class	 * @param animator The Animator	 */	public void registerAnimator(Animator animator) {		this.animator = animator;	}	private Particle createParticle() {		Particle p = new Particle(1.0f, 0.001f);		p.setSpeed(Particle.SPEED_X,				0.001f-(float)Math.random()/500.0f);				p.setSpeed(Particle.SPEED_Z,				0.001f-(float)Math.random()/500.0f);		return p;	}	public byte[] getTextureData() {		byte[] data = new byte[256*4*256];		for(int i=0; i<256*4*256; i+=4) {			data[i] = (byte)150;			data[i+1] = (byte)150;			data[i+2] = (byte)255;		}		for(int y=0; y<256; y++) {			for(int x=0; x<256; x++) {				int dx = x-128;				int dy = y-128;				int w = 50 - (int)Math.sqrt((double)(dx*dx+dy*dy))*2;				if (w < 0) w = 0;				data[y*256*4+x*4+3] = (byte)w;			}		}		return data;	}}