2012-08-16 111 views
0

我想在Android屏幕上获取触摸点的颜色。但它只显示RGB =(0,0,0)值。我搜查了其他网站。它说我应该在下面添加一些代码,但它没有改变任何东西。如何通过glreadpixels获取颜色?

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)); 

回答

0

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

例如 “libgdx \扩展\ GDX-工具\ SRC \ COM \ badlogic \ GDX \工具\ hiero \ BMFontUtil.java” 线176