/
RenderStatistics.h
47 lines (37 loc) · 1.09 KB
/
RenderStatistics.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#pragma once
#include <wx/stopwatch.h>
#include "string/string.h"
namespace render
{
/// Storage class for per-frame render statistics
class RenderStatistics
{
// Timer for measuring render time
wxStopWatch _timer;
// Time for the render front-end only
long _feTime = 0;
public:
/// Return the constructed string for display
std::string getStatString()
{
// Calculate times for render front-end and back-end
long totTime = _timer.Time();
long beTime = totTime - _feTime;
return " | f/e: " + std::to_string(_feTime) + " ms"
+ " | b/e: " + std::to_string(beTime) + " ms"
+ " | tot: " + std::to_string(totTime) + " ms"
+ " | fps: " + (totTime > 0 ? std::to_string(1000 / totTime) : "-");
}
/// Mark the front-end render stage as completed, storing the time internally
void frontEndComplete()
{
_feTime = _timer.Time();
}
/// Reset statistics at the beginning of a frame render
void resetStats()
{
_feTime = 0;
_timer.Start();
}
};
} // namespace render