Renderuj aplikację AR za pomocą interfejsu Vulkan na Androidzie SDK (Kotlin/Java)

Gdy parametr Config.TextureUpdateMode ma wartość TextureUpdateMode.EXPOSE_HARDWARE_BUFFER, ARCore udostępnia bufor sprzętowy Androida po wywołaniu elementu Session.update(). Ten bufor sprzętowy może być powiązany z interfejsem Vulkan VkImage.

Wyświetl przykładową aplikację

Obsługa renderowania za pomocą interfejsu Vulkan jest przedstawiona w przykładowej aplikacji hello_ar_vulkan_c.

Włącz tryb wyjścia bufora sprzętowego

Skonfigurowane pole Config.TextureUpdateMode określa, w jaki sposób ARCore będzie aktualizować teksturę aparatu. Gdy jest ustawiona na TextureUpdateMode.EXPOSE_HARDWARE_BUFFER, ARCore udostępni obraz z aparatu za pomocą HardwareBuffer.

Skonfiguruj sesję, aby używała 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 }
)

Pobierz bufor sprzętowy

Gdy TextureUpdateMode.EXPOSE_HARDWARE_BUFFER jest włączony, użyj Frame.getHardwareBuffer(), aby pobrać bufor sprzętowy:

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.
}

Używaj bufora sprzętowego podczas renderowania interfejsu Vulkan

Przykład tego, jak renderować aplikację AR za pomocą interfejsu Vulkan, znajdziesz vulkan_handler.cc.

Obsługiwane urządzenia

Obsługa renderowania za pomocą interfejsu Vulkan jest dostępna tylko w przypadku interfejsów API Androida na poziomie 27 i wyższych. Dodatkowo urządzenie musi obsługiwać rozszerzenie VK_ANDROID_external_memory_android_hardware_buffer.

Wymagaj interfejsu Vulkan w pliku manifestu aplikacji

Google Play używa elementu <uses-feature> zadeklarowanego w manifeście, aby odfiltrowywać aplikację z urządzeń, które nie spełniają wymagań dotyczących funkcji sprzętu i oprogramowania. Urządzenia korzystające z interfejsu Vulkan 1.0 mogą nie obsługiwać wymaganego rozszerzenia, ale urządzenia zgodne z Vulkan 1.1 muszą mieć wymagane rozszerzenie od Androida 10 (poziom API 29).