Wenn ArTextureUpdateMode
auf AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER
gesetzt ist, stellt ARCore einen Android-Hardware-Puffer bereit, wenn ArSession_update()
aufgerufen wird. Dieser Hardwarepuffer kann an ein Vulkan-VkImage
gebunden werden.
Beispielanwendung ansehen
Die Vulkan-Rendering-Unterstützung wird in der Beispiel-App „hello_ar_vulkan_c“ veranschaulicht.
Hardware-Pufferausgabemodus aktivieren
Die konfigurierte ArTextureUpdateMode
bestimmt, wie die Kameratextur von ARCore aktualisiert wird. Ist die Richtlinie auf AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER
gesetzt, stellt ARCore das Kamerabild über ein AHardwareBuffer
bereit.
Konfigurieren Sie die Sitzung für die Verwendung von 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);
Hardware-Puffer abrufen
Wenn AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER
aktiviert ist, verwenden Sie ArFrame_getHardwareBuffer()
, um den Hardwarepuffer abzurufen:
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; }
Hardware-Zwischenspeicher beim Vulkan-Rendering verwenden
Unter vulkan_handler.cc
finden Sie ein Beispiel für das Rendern einer AR-Anwendung mit Vulkan.
Unterstützte Geräte
Der Vulkan-Rendering-Support ist nur für Android-API-Levels ab 27 verfügbar. Außerdem muss das Gerät die Erweiterung VK_ANDROID_external_memory_android_hardware_buffer
unterstützen.
Vulkan im Manifest Ihrer App anfordern
Google Play verwendet die in Ihrem App-Manifest deklarierte <uses-feature>
, um Ihre App von Geräten zu filtern, die die Anforderungen an Hardware- und Softwarefunktionen nicht erfüllen.
Geräte mit Vulkan 1.0 unterstützen die erforderliche Erweiterung möglicherweise nicht, sondern nur Geräte
kompatibel mit Vulkan 1.1 muss ab Android 10 (API-Level 29) die erforderliche Erweiterung haben.