Если для Config.TextureUpdateMode
установлено значение TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
, ARCore предоставит аппаратный буфер Android при вызове Session.update()
. Этот аппаратный буфер можно привязать к Vulkan VkImage
.
Посмотреть образец заявления
Поддержка рендеринга Vulkan продемонстрирована в примере приложения hello_ar_vulkan_c .
Включить режим вывода аппаратного буфера
Настроенный Config.TextureUpdateMode
определяет, как ARCore будет обновлять текстуру камеры. Если для него установлено значение TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
, ARCore будет предоставлять изображение с камеры через HardwareBuffer
.
Настройте сеанс для использования 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 } )
Получить аппаратный буфер
Когда включена TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
, используйте Frame.getHardwareBuffer()
для получения аппаратного буфера:
Ява
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. }
Используйте аппаратный буфер во время рендеринга Vulkan.
См. vulkan_handler.cc
для примера того, как визуализировать приложение AR с помощью Vulkan.
Поддерживаемые устройства
Поддержка рендеринга Vulkan доступна только на уровнях Android API 27 и выше. Дополнительно устройство должно поддерживать расширение VK_ANDROID_external_memory_android_hardware_buffer
.
Требовать Vulkan в манифесте вашего приложения
Google Play использует <uses-feature>
, объявленный в манифесте вашего приложения, для фильтрации вашего приложения от устройств, которые не соответствуют его требованиям к аппаратным и программным функциям. Устройства, использующие Vulkan 1.0, могут не поддерживать необходимое расширение, но устройства, совместимые с Vulkan 1.1, должны иметь необходимое расширение, начиная с Android 10 (уровень API 29).