Quando o Config.TextureUpdateMode
está definido como TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
, o ARCore fornece um buffer de hardware do Android quando Session.update()
é chamado. Esse buffer de hardware pode ser vinculado a um VkImage
do Vulkan.
Confira o aplicativo de exemplo
O suporte à renderização do Vulkan é demonstrado no app de exemplo hello_ar_vulkan_c.
Ativar o modo de saída de buffer de hardware
O Config.TextureUpdateMode
configurado determina como o ARCore vai atualizar a textura da câmera. Quando ele está definido como TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
, o ARCore fornece a imagem da câmera usando um HardwareBuffer
.
Configure a sessão para usar o 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 } )
Receber o buffer de hardware
Quando TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
estiver ativado, use Frame.getHardwareBuffer()
para receber o buffer 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. }
Usar o buffer de hardware durante a renderização do Vulkan
Consulte vulkan_handler.cc
para conferir um exemplo de como renderizar um app de RA usando o Vulkan.
Dispositivos compatíveis
O suporte à renderização do Vulkan está disponível apenas nos níveis 27 e
mais recentes da API do Android. Além disso, o dispositivo precisa oferecer suporte à extensão VK_ANDROID_external_memory_android_hardware_buffer
.
Exigir o Vulkan no manifesto do app
O Google Play usa <uses-feature>
declarado no manifesto do app para filtrar o
app de dispositivos que não atendem aos requisitos de recursos de hardware e software.
Dispositivos que usam o Vulkan 1.0 podem não oferecer suporte à extensão necessária, mas dispositivos
compatíveis com o Vulkan 1.1 precisam ter a extensão necessária a partir do Android 10 (nível 29 da API).