Problem with screenshot (strange output)

Hi everyone,
I’ve got a problem with my screenshot code in lwjgl :


public final static void printScreen()
      {
            BufferedImage img = new BufferedImage(Display.getWidth(), Display.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
            ByteBuffer buff = ByteBuffer.allocateDirect(Display.getWidth() * Display.getHeight() * 4).order(ByteOrder.nativeOrder());
            int buffh = Sys.getDirectBufferAddress(buff) ;

            gl.readPixels(0, 0, Display.getWidth(), Display.getHeight(), GL.BGRA, GL.UNSIGNED_BYTE, buffh);

            byte[] dataBytes = new byte[buff.capacity()];
            buff.get(dataBytes);
            img.getRaster().setDataElements(0, 0, Display.getWidth(), Display.getHeight(), dataBytes);

            try
            {
                  File f;

                  for (int i = 0; i < 99; i++)
                  {
                        f = new File((i < 10 ? "screenshot0" : "screenshot") + i + ".png");

                        if (!f.exists())
                        {
                              ImageIO.write(img, "png", f);
                              break;
                        }
                  }
            }
            catch(Exception e)
            {
                  System.err.println("Error: can't write image.");
                  e.printStackTrace();
                  System.exit(1);
            }
      }

What is wrong with that code ? See the output at
http://chman-area.tuxfamily.org/images/screenshot00.png

Can someone help me ?

++
Chman

The screen buffer is in GL.RGB, not GL.BGRA.

Cas :slight_smile:

Thanks ! :slight_smile:

++
Chman