I'm trying to achieve steady fixed 60fps in my D3D app and to do that by doing vsync. I've setup loop like this:
while(isRunning)
{
ProcessMessages(window);
renderer->context->ClearRenderTargetView(renderer->renderTarget, color);
renderer->swapChain->Present(1, 0);
end = GetCurrentTick();
double ms = GetElapsedMilliseconds(start, end);
start = end;
}
// Function definitions
inline LONGLONG GetCurrentTick()
{
LARGE_INTEGER count;
QueryPerformanceCounter(&count);
return count.QuadPart;
}
inline double GetElapsedMilliseconds(LONGLONG start, LONGLONG end)
{
return (1000.0 * (double)(end - start)) / (double)freq.QuadPart;
}
I would expect to see "ms" variable to be always the same, but it's actually varying from around 16.1 ms to something over 17. Is there some wrong assumption I'm making or just plain coding error? Thanks for help in advance.