If I print ib I get a value like "[I@4373fab8" and if I print b I get a value like "[I@43740a50."

But if I print pb from inside the loop I get 0. For every pixel. Zero. (The screen meanwhile is varying shades of blue.) I can print any variable from the loop, and all I get are 0s.

Thanks for any help.

Code :
int b[] = new int[w * (y + h)];
int bt[] = new int[w * h];
IntBuffer ib = IntBuffer.wrap(b);
ib.position(0);
 
gl.glReadPixels(x, 0, w, y + h, GL10.GL_RGB, GL10.GL_UNSIGNED_SHORT_BYTE, ib);
 
for (int i = 0, k = 0; i < h; i++, k++)
{
    for (int j = 0; j < w; j++)
    {
        int pix = b[i * w + j];
        int pb = (pix >> 16) & 0xff;
        int pr = (pix << 16) & 0x00ff0000;
        int pix1 = (pix & 0xff00ff00) | pr | pb;
        bt[(h - k - 1) * w + j] = pix1;
 
        if(i == 100 && j == 100)
    }
}