code: protected static ByteBuffer getRgba(Image image) {
      int w = (int) image.width(), h = (int) image.height(), size = w * h;
      int[] rawPixels = new int[size];
      ByteBuffer pixels = ByteBuffer.allocateDirect(size * 4);
      pixels.order(ByteOrder.nativeOrder());
      IntBuffer rgba = pixels.asIntBuffer();
      image.getRgb(0, 0, w, h, rawPixels, 0, w);
  
      for (int i = 0; i < size; i++) {
        int argb = rawPixels[i];
        // Order is inverted because this is read as a byte array, and we store intel ints.
        rgba.put(i, ((argb >> 16) & 0x0ff) | (argb & 0x0ff00ff00) | ((argb & 0xff) << 16));
      }
      return pixels;
    }
docs: used by GLContext.tex(Sub)Image2D impls