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

Wenn Config.TextureUpdateMode auf TextureUpdateMode.EXPOSE_HARDWARE_BUFFER gesetzt ist, stellt ARCore einen Android-Hardware-Puffer bereit, wenn Session.update() aufgerufen wird. Dieser Hardware-Puffer kann an einen Vulkan-VkImage gebunden werden.

Beispielanwendung ansehen

Die Vulkan-Rendering-Unterstützung wird in der Beispiel-App „hello_ar_vulkan_c“ veranschaulicht.

Hardware-Pufferausgabemodus aktivieren

Die konfigurierte Config.TextureUpdateMode bestimmt, wie ARCore die Kameratextur aktualisiert. 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 }
)

Hardware-Puffer 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-Puffer 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

Der Vulkan-Rendering-Support ist nur für Android-API-Levels ab 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 anfordern

Google Play verwendet die in Ihrem App-Manifest deklarierte <uses-feature>, um Ihre App von Geräten zu filtern, 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 sie jedoch ab Android 10 (API-Level 29) haben.