v0.3.0 API Reference
FrameStatsHistory.h
1//
2// FrameStatsHistory.h
3// avara3d
4//
5// Created by Morgan Davis on 12/6/25.
6// Copyright © 2026 Morgan K Davis. All rights reserved.
7//
8
9#ifndef AVARA3D_PROFILE_FRAMESTATSHISTORY_H
10#define AVARA3D_PROFILE_FRAMESTATSHISTORY_H
11
12#include <chrono>
13#include <deque>
14#include <tuple>
15
16#include "a3d/profile/FrameStats.h"
17
18namespace a3d {
19
20class FrameStatsHistory {
21
22public:
23 // [Internal Types]
24
25 using SteadyTimePoint = std::chrono::time_point<std::chrono::steady_clock>;
26
27 // [Internal Static Member Functions]
28
29 static void GetAverages(const FrameStatsHistory& history,
30 std::chrono::nanoseconds& frame,
31 std::chrono::nanoseconds& renderPrep,
32 std::chrono::nanoseconds& renderSubmit,
33 std::chrono::nanoseconds& renderGpu,
34 std::chrono::nanoseconds& physics,
35 std::chrono::nanoseconds& appCpu,
36 std::chrono::milliseconds averagingDuration);
37
38 // [Internal Lifecycle Functions]
39
40 explicit FrameStatsHistory(std::chrono::milliseconds historyTime);
41
42 // [Internal Member Functions]
43
44 void add(FrameStats stats);
45
46 const std::deque<std::tuple<SteadyTimePoint, FrameStats>>& samples() const;
47
48private:
49 // [Private Member Variables]
50
51 std::chrono::milliseconds _historyTime;
52 std::deque<std::tuple<SteadyTimePoint, FrameStats>> _samples;
53};
54
55} // namespace a3d
56
57#endif // AVARA3D_PROFILE_FRAMESTATSHISTORY_H