AR-App mit Vulkan on Android SDK (Kotlin/Java) rendern

Wenn Config.TextureUpdateMode auf TextureUpdateMode.EXPOSE_HARDWARE_BUFFER gesetzt ist, stellt ARCore beim Aufruf 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. Ist die Richtlinie 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 }
)

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.