mirror of
https://github.com/zhenyan121/SporeBG-Conid.git
synced 2026-04-10 06:14:08 +08:00
Added Time class
This commit is contained in:
46
src/core/Time.cpp
Normal file
46
src/core/Time.cpp
Normal 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
20
src/core/Time.h
Normal 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;
|
||||
};
|
||||
Reference in New Issue
Block a user