내부 버퍼링이 필요한 하나 이상의 ARCore 기능이
사용 설정된 것입니다. 현재 여기에는 다음 기능이 포함됩니다.
증강 이미지
증강 얼굴
게임 플레이를 위해 내부 버퍼링이 필요한 특정 ARCore 지원 기기에서
있습니다.
프레임 지연의 사용 설정 여부 확인
지정된 기기 및 AR 세션에 프레임 버퍼링이 있는지 (또한
프레임 지연)이 사용 설정된 경우 adb Logcat 출력을 사용합니다.
# Camera frame buffering is turned off when frame delay is zero.adblogcat|grep'Update Frame Delay'…Inative:session.cc:3141UpdateFrameDelayto0frames.
# Camera frame buffering is turned on when frame count is non-zero.# Note: The size of the buffer can vary over time.adblogcat|grep'Update Frame Delay'…Inative:session.cc:3141UpdateFrameDelayto6frames.……Inative:session.cc:3141UpdateFrameDelayto4frames.……Inative:session.cc:3141UpdateFrameDelayto2frames.
메모리
카메라 프레임이 추가로 버퍼링될 때마다 메모리 사용률이 높아집니다. 예를 들어
1080p 텍스처의 경우 약 6MB의 메모리를 소비하고
해상도 1920 x 1080 x 3바이트 RGB 데이터)
성능에 대한 고려사항
여러 카메라 프레임을 사용해도 카메라 프레임의 가변성이 감소하지 않을 수 있습니다.
다중 스레드 렌더링 파이프라인을 사용하는 것이
모든 상황에서 더 나은 실적을 제공합니다 다음과 같은 요인이
실제 성능:
앱 렌더링 파이프라인
앱 스레딩 모델
기기 CPU 아키텍처
운영체제 예약 시스템
앱이 추가 카메라 프레임을 활용할 수 없는 경우
두 개 이상의 텍스처를 사용할 때의 성능 향상에 도움이 됩니다.
버퍼링 사용 설정
수신되는 카메라 프레임을 버퍼링하는 데 사용할 텍스처를 ARCore에 지시하려면 다음을 사용합니다.
ArSession_setCameraTextureNames(ids): 하나 이상의 텍스처 ID 배열을 제공합니다.
이 함수는 세션 생성 후에만 호출되며 일반적으로
합니다.
ArSession_update()를 호출할 때마다 ARCore는 다음 텍스처를 덮어씁니다.
큐를 라운드 로빈 순서로 반환합니다. 앱이 단일 텍스처 ID만 설정하는 경우
매번 같은 텍스처를 덮어쓰게 됩니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2024-10-14(UTC)"],[[["ARCore's camera frame buffering, enabled by default for some features or manually by the app, enhances rendering by storing multiple camera frames."],["Buffering improves rendering performance and reduces stutter, especially in apps with multithreaded rendering pipelines, but it increases memory usage."],["ARCore dynamically adjusts the buffer size, and the `adb logcat` output reveals whether frame delay (buffering) is enabled and the current buffer size."],["Performance gains from buffering depend on factors like the app's rendering pipeline, threading model, device, and OS, so thorough testing on target devices is crucial."],["Apps can enable buffering and manage textures through specific ARCore functions, ensuring the efficient utilization of camera frames for rendering."]]],["ARCore 1.17.0 supports buffering multiple camera frames in a texture queue to enhance rendering performance, particularly for multithreaded pipelines. Buffering is enabled by providing multiple texture IDs via `ArSession_setCameraTextureNames(ids)`, or when certain ARCore features like Augmented Images or Faces are active, or on some specific ARCore devices. Frame delay, indicating active buffering, can be monitored via `adb logcat`. Each additional buffered frame increases memory use. Apps can use `ArFrame_getCameraTextureName()` to get the texture ID. The frame rate improvement depends on device and app design.\n"]]