2015-02-06 1 views
-1

glReadPixels 인 픽셀의 RGBA 값을 읽으려고합니다. 내 문제는 픽셀을 읽으려고 할 때마다 이상한 값을 얻는다는 것입니다. 픽셀을 읽을 때 I RGB_888의 설정에 반대, 그래서 그게 함께 할 수있는 뭔가가 가정으로 eglChooseConfig RGB_565 설정,하지만 난 것으로 기대하는 경우에만 발생x 또는 y가 0이 아닌 경우 glReadPixels가 올바르지 않음

ByteBuffer pb = ByteBuffer.allocateDirect(400); 
pb.order(ByteOrder.nativeOrder()); 
pb.position(0); 
GLES20.glReadPixels(0, 0, 10, 10, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, pb); 
byte b [] = new byte[400]; 
pb.get(b); //Here I get [0, 0, 31, -1, 0, 0, 31, 1....] which is the correct value 

ByteBuffer pt = ByteBuffer.allocateDirect(4); 
pt.order(ByteOrder.nativeOrder()); 
pt.position(0); 
GLES20.glReadPixels(1, 0, 1, 1, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, pt); 
b= new byte[4]; 
pt.get(b); //Here I get [-84, 100, -44, -81] 

이 어긋남에 : 나는 다음과 같은 디버그 코드를 작성했습니다 전체 그림을 읽고 반환 된 배열을 보는 것 외에 올바른 픽셀을 읽으려면 할 수있는 방법이 있습니다.

답변

0

ARGB_888 대신 eglChooseConfig을 RGB_565로 변경하면이 현상이 발생한다고 만합니다.

그러나 glReadPixels으로 전화하면 GLES20.GL_RGBA이 전달됩니다. 대신 GLES20.GL_RGB565을 전달하여 선택한 구성과 일치하도록하십시오.

희망이 도움이됩니다.

+0

시도했지만 작동하지 않았습니다. 나는이 매개 변수를 실제로 이해하지 못한다. 그러나 https://www.opengl.org/sdk/docs/man2/xhtml/glReadPixels.xml에서 수집 한 것은 읽기 픽셀의 반환 형식을 지정하는 데 사용된다는 것이다. 저장된 픽셀의 형식이 아닙니다. 그 맞습니까? – eirasf

관련 문제