glReadPixels возвращает неправильные значения - PullRequest
1 голос
/ 29 мая 2011

Я пытаюсь получить цвет визуализированных пикселей.

gl.glColor3f(1f, 0, 0);
//draw
gl.glReadPixels(lastX - pw / 2, MyCanvas.this.getHeight()
            - (lastY - ph / 2), pw, ph, GL.GL_RED, GL.GL_FLOAT,
            pixelBuffer);
float r, g, b;
r = pixelBuffer.getFloat();
g = pixelBuffer.getFloat();
b =pixelBuffer.getFloat();
pixelBuffer.rewind();
System.out.println(r+" "+g+" "+b);

на экране присутствует настоящий чистый красный цвет, но glReadPixels возвращает очень странное значение r 4.6006E-41, почему ???

Ответы [ 2 ]

7 голосов
/ 29 мая 2011

glReadPixels документация говорит:

Параметры хранения, установленные glPixelStore, такие как GL_PACK_LSB_FIRST и GL_PACK_SWAP_BYTES, влияют на способ записи данных в память.

Итак, проверьте вашу glPixelStore конфигурацию.Ваш порядок байтов обратный.

0x0000803F => 4.600602988224807e-41
0x3F800000 => 1.0

Полезные ссылки:

0 голосов
/ 29 мая 2011

Используйте GL_RGB вместо GL_RED в качестве формата.

...