Java-Gaming.org Java4K winners: [ by our judges | by the community ]         
Featured games (67)
games approved by the League of Dukes
Games in Showcase (∞)
games submitted by our members



News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  Print  
  JOGL texture flickering  (Read 832 times)
0 Members and 2 Guests are viewing this topic.
Offline lonedrau

JGO n00b
*

Posts: 5



« on: 2011-02-25 13:23:40 »

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:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
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();
   }

Offline lhkbob

JGO Neuromancer
****

Posts: 1174
Medals: 35



« Reply #1 on: 2011-02-25 15:59:58 »

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

Offline lonedrau

JGO n00b
*

Posts: 5



« Reply #2 on: 2011-02-28 09:04:25 »

Thanks, lhkbob!  It was aliasing within the image.  Changing the tex params to GL_LINEAR solved the problem.
Pages: [1]
  Print  
 
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.072 seconds with 20 queries.