Afficher votre application de RA à l'aide de Vulkan sur le SDK Android (Kotlin/Java)

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).