ArTextureUpdateMode
가 AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER
로 설정된 경우 ArSession_update()
가 호출되면 ARCore에서 Android 하드웨어 버퍼를 제공합니다. 이 하드웨어 버퍼는 Vulkan VkImage
에 바인딩될 수 있습니다.
샘플 애플리케이션 보기
Vulkan 렌더링 지원은 hello_ar_vulkan_c 샘플 앱에서 보여줍니다.
하드웨어 버퍼 출력 모드 사용 설정
구성된 ArTextureUpdateMode
는 ARCore에서 카메라 텍스처를 업데이트하는 방법을 결정합니다. AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER
로 설정되면 ARCore에서 AHardwareBuffer
를 통해 카메라 이미지를 제공합니다.
AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER
를 사용하도록 세션을 구성합니다.
ArConfig* ar_config = NULL; ArConfig_create(ar_session, &ar_config); ArConfig_setTextureUpdateMode(ar_session, ar_config, AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER); CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS); ArConfig_destroy(ar_config);
하드웨어 버퍼 가져오기
AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER
가 사용 설정되면 ArFrame_getHardwareBuffer()
를 사용하여 하드웨어 버퍼를 가져옵니다.
void* native_hardware_buffer = NULL; ArFrame_getHardwareBuffer(ar_session, ar_frame, &native_hardware_buffer); if ((int64_t)native_hardware_buffer == 0) { // The hardware buffer isn't ready yet. return; }
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)부터 필요한 확장 프로그램이 있어야 합니다.