我想在Android上的OpenGL ES中通過TouchEvents返回像素顏色。我創建了2個三角形作爲矩形。所以我把它顯示的圖像。黑色區域不是三角形的一部分。Android OpenGL ES - 來自glReadPixels的非常奇怪的像素顏色 - 切換圖像?
如果我點擊黑色區域,它總是給我正確的號碼0 0 0 -1(黑色)。如果我點擊白色區域,它也總是給我正確的數字-1 -1 -1 -1(白色)。但是當我點擊綠色矩形時,它會給我0 0 0 -1(黑色)。之後,我點擊旁邊的黑色矩形,它給了我鄰居的顏色(綠色)。
在 「背景」 的圖像切換,但我不知道這是怎麼可能
使用這種嘖:http://androidblog.reindustries.com/a-real-open-gl-es-2-0-2d-tutorial-part-1/
我對顏色採摘代碼:
public void onDrawFrame(GL10 gl) {
if (clicked) {
gl.glDisable(GL10.GL_TEXTURE_2D);
gl.glDisable(GL10.GL_FOG);
gl.glDisable(GL10.GL_BLEND);
ByteBuffer ss = ByteBuffer.allocate(4);
ss.order(ByteOrder.nativeOrder());
gl.glFlush();
gl.glReadPixels(touchXint, touchYint, 1, 1, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ss);
byte b[] = new byte[4];
ss.get(b);
String key = "" + b[0] + " " + b[1] + " " + b[2] + " " + b[3];
Log.d("Color: ", key);
clicked = false;
ss.rewind();
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glEnable(GL10.GL_FOG);
gl.glEnable(GL10.GL_BLEND);
}
}
是的,但它確實是倒置的... – csnewb
你是如何得到touchXint的?你確定你知道你的屏幕座標系是什麼嗎?它不需要與OpenGL屏幕空間相同。來自MotionEvent的touchXInt os。 – Elvithari
是的,我猜MotionEvent和OpenGL的座標系是不一樣的。我會檢查這一點。 – csnewb