Implement rolling average (last 5 frames) of FPS
Some checks failed
Run ReCI Build Test / Explore-Gitea-Actions (push) Failing after 1m48s

This commit is contained in:
2024-10-04 14:19:10 -04:00
parent 6bd9ec0eb8
commit 35b09cb026
2 changed files with 19 additions and 5 deletions

View File

@@ -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:

View File

@@ -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) {