如何通过glreadpixels获取颜色?

时间:2012-08-16 12:22:35

标签: android opengl-es-2.0 glreadpixels picking ray-picking

我正试图在Android屏幕上获得一种触摸点颜色。但它只显示RGB =(0,0,0)值。我搜索过其他网站。它说我应该在下面添加一些代码,但它没有改变任何东西。

getHolder().setFormat(PixelFormat.TRANSLUCENT);
setEGLConfigChooser(8,8,8,8,0,0);

所以任何建议都会得到提前感谢。

ByteBuffer PixelBuffer = ByteBuffer.allocateDirect(4);
    PixelBuffer.order(ByteOrder.nativeOrder());
    PixelBuffer.position(0);
    int mTemp = 0;
    GLES20.glReadPixels(touchX, touchY, 1, 1, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, PixelBuffer);
    byte b[] = new byte[4];
    PixelBuffer.get(b);
    tmp = String.valueOf(String.format("RED : %d GREEN %d BLUE %d", PixelBuffer.get(0), PixelBuffer.get(1), PixelBuffer.get(2)));
    tmp += String.valueOf(String.format("RED : %d GREEN %d BLUE %d", b[0], b[1], b[2]));
    Log.e("COLOR", "R:" + PixelBuffer.get(0) + PixelBuffer.get(1) + PixelBuffer.get(2));

1 个答案:

答案 0 :(得分:0)

您是否将openGL用于绘制屏幕或仅使用普通应用程序? 如果您使用openGL,那么您是否使用OpenGL 2.0或1.x来绘制屏幕? 你打电话支持openGLES 2.0吗?我可以看到他们没有太多设备支持它。 您可以查看http://code.google.com/p/libgdx/源代码,他们有一些获取FramBuffer像素的示例。

例如“libgdx \ extensions \ gdx-tools \ src \ com \ badlogic \ gdx \ tools \ hiero \ BMFontUtil.java”第176行。