Wenn Config.TextureUpdateMode
auf TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
gesetzt ist, stellt ARCore beim Aufrufen von Session.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 Config.TextureUpdateMode
bestimmt, wie die Kameratextur von ARCore aktualisiert wird. Wenn es auf TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
gesetzt ist, 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 } )
Hardwarepuffer 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
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.