1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-06-25 22:09:35 +00:00
GLideN64/src/Performance.cpp
2017-11-15 15:07:52 +07:00

65 lines
1.2 KiB
C++

#include "VI.h"
#include "Config.h"
#include "Performance.h"
Performance perf;
Performance::Performance()
: m_vi(0)
, m_frames(0)
, m_fps(0)
, m_vis(0)
, m_enabled(false) {
}
void Performance::reset()
{
m_vi = 0;
m_frames = 0;
m_fps = 0;
m_vis = 0;
m_enabled = (config.onScreenDisplay.fps | config.onScreenDisplay.vis | config.onScreenDisplay.percent) != 0;
if (m_enabled)
m_startTime = std::chrono::steady_clock::now();
}
f32 Performance::getFps() const
{
return m_fps;
}
f32 Performance::getVIs() const
{
return m_vis;
}
f32 Performance::getPercent() const
{
const f32 scale = VI.PAL ? 0.5f : 0.6f;
return m_vis / scale;
}
void Performance::increaseVICount()
{
if (!m_enabled)
return;
m_vi++;
const std::chrono::steady_clock::time_point curTime = std::chrono::steady_clock::now();
std::chrono::steady_clock::duration time_span = curTime - m_startTime;
const double elapsed = double(time_span.count()) * std::chrono::steady_clock::period::num / std::chrono::steady_clock::period::den;
if (elapsed < 0.5)
return;
m_vis = (f32)(m_vi / elapsed);
m_fps = (f32)(m_frames / elapsed);
m_vi = 0;
m_frames = 0;
m_startTime = curTime;
}
void Performance::increaseFramesCount()
{
if (!m_enabled)
return;
m_frames++;
}