Wenn ArTextureUpdateMode
auf AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER
gesetzt ist, stellt ARCore beim Aufruf von ArSession_update()
einen Android-Hardware-Zwischenspeicher bereit. Dieser Hardwarepuffer kann an ein Vulkan-VkImage
gebunden werden.
Beispielanwendung ansehen
Die Unterstützung für Vulkan-Rendering wird in der Beispiel-App hello_ar_vulkan_c demonstriert.
Ausgabemodus für Hardwarepuffer 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);
Hardwarepuffer 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
findest du ein Beispiel für das Rendern einer AR-Anwendung mit Vulkan.
Unterstützte Geräte
Vulkan-Rendering ist nur für Android API-Level 27 und
oben. Außerdem muss das Gerät die Erweiterung VK_ANDROID_external_memory_android_hardware_buffer
unterstützen.
Vulkan im Manifest Ihrer App verlangen
Google Play verwendet die in deinem App-Manifest deklarierten <uses-feature>
, um deine Inhalte zu filtern
App von Geräten herunterladen, 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.