Чтение буферов в Java - PullRequest
       30

Чтение буферов в Java

2 голосов
/ 25 октября 2011

Мне нужно немного руки для чтения буфера, который выплевывает функция glReadPixels в Android OpenGL-ES API. Вот мой код пока ...

public static void pick(GL11 gl){
        int[] viewport = new int[4];
        IntBuffer pixel = IntBuffer.allocate(384000);

        mColourR = BaseObject.getColourR();
        mColourG = BaseObject.getColourG();
        mColourB = BaseObject.getColourB();

        x = MGLSurfaceView.X();
        y = MGLSurfaceView.Y();

        gl.glGetIntegerv(GL11.GL_VIEWPORT,viewport,0);

        gl.glReadPixels((int)x,viewport[3]-(int)y, 1, 1, GL11.GL_RGB, GL11.GL_UNSIGNED_BYTE, pixel);


}

имя выходного буфера в этом коде - "пиксель". Что мне нужно добавить к этому коду, чтобы получить значения цвета обратно из буфера "пикселя".

1 Ответ

1 голос
/ 25 октября 2011

Вы можете использовать один из get () методов из IntBuffer для доступа к отдельным значениям.

Значения цвета RGB обычно хранятся в том же порядке, поэтому при вызове pixel.get(0) вы получите красное значение первого пикселя, pixel.get(1) - зеленый канал и так далее. Обычно значения хранятся построчно.

Итак, если вам нужно значение для определенного пикселя, (x, y) вам придется позвонить get(screenWidth*3*y + x)

Кстати, вы можете получить необработанный массив int из вашего IntBuffer, вызвав pixels.array()

...