diff options
| -rw-r--r-- | src/main.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/main.cpp b/src/main.cpp index fcddf80..f77dee7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -42,6 +42,7 @@ int main() { double deltaTillNextRender = pkeSettings.deltaPerFrame; GameTimePoint lastLogTimePoint = pkeSettings.steadyClock.now(); int64_t tickCount = 0; + int64_t renderCount = 0; int64_t nsAhead = 0.0; @@ -66,16 +67,18 @@ int main() { lastTimePoint = currentTimePoint; deltaTillNextRender -= deltaThisTick; - bool shouldRender = pkeSettings.graphicsSettings.isFramerateUnlocked || deltaTillNextRender <= 0.0; + bool shouldRender = pkeSettings.graphicsSettings.isFramerateUnlocked + || pkeSettings.graphicsSettings.isWaitingForVsync + || deltaTillNextRender <= 0.0; - if (deltaTillNextRender > 0.0 && deltaTillNextRender - deltaThisTick <= 0.0) { + if (shouldRender == false && (deltaTillNextRender > 0.0 && deltaTillNextRender - (deltaThisTick * 2.0) <= 0.0)) { /* * We are ahead of the render schedule * && the current tick's speed would put us behind schedule next tick. * Simulate the extra time we are ahead and prepare to sleep the difference * before the next tick. */ - nsAhead = std::ceil(deltaTillNextRender * NANO_DENOM_DOUBLE); + nsAhead = std::floor(deltaTillNextRender * NANO_DENOM_DOUBLE); deltaThisTick += deltaTillNextRender; shouldRender = true; } @@ -85,6 +88,7 @@ int main() { if (shouldRender) { Render(); + renderCount += 1; double msBehind = deltaTillNextRender * -1000; int64_t behindCount = 0; while (deltaTillNextRender < pkeSettings.deltaPerFrame) { @@ -99,9 +103,10 @@ int main() { if ((currentTimePoint - lastLogTimePoint).count() > std::chrono::nanoseconds::period::den) { lastLogTimePoint = currentTimePoint; - fprintf(stdout, "TPS: ~%ld - actual:%ld\n", int64_t(1 / deltaThisTick), tickCount); + fprintf(stdout, "TPS: ~%ld - actual:%ld - presents:%ld\n", int64_t(1 / deltaThisTick), tickCount, renderCount); fflush(stdout); tickCount = 0; + renderCount = 0; } pkeSettings.isGameRunning = !glfwWindowShouldClose(window); |
