GlReadPixels demasiado lento para usar

Estoy utilizando glReadPixels para tomar una instantánea a intervalos regulares en el método GLSurfaceView.Renderer de GLSurfaceView.Renderer . Necesito tomar esta instantánea en intervalos regulares para guardar guardar mis datos según los requisitos de mi aplicación.

Sin embargo, el rendimiento de glReadPixels es muy lento y muestra un retraso. He aquí cómo utilizo el método:

 gl.glReadPixels(0, 0, 1280, 752, GL10.GL_RGBA,GL10.GL_UNSIGNED_BYTE, bb); 

¿Hay una alternativa para usar glReadPixels ? ¿Cómo puedo guardar la imagen sin causar un retraso?

No sé si eso está disponible en android, pero quizás PBOs (Pixel buffer objects) dará un impulso de rendimiento. Vea este hilo de OpenGL.org .

Sin embargo, no esperes milagros! Con una imagen RGBA de 1280 * 752, está transfiriendo 3.67 MB de datos cada fotograma. No sé las cifras de Android, pero me gustaría apostar que se enfrentan a un ancho de banda de memoria o disco duro de escribir cuello de botella. Si reduce el tamaño de su readPixel y consigue un rendimiento mucho mejor, sabe que ese es el problema.

Además, ¿necesita el componente "A"? Tal vez la lectura de RGB es más rápido. Trate de leer en diferentes formatos. Algunos son mucho más rápidos que otros porque se correlacionan mejor con la representación de memoria OpenGL. Por ejemplo, BGRA puede ser más rápido que RGBA. Cuando se solicita un formato que no coincide con lo que tiene OpenGL, cada píxel debe convertirse durante la operación.

  • Problema de renderizado de malla libgdx
  • Programación Android Camera.PreviewCallback (con OpenGL y OpenCV)
  • ¿La mejor manera de tener una superposición de zoom y pan en Android?
  • Tamaño de textura mínimo requerido para el cumplimiento con OpenGL-ES 2.0 en Android?
  • Creación de una pantalla apropiada de Splash / Loading de Android
  • Desplazamiento suave / Desplazamiento inercial / Desplazamiento dinámico
  • Android: aplica efectos de OpenGL a la cámara
  • Android OpenGL2.0 que muestra texturas negras
  • AndEngine: colisión de dos sprites
  • Cómo utilizar OpenCL en Android?
  • ¿Qué es JNI Graphics o cómo usarlo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.