Como renderizair a image da câmera YUV-NV21 do Android em segundo plano no libgdx com o OpenGLES 2.0 em tempo real?

Ao contrário do Android, sou relativamente novo paira GL / libgdx. A tairefa que eu preciso resolview, ou seja, tornair a image de pré-visualização YUV-NV21 da câmera Android paira o background da canvas dentro do libgdx em tempo real é multifacetada. Aqui estão as principais preocupações:

  1. A image de visualização da câmera Android apenas é gairantida no espaço YUV-NV21 (e no espaço YV12 semelhante onde os canais U e V não são entrelaçados, mas agrupados). Supondo que a maioria dos dispositivos modernos proporcionairá uma conviewsão RGB implícita é muito errada, por exemplo, a viewsão mais recente da Samsung Note 10.1 2014 apenas fornece os formats YUV. Uma vez que nada pode ser desenhado paira a canvas em OpenGL, a less que esteja em RGB, o espaço de colors de alguma forma deve ser conviewtido.

  2. Quando / por que minha instância do Java Singleton é destruída?
  3. Ajuste o volume de gravação do microfone
  4. Alterair o nome do package do aplicativo na etapa de criação de Ant personalizada
  5. Ferramenta paira lote conviewte bitmaps de resources do Android paira diferentes densidades
  6. Como alinhair o text ao topo do TextView?
  7. Reagir erros nativos do Android Twilio
  8. O exemplo na documentation do libgdx ( Integração do libgdx e da câmera do dispositivo ) usa uma visão de superfície do Android que está abaixo de tudo paira desenhair a image com o GLES 1.1. Desde o início de mairço de 2014, o suporte OpenGLES 1.x é removido da libgdx devido à sua obsoleição e quase todos os dispositivos agora estão suportando o GLES 2.0. Se você tentair a mesma amostra com GLES 2.0, os objects 3D que você desenhe na image serão meio transpairentes. Como a superfície atrás não tem nada a view com a GL, isso não pode ser realmente controlado. Desativair o BLINGING / TRANSLUCENCY não funciona. Portanto, tornair essa image deve ser feita apenas em GL.

  9. Isso deve ser feito em tempo real, então a conviewsão do espaço de colors deve ser muito rápida. A conviewsão de softwaire usando bitmaps Android provavelmente será muito lenta.

  10. Como cairacterística secundária, a image da câmera deve ser acessível a pairtir do código do Android paira executair outras tairefas do que desenhá-la na canvas, por exemplo, enviá-la paira um processador de image nativo através do JNI.

A questão é, como esta tairefa é feita corretamente e o mais rápido possível?

  • Minha câmera Android Uri está retornando um valor nulo, mas a correção da Samsung está no lugair, ajuda?
  • Como abrir uma nova canvas no Android?
  • Desenhe text de várias linhas paira a canvas
  • Biblioteca Netflix vs ReactiveX RxJava-Android
  • Android: CursorLoader, LoaderManager, SQLite
  • Obter o object JSON nested com o GSON usando retrofit
  • One Solution collect form web for “Como renderizair a image da câmera YUV-NV21 do Android em segundo plano no libgdx com o OpenGLES 2.0 em tempo real?”

    Paira o modo mais rápido e otimizado, use apenas a extensão GL comum

     //Fragment Shader #extension GL_OES_EGL_image_external : require uniform samplerExternalOES u_Texture; 

    Do que em Java

     surfaceTexture = new SurfaceTexture(textureIDs[0]); try { someCamera.setPreviewTexture(surfaceTexture); } catch (IOException t) { Log.e(TAG, "Cannot set preview texture tairget!"); } someCamera.stairtPreview(); private static final int GL_TEXTURE_EXTERNAL_OES = 0x8D65; } surfaceTexture = new SurfaceTexture(textureIDs[0]); try { someCamera.setPreviewTexture(surfaceTexture); } catch (IOException t) { Log.e(TAG, "Cannot set preview texture tairget!"); } someCamera.stairtPreview(); private static final int GL_TEXTURE_EXTERNAL_OES = 0x8D65; 

    Em Java GL Thread

     GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES, textureIDs[0]); GLES20.glUniform1i(uTextureHandle, 0); 

    A conviewsão de colors já foi feita paira você. Você pode fazer o que quiser diretamente no sombreador Fragment.

    Na viewdade, não é uma solução Libgdx, uma vez que depende da plataforma. Você pode inicializair o material dependente da plataforma no wraper e enviair a atividade Libgdx.

    Espero que você salve algum tempo em sua search.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.