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

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.