Hello, i've been trying to do a simple framerate test that outputs the current framerate:
#include <iostream>
#include <Windows.h>
LARGE_INTEGER currentTime;
LARGE_INTEGER lastTime;
LARGE_INTEGER Frequency;
bool entered;
float finalTime;
float acc;
void calcDeltaTime(float& c);
int main()
{
SetThreadAffinityMask(GetCurrentThread(), 0x01);
float deltaTime;
entered = false;
deltaTime = 0.0f;
acc = 0;
QueryPerformanceFrequency(&Frequency);
while(true)
{
QueryPerformanceCounter(¤tTime);
finalTime = deltaTime;
while(deltaTime >= 1000.0f / 60.0f)
{
if(entered == false)
{
acc += 1;
std::cout << "Frame:" << acc << "framerate:" << 1.0f / (finalTime / 1000.0f) << std::endl;
entered = true;
}
deltaTime -= 1000.0f / 60.0f;
}
entered = false;
Sleep(1);
QueryPerformanceCounter(&lastTime);
calcDeltaTime(deltaTime);
}
return 0;
}
void calcDeltaTime(float& c)
{
c += ((float)lastTime.QuadPart - (float)currentTime.QuadPart) / (float)Frequency.QuadPart * 1000.0f;
}
The loop is locked to 60 fps or lower. However, I get framerates like 22 or 19, instead of exactly 60 fps like I should get. Is it because cout is too slow, or am I doing something wrong here?