Cuando Config.TextureUpdateMode
se establece en TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
, ARCore proporcionará un búfer de hardware de Android cuando se llame a Session.update()
. Este búfer de hardware se puede vincular a un VkImage
de Vulkan.
Consulta la aplicación de ejemplo
La compatibilidad con la renderización de Vulkan se demuestra en la app de ejemplo hello_ar_vulkan_c.
Habilita el modo de salida del búfer de hardware
El Config.TextureUpdateMode
configurado determina cómo ARCore actualizará la textura de la cámara. Cuando se establece en TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
, ARCore proporcionará la imagen de la cámara a través de HardwareBuffer
.
Configura la sesión para que use TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
:
Java
Config config = session.getConfig(); config.setTextureUpdateMode(Config.TextureUpdateMode.EXPOSE_HARDWARE_BUFFER); session.configure(config);
Kotlin
session.configure( session.config.apply { textureUpdateMode = Config.TextureUpdateMode.EXPOSE_HARDWARE_BUFFER } )
Cómo obtener el búfer de hardware
Cuando TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
está habilitado, usa Frame.getHardwareBuffer()
para obtener el búfer de hardware:
Java
try { HardwareBuffer buffer = frame.getHardwareBuffer(); // Use the buffer object in your rendering. } catch (NotYetAvailableException e) { // The hardware buffer is not ready yet. }
Kotlin
try { val buffer = frame.hardwareBuffer // Use the buffer object in your rendering. } catch (e: NotYetAvailableException) { // The hardware buffer is not ready yet. }
Cómo usar el búfer de hardware durante la renderización de Vulkan
Consulta vulkan_handler.cc
para ver un ejemplo de cómo renderizar una aplicación de RA con Vulkan.
Dispositivos compatibles
La compatibilidad con el procesamiento de Vulkan solo está disponible en los niveles de API 27 y
arriba. Además, el dispositivo debe admitir la extensión VK_ANDROID_external_memory_android_hardware_buffer
.
Cómo exigir Vulkan en el manifiesto de tu app
Google Play usa <uses-feature>
declarado en el manifiesto de tu app para aplicarle filtrado y excluir dispositivos que no cumplan con sus requisitos de las funciones de software y hardware.
Es posible que los dispositivos que usan Vulkan 1.0 no admitan la extensión requerida, pero
compatible con Vulkan 1.1 debe tener la extensión requerida a partir de Android 10 (nivel de API 29).