Lorsque Config.TextureUpdateMode
est défini sur TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
, ARCore fournit un tampon matériel Android lorsque Session.update()
est appelé. Ce tampon matériel peut être lié à un VkImage
Vulkan.
Afficher l'application exemple
La prise en charge du rendu Vulkan est illustrée dans l'application exemple hello_ar_vulkan_c.
Activer le mode de sortie de la mémoire tampon matérielle
Le Config.TextureUpdateMode
configuré détermine la manière dont ARCore modifie la texture de l'appareil photo. Lorsqu'il est défini sur TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
, ARCore fournit l'image de l'appareil photo via un HardwareBuffer
.
Configurez la session pour utiliser 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 } )
Obtenir le tampon matériel
Lorsque TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
est activé, utilisez Frame.getHardwareBuffer()
pour obtenir le tampon matériel :
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. }
Utiliser le tampon matériel pendant le rendu Vulkan
Consultez vulkan_handler.cc
pour obtenir un exemple de rendu d'une application RA à l'aide de Vulkan.
Appareils compatibles
La prise en charge du rendu Vulkan n'est disponible qu'aux niveaux d'API Android 27 et
ci-dessus. De plus, l'appareil doit être compatible avec l'extension VK_ANDROID_external_memory_android_hardware_buffer
.
Exiger Vulkan dans le fichier manifeste de votre application
Google Play utilise <uses-feature>
déclaré dans le fichier manifeste de votre application pour filtrer celle-ci et l'exclure des appareils non conformes à ses exigences matérielles et logicielles.
Les appareils utilisant Vulkan 1.0 peuvent ne pas prendre en charge l'extension requise, mais les appareils compatibles avec Vulkan 1.1 doivent disposer de l'extension requise à partir d'Android 10 (niveau d'API 29).