JOGL texture flickering

I am playing around with the JOGL double-buffering example at http://www.java-tips.org/other-api-tips/jogl/how-to-implement-a-simple-double-buffered-animation-with-mouse-e.html, and modified it to draw a rotating square moving across the page.

This worked, but when I tried to bind a texture to it, the image flickers as it goes across the screen. I have tried also setting the swap interval to use vsync, but there was no improvement.

What could cause the flickering, and what can I do to get rid of it?

Here is where I altered the code from Kiet Le’s original example:


Texture elf;
float x = -100f;
public void init(GLAutoDrawable drawable) {
		GL gl = drawable.getGL();
		gl.setSwapInterval(1);
		gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
		gl.getGL2().glShadeModel(GLLightingFunc.GL_FLAT);
		gl.glEnable(GL.GL_BLEND);
		try {
			// load a 64x64 image
			elf = loadImage("jogl/ch8/0_2.png");
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
public void display(GLAutoDrawable drawable) {
		GL gl = drawable.getGL();
		gl.glClear(GL.GL_COLOR_BUFFER_BIT);
		elf.enable();
		elf.setTexParameteri(GL.GL_TEXTURE_WRAP_S,
				GL2.GL_CLAMP);
		elf.setTexParameteri(GL.GL_TEXTURE_WRAP_T,
				GL2.GL_CLAMP);
		elf.setTexParameteri(GL.GL_TEXTURE_MAG_FILTER,
				GL.GL_NEAREST);
		elf.setTexParameteri(GL.GL_TEXTURE_MIN_FILTER,
				GL.GL_NEAREST);
		elf.bind();
		gl.getGL2().glPushMatrix();
		gl.getGL2().glTranslatef(x, -50, 0f);
		gl.getGL2().glRotatef(spin, 0.0f, 0.0f, 1.0f);
		gl.getGL2().glColor3f(1.0f, 1.0f, 1.0f);
		gl.getGL2().glBegin(GL2.GL_QUADS);
		gl.getGL2().glTexCoord2f(0, 1);
		gl.getGL2().glVertex2f(0, 0);
		gl.getGL2().glTexCoord2f(1, 1);
		gl.getGL2().glVertex2f(25, 0);
		gl.getGL2().glTexCoord2f(1, 0);
		gl.getGL2().glVertex2f(25, 25);
		gl.getGL2().glTexCoord2f(0, 0);
		gl.getGL2().glVertex2f(0, 25);
		gl.getGL2().glEnd();
		elf.disable();
		//gl.getGL2().glRectf(x, -50f, x + 25f, -25f);
		gl.getGL2().glPopMatrix();

		gl.glFlush();
		x++;
		if (x > 50f) {
			x = -100f;
		}
		spinDisplay();
	}

What type of flickering do you mean? Does the image appear and disappear or is it aliasing within the image? If it’s aliasing, you could try using GL_LINEAR instead of GL_NEAREST

Thanks, lhkbob! It was aliasing within the image. Changing the tex params to GL_LINEAR solved the problem.