void SaveScreenshot(GL gl){
try{
FileOutputStream screenShot = new FileOutputStream("screenshot" + imageCount++ + ".tga");
byte TGAheader[] ={0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}; //Uncompressed TGA header
byte infoHeader[] = new byte[6];
int screenSize[] = new int[4];
gl.glGetIntegerv(gl.GL_VIEWPORT,screenSize);
byte[] data= new byte[4*screenSize[2]*screenSize[3]];
//read in the screen data
gl.glReadPixels(0, 0, screenSize[2], screenSize[3], gl.GL_RGBA, gl.GL_UNSIGNED_BYTE, data);
//data needs to be in BGR format
//swap b and r
for(int i=0; i< data.length; i+=4){
byte temp = data[i+2];
data[i+2] = data[i ];
data[i ] = temp;
}
screenShot.write(TGAheader);
//save info header
infoHeader[0]= (byte)(screenSize[2] & 0x00FF);
infoHeader[1]= (byte)((screenSize[2] & 0xFF00) >> 8);
infoHeader[2]= (byte)(screenSize[3] & 0x00FF);
infoHeader[3]= (byte)((screenSize[3] & 0xFF00) >> 8);
infoHeader[4]= 32;
infoHeader[5]= 0;
//save info header
screenShot.write(infoHeader);
screenShot.write(data);
screenShot.close();
}
catch(Exception e){
JOptionPane.showMessageDialog(null,"Error writing screenshot to disk",
"Error",
JOptionPane.ERROR_MESSAGE);
}
}