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
:
Config config = session.getConfig(); config.setTextureUpdateMode(Config.TextureUpdateMode.EXPOSE_HARDWARE_BUFFER); session.configure(config);
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:
try { HardwareBuffer buffer = frame.getHardwareBuffer(); // Use the buffer object in your rendering. } catch (NotYetAvailableException e) { // The hardware buffer is not ready yet. }
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.