android opengl-es bitmap opengl-es-2.0 android-bitmap

Crear un mapa de bits de un cuadrado dibujado en Android OpenGL es 2.0



opengl-es bitmap (1)

Se hace usando glReadPixels (). Esto es lento, pero es el único método disponible con OpenGL ES 2.0 en Android. En Java:

Bitmap buttonBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888); ByteBuffer byteBuffer = ByteBuffer.allocateDirect(mWidth * mHeight * 4); GLES20.glReadPixels(0, 0, mWidth, mHeight, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, byteBuffer); buttonBitmap.copyPixelsFromBuffer(byteBuffer);

Sin embargo, es considerablemente más rápido si se implementa en código nativo:

JNIEXPORT jboolean JNICALL Java_com_CopyToBitmap(JNIEnv * env, jclass clazz, jobject bitmap) { AndroidBitmapInfo BitmapInfo; void * pPixels; int ret; if ((ret = AndroidBitmap_getInfo(env, bitmap, &BitmapInfo)) < 0) { LOGE("Error - AndroidBitmap_getInfo() Failed! error: %d", ret); return JNI_FALSE; } if (BitmapInfo.format != ANDROID_BITMAP_FORMAT_RGBA_8888) { LOGE("Error - Bitmap format is not RGBA_8888!"); return JNI_FALSE; } if ((ret = AndroidBitmap_lockPixels(env, bitmap, &pPixels)) < 0) { LOGE("Error - AndroidBitmap_lockPixels() Failed! error: %d", ret); return JNI_FALSE; } glReadPixels(0, 0, BitmapInfo.width, BitmapInfo.height, GL_RGBA, GL_UNSIGNED_BYTE, pPixels); AndroidBitmap_unlockPixels(env, bitmap); return JNI_TRUE; }

Dibujé un cuadrado usando OpenGL es 2.0 y ahora quiero crear un mapa de bits de ese cuadrado dibujado. ¿Puede alguien por favor guiarme sobre cómo hacer eso? Por favor, avíseme si mi pregunta no está clara. Gracias