Effectuer le rendu de votre application de RA à l'aide de Vulkan sur le NDK Android (C)

Lorsque ArTextureUpdateMode est défini sur AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER, ARCore fournit un tampon matériel Android lors de l'appel de ArSession_update(). Ce tampon matériel peut être lié à un VkImage Vulkan.

Afficher l'exemple d'application

La prise en charge du rendu Vulkan est illustrée dans l'application exemple hello_ar_vulkan_c.

Activer le mode de sortie du tampon matériel

Le ArTextureUpdateMode configuré détermine la manière dont ARCore modifie la texture de l'appareil photo. Lorsqu'il est défini sur AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER, ARCore fournit l'image de l'appareil photo via un AHardwareBuffer.

Configurez la session pour utiliser AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER:

ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);
ArConfig_setTextureUpdateMode(ar_session, ar_config,
                              AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);
ArConfig_destroy(ar_config);

Obtenir le tampon matériel

Lorsque AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER est activé, utilisez ArFrame_getHardwareBuffer() pour obtenir le tampon matériel:

void* native_hardware_buffer = NULL;
ArFrame_getHardwareBuffer(ar_session, ar_frame, &native_hardware_buffer);

if ((int64_t)native_hardware_buffer == 0) {
  // The hardware buffer isn't ready yet.
  return;
}

Utiliser le tampon matériel pendant le rendu Vulkan

Consultez vulkan_handler.cc pour obtenir un exemple d'affichage d'une application de 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 les l'application à partir d'appareils qui ne répondent pas à ses exigences matérielles et logicielles. Les appareils utilisant Vulkan 1.0 ne sont peut-être pas compatibles avec l'extension requise, mais les appareils compatible avec Vulkan 1.1 doit disposer de l'extension requise à partir d'Android 10 (niveau d'API 29).