2010-11-02 52 views
0

我正在使用min3d將* .obj格式的3D模型導入到android 1.6。但是,我需要檢測我正在觸摸哪個臉部。所以我打算使用下面的代碼使用顏色選擇。glReadPixel在android 1.6中返回0

FloatBuffer pixel = FloatBuffer.allocate(4); 
       IntBuffer viewport = IntBuffer.allocate(4); 
       gl.glGetIntegerv(GL11.GL_VIEWPORT, viewport); 
       gl.glFlush(); 
       viewport.position(0); 
       gl.glReadPixels((int) x, (int) (viewport.get(3) - y), 1, 1, 
         GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, pixel); 

       Log.d("Pixel Values:", pixel.get(0) + " " + pixel.get(1) + " " 
         + pixel.get(2) + " " + pixel.get(3)); 

其中x和y是從onTouch收聽者收到的座標。當執行這段代碼時,我總是在日誌中獲得0 0 0 0。如何解決這個問題?

+0

你確定像素實際上不是黑色(0,0,0,0)? – ssube 2010-11-02 04:54:54

+0

感謝您的快速回復,但沒有。它的藍色和背景是白色的。 – Prabhat 2010-11-02 04:59:58

回答

0

我不是Android的用戶,但你傳遞一個FloatBuffer到glReadPixels並且類型是GL_UNSIGNED_BYTE,也許你想要一個ByteBuffer或開關類型爲GL_FLOAT。

+0

感謝您的快速回復,但它不起作用。更改爲GL_FLOAT,返回0.0 0.0 0.0 0.0 0.0 – Prabhat 2010-11-02 05:14:15

+1

您的呼叫是否會產生任何GL錯誤?你可以用glGetError() – 2010-11-02 05:18:21

+0

來檢查。我得到錯誤代碼:2597872.不知道它是什麼意思。 – Prabhat 2010-11-02 05:23:43