Cómo utilizar GraphicBuffer en android ndk

Estoy preguntando esto con referencia a una respuesta para mi pregunta en cómo mejorar el rendimiento de visualización opengl en android . Yo estaba tratando de construir el código que utiliza GraphicBuffer con ndk-r9d. Pero está diciendo GraphicBuffer no se declara en este ámbito. Los mismos comentarios para eglCreateImageKHR y glEGLImageTargetTexture2DOES.

He añadido EGL / eglext.h y GLES2 / gl2ext.h. Intenté incluir ui / GraphicBuffer.h pero no lo está tomando. ¿Hay otro archivo de cabecera que se agregará?

El código dado abajo he agregado para evitar el uso de glTexSubImage2D ().

GraphicBuffer * pGraphicBuffer = new GraphicBuffer(frame_width, frame_height, PIXEL_FORMAT_RGB_565, GraphicBuffer::USAGE_SW_WRITE_OFTEN | GraphicBuffer::USAGE_HW_TEXTURE); // Lock the buffer to get a pointer unsigned char * pBitmap = NULL; pGraphicBuffer->lock(GraphicBuffer::USAGE_SW_WRITE_OFTEN,(void **)&pBitmap); // Write 2D image to pBitmap memcpy(pBitmap, frame_buffer, frame_width * frame_height * 3); // Unlock to allow OpenGL ES to use it pGraphicBuffer->unlock(); EGLClientBuffer ClientBufferAddress = pGraphicBuffer->getNativeBuffer(); EGLint SurfaceType = EGL_NATIVE_BUFFER_ANDROID; // Make an EGL Image at the same address of the native client buffer EGLDisplay eglDisplayHandle = eglGetDisplay(EGL_DEFAULT_DISPLAY); // Create an EGL Image with these attributes EGLint eglImageAttributes[] = {EGL_WIDTH, frame_width, EGL_HEIGHT, frame_height, EGL_MATCH_FORMAT_KHR, EGL_FORMAT_RGB_565_KHR, EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, EGL_NONE}; EGLImageKHR eglImageHandle = eglCreateImageKHR(eglDisplayHandle, EGL_NO_CONTEXT, SurfaceType, ClientBufferAddress, eglImageAttributes); // Create a texture and bind it to GL_TEXTURE_2D /* EGLint TextureHandle; glGenTextures(1, &TextureHandle); glBindTexture(GL_TEXTURE_2D, TextureHandle); */ // Attach the EGL Image to the same texture glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, eglImageHandle); 

¿Qué puedo hacer para que se ejecute ……

Gracias por adelantado..

Estoy trabajando en este problema en estos días, también.

Muchos blogs dijeron que una copia del código fuente de Android es necesaria para vincularse con su proyecto. Creo que es más elegante para obtener la función de libui.so en tiempo de ejecución, que es el "enfoque alternativo" mencionado por Aleksandar Stojiljkovic.

He escrito una biblioteca simple para hacer eso. Aquí está.

Lamentablemente, se eliminó de aquí, pero usted podría obtener algunas respuestas allí: http://community.arm.com/groups/arm-mali-graphics/blog/2013/10/24/eglimage–updating-a-texture- Sin-copiar-memoria-bajo-android

En resumen, necesitará crear un código de plataforma Android y crear una biblioteca que abra el acceso a GraphicBuffer y la API necesaria y crearla contra la base de código android. Como otros indicados, tendrás que mantener la biblioteca …

Este es un enfoque alternativo: https://code.google.com/p/chromium/codesearch#chromium/src/third_party/deqp/src/framework/platform/android/tcuAndroidInternals.cpp&l=167

GraphicBuffer está en el espacio de nombres android.

O bien añadir:

Usando el espacio de nombres android;

O consulte GraphicBuffer con android :: GraphicBuffer

  • Obtener un ANativeWindowBuffer de ANativeWindow_Buffer
  • Android: ¿Es posible crear una SurfaceTexture sin SurfaceView?
  • Sustituyendo glReadPixels por EGL_KHR_image_base para una copia de píxeles más rápida
  • EGLImages con renderbuffer como hermano de origen y textura como hermano objetivo
  • ¿Qué sustituye a GraphicBuffer en Android 7.0?
  • E / libEGL: error en el archivo de caché CRC check
  • GLES2.0: Usar GL_TEXTURE_EXTERNAL_OES a través de glEGLImageTargetTexture2DOES
  • Qué superficie utilizar para eglMakeCurrent para el contexto que sólo se convierte en FBOs
  • Cómo renderizar vídeo a través de openGLES2 con Android NDK
  • Buffer automático al utilizar OpenGL en Android
  • Android: cómo averiguar la relación de aspecto exacta de píxeles de los dispositivos mediante programación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.