summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.cpp13
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);