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 が結果を返すために使用可能なリソースを持っていなかったり、正しく結果を返せない可能性があるからです。
FrameTimingManger は、以下のような特定の状況下では、FrameTimeComplete タイムスタンプの生成方法を変更します。