//get an InputStream dari URL
input = pngURL.openStream();

//inisialisasi decoder
PNGDecoder dec = new PNGDecoder(input);

//membaca dimensi citra dari PNG header
width = dec.getWidth();
height = dec.getHeight();

/kita akan melakukan decode ke RGBA format, yaitu. 4 components atau 4 "bytes per pixel"
final int bpp = 4;

//create a new byte buffer which will hold our pixel data
ByteBuffer buf = BufferUtils.createByteBuffer(bpp * width * height);

//decode citra ke byte buffer, dalam format RGBA
dec.decode(buf, width * bpp, PNGDecoder.Format.RGBA);

//flip buffer ke "read mode" untuk OpenGL
buf.flip();