ReadPixel in Jogl

Can someone tell me how I can read pixels from a buffer in JOGL. Please illustrate with the code.

+3
source share
1 answer

After rendering, 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;
}
+4
source

Source: https://habr.com/ru/post/1774699/


All Articles