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 Vulkan-Rendering-Unterstützung wird in der Beispiel-App „hello_ar_vulkan_c“ veranschaulicht.

Ausgabemodus für Hardwarepuffer aktivieren

Die konfigurierte Config.TextureUpdateMode bestimmt, wie die Kameratextur von ARCore aktualisiert wird. Wenn sie auf TextureUpdateMode.EXPOSE_HARDWARE_BUFFER festgelegt ist, stellt ARCore das Kamerabild über eine 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, verwende Frame.getHardwareBuffer(), um den Hardware-Puffer 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

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. Geräte, die mit Vulkan 1.1 kompatibel sind, müssen die erforderliche Erweiterung ab Android 10 (API-Level 29) haben.