FrameTimingManager는 애플리케이션의 개별 프레임에서 성능에 대한 상세한 타이밍 데이터를 캡처하는 API입니다. 이 데이터를 사용해 해당 프레임을 평가하여 애플리케이션이 성능 목표를 충족하지 못하는 이유를 파악할 수 있습니다.
다음과 같은 경우 FrameTimingManager를 사용하십시오.
프레임 타이밍은 프로파일러의 데이터를 대체하지 못합니다. 애플리케이션을 높은 수준으로 프로파일링한 후에는 FrameTimingManager를 사용하여 특정 세부 정보를 조사하십시오. FrameTimingManager는 데이터를 기록할 때 성능이 저하되므로 애플리케이션의 성능을 정확하게 측정할 수 없습니다.
| 프로퍼티 | 설명 | 지원됨 | 주석 | | :————— | :—— | :——- | :—————————– | | Windows | DirectX 11 | 지원 | | | | DirectX 12 | 지원 | | | | OpenGL | 지원 | | | | Vulkan | 지원 | | | macOS | Metal | 지원 | 타일 기반 디퍼드 렌더링 GPU의 동작으로 인해 GPU 시간 측정값을 총 프레임 시간보다 큰 값으로 보고할 수도 있습니다. | | Linux | OpenGL | 부분적 | GPU 시간 측정을 지원하지 않습니다. | | | Vulkan | 지원 | | | Android | OpenGL ES | 지원 | | | | Vulkan | 지원 | | | iOS | Metal | 지원 | 타일 기반 디퍼드 렌더링 GPU의 동작으로 인해 GPU 시간 측정값을 총 프레임 시간보다 큰 값으로 보고할 수도 있습니다. | | tvOS | Metal | 지원 | 타일 기반 디퍼드 렌더링 GPU의 동작으로 인해 GPU 시간 측정값을 총 프레임 시간보다 큰 값으로 보고할 수도 있습니다. | | WebGL | WebGL | 부분적 | GPU 시간 측정을 지원하지 않습니다. |
FrameTimingManager는 4프레임의 고정된 지연 시간 후에 결과를 제공합니다. 이는 각 프레임이 끝날 때 타이밍 결과를 즉시 사용할 수 없으므로 FrameTimingManager가 프레임에 대한 CPU 및 GPU 데이터를 받을 때까지 기다리기 때문입니다.
GPU에 결과를 반환하는 데 사용할 수 있는 리소스가 없거나 올바르게 반환하지 못할 수 있으므로 지연을 통해 정확한 타이밍 결과를 보장할 수 없습니다.
FrameTimingManager는 다음과 같은 일부 상황에서 FrameTimeComplete 타임스탬프를 생성하는 방식을 변경합니다.