2012-08-16 88 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