Added Time class

This commit is contained in:
2025-12-25 15:45:07 +08:00
parent 178da9a277
commit ad83a4f70d
2 changed files with 66 additions and 0 deletions

46
src/core/Time.cpp Normal file
View File

@@ -0,0 +1,46 @@
#include "Time.h"
Uint64 Time::s_lastCounter = 0;
Uint64 Time::s_freq = 0;
double Time::s_deltaTime = 0.0;
int Time::s_frames = 0;
double Time::s_fps = 0.0;
double Time::s_fpsTimer = 0.0;
void Time::init()
{
s_freq = SDL_GetPerformanceFrequency();
s_lastCounter = SDL_GetPerformanceCounter();
}
void Time::update()
{
Uint64 now = SDL_GetPerformanceCounter();
s_deltaTime = (double)(now - s_lastCounter) / s_freq;
s_lastCounter = now;
// 防止切后台
if (s_deltaTime > 0.05)
s_deltaTime = 0.05;
// FPS
s_frames++;
s_fpsTimer += s_deltaTime;
if (s_fpsTimer >= 1.0) {
s_fps = s_frames / s_fpsTimer;
s_frames = 0;
s_fpsTimer = 0.0;
}
}
double Time::deltaTime()
{
return s_deltaTime;
}
double Time::fps()
{
return s_fps;
}

20
src/core/Time.h Normal file
View File

@@ -0,0 +1,20 @@
#pragma once
#include <SDL3/SDL.h>
class Time {
public:
static void init();
static void update();
static double deltaTime();
static double fps();
private:
static Uint64 s_lastCounter;
static Uint64 s_freq;
static double s_deltaTime;
static int s_frames;
static double s_fps;
static double s_fpsTimer;
};