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 comment ARCore met à jour la texture de la caméra. Lorsque cette valeur est définie sur TextureUpdateMode.EXPOSE_HARDWARE_BUFFER, ARCore fournit l'image de la caméra via un HardwareBuffer.

Configurez la session pour qu'elle utilise TextureUpdateMode.EXPOSE_HARDWARE_BUFFER:

Config config = session.getConfig();
config.setTextureUpdateMode(Config.TextureUpdateMode.EXPOSE_HARDWARE_BUFFER);
session.configure(config);
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:

try {
  HardwareBuffer buffer = frame.getHardwareBuffer();
  // Use the buffer object in your rendering.
} catch (NotYetAvailableException e) {
  // The hardware buffer is not ready yet.
}
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 AR à l'aide de Vulkan.

Appareils compatibles

La prise en charge du rendu Vulkan n'est disponible que pour les niveaux d'API Android 27 et supérieurs. 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).