Wenn Config.TextureUpdateMode
auf TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
gesetzt ist, stellt ARCore beim Aufrufen von Session.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 Config.TextureUpdateMode
bestimmt, wie ARCore die Kameratextur aktualisiert. Ist sie auf TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
gesetzt, stellt ARCore das Kamerabild über ein HardwareBuffer
bereit.
Konfigurieren Sie die Sitzung für die Verwendung von TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
:
Java
Config config = session.getConfig(); config.setTextureUpdateMode(Config.TextureUpdateMode.EXPOSE_HARDWARE_BUFFER); session.configure(config);
Kotlin
session.configure( session.config.apply { textureUpdateMode = Config.TextureUpdateMode.EXPOSE_HARDWARE_BUFFER } )
Hardwarezwischenspeicher abrufen
Wenn TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
aktiviert ist, verwenden Sie Frame.getHardwareBuffer()
, um den Hardwarepuffer abzurufen:
Java
try { HardwareBuffer buffer = frame.getHardwareBuffer(); // Use the buffer object in your rendering. } catch (NotYetAvailableException e) { // The hardware buffer is not ready yet. }
Kotlin
try { val buffer = frame.hardwareBuffer // Use the buffer object in your rendering. } catch (e: NotYetAvailableException) { // The hardware buffer is not ready yet. }
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.