mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-15 08:52:00 +00:00
Backport new FPS limiter
# Conflicts: # source/rr/src/game.cpp
This commit is contained in:
parent
f87f38b8f0
commit
fbd3bdb665
1 changed files with 13 additions and 10 deletions
|
@ -2918,24 +2918,27 @@ double g_frameDelay = 0.0;
|
|||
|
||||
int viewFPSLimit(void)
|
||||
{
|
||||
if (!r_maxfps)
|
||||
return 1;
|
||||
|
||||
static double nextPageDelay = g_frameDelay;
|
||||
static uint64_t lastFrameTicks = timerGetTicksU64() - (uint64_t) g_frameDelay;
|
||||
int frameWaiting = 0;
|
||||
uint64_t const delay = llrint(nextPageDelay);
|
||||
|
||||
uint64_t const frameTicks = timerGetTicksU64();
|
||||
uint64_t const frameDelay = (uint64_t)llrint(g_frameDelay);
|
||||
|
||||
static uint64_t lastFrameTicks = frameTicks - frameDelay;
|
||||
uint64_t elapsedTime = frameTicks-lastFrameTicks;
|
||||
|
||||
if (!r_maxfps || elapsedTime >= (uint64_t) nextPageDelay)
|
||||
int frameWaiting = 0;
|
||||
|
||||
if (elapsedTime >= delay)
|
||||
{
|
||||
if (elapsedTime >= (uint64_t) (nextPageDelay + g_frameDelay))
|
||||
{
|
||||
//If we missed a frame, reset any cumulated remainder from rendering frames early
|
||||
//If we missed a frame, reset any cumulated remainder from rendering frames early
|
||||
if (elapsedTime > frameDelay)
|
||||
nextPageDelay = g_frameDelay;
|
||||
}
|
||||
else
|
||||
{
|
||||
nextPageDelay += g_frameDelay - elapsedTime;
|
||||
}
|
||||
nextPageDelay += double(frameDelay-elapsedTime);
|
||||
|
||||
lastFrameTicks = frameTicks;
|
||||
++frameWaiting;
|
||||
|
|
Loading…
Reference in a new issue