Archit
Archit

Reputation: 389

ReadPixel in Jogl

Can anyone let me know how can I read pixels from buffer in JOGL. Please illustrate with a code.

Upvotes: 3

Views: 2083

Answers (1)

dacwe
dacwe

Reputation: 43504

After rendering is done, call this method:

public BufferedImage toImage(GL gl, int w, int h) {

    gl.glReadBuffer(GL.GL_FRONT); // or GL.GL_BACK

    ByteBuffer glBB = ByteBuffer.allocate(3 * w * h); 
    gl.glReadPixels(0, 0, w, h, GL.GL_BGR, GL.GL_BYTE, glBB);

    BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
    int[] bd = ((DataBufferInt) bi.getRaster().getDataBuffer()).getData();

    for (int y = 0; y < h; y++) {
        for (int x = 0; x < w; x++) {
            int b = 2 * glBB.get();
            int g = 2 * glBB.get();
            int r = 2 * glBB.get();

            bd[(h - y - 1) * w + x] = (r << 16) | (g << 8) | b | 0xFF000000;
        }
    }

    return bi;
}

Upvotes: 3

Related Questions