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'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 du tampon matériel

Le ArTextureUpdateMode configuré détermine comment ARCore met à jour la texture de la caméra. Lorsque cette valeur est définie sur AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER, ARCore fournit l'image de la caméra via un AHardwareBuffer.

Configurez la session pour qu'elle utilise 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 de rendu d'une application AR à 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 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).