public void init(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
gl.glDisable(GL2.GL_DEPTH_TEST);
gl.glMatrixMode(GL2.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(0.0, width, 0.0, height, 0.0, 1.0);
gl.glViewport(0, 0, width, height);
gl.glGenTextures(1, frameTexture, 0);
}
public void display(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
GLU glu = new GLU();
GLUquadric quad = glu.gluNewQuadric();
gl.glClear(GL2.GL_COLOR_BUFFER_BIT);
if(frameNumber > 0) {
// draw the texture stored in frameTexture
gl.glEnable(GL2.GL_TEXTURE_2D);
gl.glBindTexture(GL.GL_TEXTURE_2D, frameTexture[0]);
gl.glBegin(GL2.GL_QUADS);
gl.glBegin(GL2.GL_QUADS);
gl.glTexCoord2f(0, 0);
gl.glVertex2d(0, 0);
gl.glTexCoord2f(width, 0);
gl.glVertex2d(width, 0);
gl.glTexCoord2f(width, height);
gl.glVertex2d(width, height);
gl.glTexCoord2f(0, height);
gl.glVertex2d(0, height);
gl.glEnd();
}
// draw a red circle
double[] oldColor = new double[4];
gl.glGetDoublev(GL2.GL_CURRENT_COLOR, oldColor, 0);
gl.glColor3dv(new double[] {1.0, 0.0, 0.0}, 0);
gl.glPushMatrix();
gl.glTranslated(frameNumber, frameNumber, 0);
glu.gluDisk(quad, 0, 15, 20, 2);
gl.glPopMatrix();
gl.glColor3dv(oldColor, 0);
// update frameTexture with the current frame buffer
gl.glEnable(GL2.GL_TEXTURE_2D);
gl.glBindTexture(GL2.GL_TEXTURE_2D, frameTexture[0]);
gl.glCopyTexSubImage2D(GL2.GL_TEXTURE_2D, 0, 0, 0, 0, 0, width, height);
frameNumber++;
}