Play-/Source/FrameLimiter.h
Jean-Philip Desjardins 130dcb7d51 Use the average frame time to limit frame rate.
Helps a lot with games that don't run at 60fps internally (ex.: FFX).
2021-12-15 17:28:48 -05:00

31 lines
528 B
C++

#pragma once
#include <chrono>
#include "Types.h"
class CFrameLimiter
{
public:
CFrameLimiter();
~CFrameLimiter();
void BeginFrame();
void EndFrame();
void SetFrameRate(uint32);
private:
typedef std::chrono::high_resolution_clock::time_point TimePoint;
enum
{
MAX_FRAMETIMES = 4,
};
std::chrono::microseconds m_frameTimes[MAX_FRAMETIMES];
uint32 m_frameTimeIndex = 0;
std::chrono::microseconds m_minFrameDuration = std::chrono::microseconds(0);
bool m_frameStarted = false;
TimePoint m_lastFrameTime;
};