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