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를 사용하도록 세션을 구성합니다.

자바

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()를 사용하여 하드웨어 버퍼를 가져옵니다.

자바

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을 사용하는 기기는 필수 확장 프로그램을 지원하지 않을 수 있지만 빌드하려면 Android 10 (API 수준 29)부터 필수 확장자가 있어야 합니다.