2015-02-06 67 views
-1

我試圖讀glReadPixels像素的RGBA值。我的問題是,每當我嘗試讀取一個像素時,我都會得到奇怪的值。像素讀取時當x或y不是0時glReadPixels不正確

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

你說這隻發生在將eglChooseConfig更改爲RGB_565而不是ARGB_888時。

但是,當您撥打glReadPixels時,您將通過GLES20.GL_RGBA。嘗試改爲通過GLES20.GL_RGB565以匹配您選擇的配置。

希望這會有所幫助。

+0

我試過了,但沒有奏效。我不太瞭解這個參數,但是我從https://www.opengl.org/sdk/docs/man2/xhtml/glReadPixels.xml獲得的是它用於指定讀取像素的返回格式,不是所存儲像素的格式。那是對的嗎? – eirasf 2015-02-19 13:56:27

相關問題