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 associé à un VkImage Vulkan.

Afficher l'exemple d'application

La compatibilité du rendu avec Vulkan est expliquée dans l'application exemple hello_ar_vulkan_c.

Activer le mode de sortie de la mémoire tampon physique

Le Config.TextureUpdateMode configuré détermine la manière dont ARCore mettra à jour la texture de la caméra. Lorsqu'il est défini sur TextureUpdateMode.EXPOSE_HARDWARE_BUFFER, ARCore fournit l'image de la caméra 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 lors du rendu Vulkan

Consultez vulkan_handler.cc pour découvrir comment effectuer le rendu d'une application de RA à l'aide de Vulkan.

Appareils compatibles

Le rendu Vulkan n'est disponible qu'au niveau d'API Android 27 ou supérieur. 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 les <uses-feature> déclarés dans le fichier manifeste de votre application pour la filtrer dans les appareils qui ne répondent pas à ses exigences de fonctionnalités matérielles et logicielles. Les appareils qui utilisent 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).