Android SDK (Kotlin/자바)에서 Vulkan을 사용하여 AR 앱 렌더링

Config.TextureUpdateModeTextureUpdateMode.EXPOSE_HARDWARE_BUFFER로 설정되면 Session.update()가 호출될 때 ARCore가 Android 하드웨어 버퍼를 제공합니다. 이 하드웨어 버퍼는 Vulkan VkImage에 바인딩될 수 있습니다.

샘플 애플리케이션 보기

Vulkan 렌더링 지원은 hello_ar_vulkan_c 샘플 앱에서 설명합니다.

하드웨어 버퍼 출력 모드 사용 설정

구성된 Config.TextureUpdateMode에 따라 ARCore에서 카메라 텍스처가 업데이트되는 방법이 결정됩니다. TextureUpdateMode.EXPOSE_HARDWARE_BUFFER로 설정하면 ARCore에서 HardwareBuffer를 통해 카메라 이미지를 제공합니다.

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

하드웨어 버퍼 가져오기

TextureUpdateMode.EXPOSE_HARDWARE_BUFFER가 사용 설정되면 Frame.getHardwareBuffer()를 사용하여 하드웨어 버퍼를 가져옵니다.

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

Vulkan 렌더링 중에 하드웨어 버퍼 사용

Vulkan을 사용하여 AR 애플리케이션을 렌더링하는 방법의 예는 vulkan_handler.cc를 참고하세요.

지원되는 기기

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)부터 필요한 확장 프로그램이 있어야 합니다.