我正在尝试使用glReadPixels
读取像素的RGBA值。我的问题是,每当我尝试读取像素时,我都会得到奇怪的值。我编写了以下调试代码:
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]
读取像素时的这种错位只发生在我eglChooseConfig
RGB_565配置而不是RGB_888配置时,所以我认为这与它有关,但我希望有一些我可以做的事情除了读取整个图片并查看返回的数组外,还要读取正确的像素。
答案 0 :(得分:0)
您说这只是在您将eglChooseConfig
更改为RGB_565而非ARGB_888
时才会发生。
但是,当您致电glReadPixels
时,您正在通过GLES20.GL_RGBA
。请尝试传递GLES20.GL_RGB565
以匹配您选择的配置。
希望这有帮助。