mirror of
https://github.com/blawar/GLideN64.git
synced 2024-06-25 22:09:35 +00:00
65 lines
1.2 KiB
C++
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++;
|
|
}
|