Wenn ArTextureUpdateMode
auf AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER
gesetzt ist, stellt ARCore beim Aufrufen von ArSession_update()
einen Android-Hardwarepuffer bereit. Dieser Hardwarepuffer kann an einen Vulkan VkImage
gebunden werden.
Beispielanwendung ansehen
Die Unterstützung für das Vulkan-Rendering wird in der Beispiel-App „hello_ar_vulkan_c“ veranschaulicht.
Ausgabemodus für Hardwarepuffer aktivieren
Das konfigurierte ArTextureUpdateMode
bestimmt, wie ARCore die Kameratextur aktualisiert. Ist sie 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);
Hardwarezwischenspeicher 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
Unterstützung für Vulkan-Rendering ist nur ab Android API-Levels 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 erforderlich machen
Google Play verwendet die in deinem App-Manifest deklarierte <uses-feature>
, um deine App nach Geräten zu filtern, die die Anforderungen an Hardware- und Softwarefunktionen nicht erfüllen.
Geräte, auf denen Vulkan 1.0 verwendet wird, unterstützen die erforderliche Erweiterung möglicherweise nicht. Geräte, die mit Vulkan 1.1 kompatibel sind, müssen die erforderliche Erweiterung jedoch ab Android 10 (API-Level 29) haben.