Implement rolling average (last 5 frames) of FPS
Some checks failed
Run ReCI Build Test / Explore-Gitea-Actions (push) Failing after 1m48s
Some checks failed
Run ReCI Build Test / Explore-Gitea-Actions (push) Failing after 1m48s
This commit is contained in:
@@ -297,6 +297,16 @@ namespace ReWindow
|
||||
|
||||
Vector2 mouse_coords = {0, 0};
|
||||
Vector2 last_mouse_coords = {0, 0};
|
||||
|
||||
// TODO: Implement ringbuffer / circular vector class of some sort.
|
||||
float refresh_rate_prev_1 = 0.f;
|
||||
float refresh_rate_prev_2 = 0.f;
|
||||
float refresh_rate_prev_3 = 0.f;
|
||||
float refresh_rate_prev_4 = 0.f;
|
||||
float refresh_rate_prev_5 = 0.f;
|
||||
|
||||
float avg_refresh_rate = 0.0f;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
@@ -81,17 +81,21 @@ void RWindow::refresh() {
|
||||
auto end_frame = std::chrono::high_resolution_clock::now();
|
||||
|
||||
auto frame_time = end_frame - begin_frame;
|
||||
int frame_time_ms = std::chrono::duration_cast<std::chrono::milliseconds>(frame_time).count();
|
||||
float frame_time_s = frame_time_ms / 1000.f;
|
||||
unsigned long int frame_time_us = std::chrono::duration_cast<std::chrono::microseconds>(frame_time).count();
|
||||
double frame_time_s = frame_time_us / (1000.f * 1000.f);
|
||||
delta_time = frame_time_s;
|
||||
|
||||
refresh_rate = 1.f / delta_time;
|
||||
|
||||
refresh_rate_prev_5 = refresh_rate_prev_4;
|
||||
refresh_rate_prev_4 = refresh_rate_prev_3;
|
||||
refresh_rate_prev_3 = refresh_rate_prev_2;
|
||||
refresh_rate_prev_2 = refresh_rate_prev_1;
|
||||
refresh_rate_prev_1 = refresh_rate;
|
||||
avg_refresh_rate = (refresh_rate_prev_1 + refresh_rate_prev_2 + refresh_rate_prev_3 + refresh_rate_prev_4 + refresh_rate_prev_5) / 5.f;
|
||||
|
||||
|
||||
refresh_count++;
|
||||
|
||||
|
||||
//std::this_thread::sleep_for(1ms);
|
||||
}
|
||||
|
||||
void RWindow::setCursorVisible(bool cursor_enable) {
|
||||
|
Reference in New Issue
Block a user