OpenGL ES Pixel Farbe feststellen mit TouchEvent

  • Antworten:0
  • Bentwortet
Florian R.
  • Forum-Beiträge: 1

18.06.2014, 11:08:42 via Website

Hallo!

ich versuche die Farbe anhand von TouchEvents herauszufinden und es als String auszugeben. Momentan gibt es zwei Varianten mit den ich es versuche. 1. In der onDrawFrame(GL10 gl) Methode, 2. In der onTouchEvent Methode.

Bei der ersten Variante im onDrawFrame bekomme ich nur Fragezeichen als Ausgabe. Bei der zweiten im onTouchEvent stürzt das Programm ab mit der Fehlermeldung: JNI Warning: received null array in Landroid/opengl/GLES20;.glReadPixels: (IIIIIILJava/nio/Buffer; )V (GetPrimitiveArrayCritical)

Hier Code:

            ByteBuffer buffer = ByteBuffer.allocate(100);
            CharBuffer cbuf = buffer.asCharBuffer();
            //gl.glReadPixels(..) bei onDrawFrame           
            GLES20.glReadPixels(touchXint, touchYint, 1, 1, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, cbuf);

            Log.d(''PixelFarbe'', cbuf.toString());

Vielen Dank im Voraus!

Edit:

Hier noch eine Variante in der onDrawFrame Methode. Ich bekomme als Ausgabe immer nur eine 0 heraus:

        ByteBuffer ss = ByteBuffer.allocate(100);
        ss.order(ByteOrder.nativeOrder());
        CharBuffer cbuf = ss.asCharBuffer();

        GLES20.glReadPixels(touchXint, touchYint, 1, 1, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, cbuf);

        Log.d("PickedColor", Integer.toString((int) cbuf.get(0)));
        Log.d("PickedColor1", Integer.toString((int) cbuf.get(1)));
        Log.d("PickedColor2", Integer.toString((int) cbuf.get(2)));

— geändert am 18.06.2014, 12:39:41

Antworten