16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-19 14:39:18 +02:00

reverted terrain rendering, range adjustment moved to renderer, now based on frame drawing time instead of entire scene refresh rate.

This commit is contained in:
tmj-fstate
2017-03-12 16:46:20 +01:00
parent 54a9642221
commit 0cd3109587
7 changed files with 95 additions and 71 deletions

View File

@@ -55,7 +55,6 @@ TWorld::TWorld()
OutText1 = ""; // teksty wyświetlane na ekranie
OutText2 = "";
OutText3 = "";
iCheckFPS = 0; // kiedy znów sprawdzić FPS, żeby wyłączać optymalizacji od razu do zera
pDynamicNearest = NULL;
fTimeBuffer = 0.0; // bufor czasu aktualizacji dla stałego kroku fizyki
fMaxDt = 0.01; //[s] początkowy krok czasowy fizyki
@@ -1000,43 +999,6 @@ bool TWorld::Update()
WriteLog("Scenery moved");
};
#endif
if (iCheckFPS)
--iCheckFPS;
else
{ // jak doszło do zera, to sprawdzamy wydajność
auto const framerate = Timer::GetFPS();
// NOTE: until we have quadtree in place we have to rely on the legacy rendering
// once this is resolved we should be able to simply adjust draw range
if( framerate > 65.0 ) {
Global::iSegmentsRendered = std::min( 400, Global::iSegmentsRendered + 5 );
Global::fDistanceFactor = std::min( 3.0f, Global::fDistanceFactor + 0.025f );
}
else if( framerate > 45.0 ) {
Global::iSegmentsRendered = std::min( 225, Global::iSegmentsRendered + 5 );
}
else if ( framerate < Global::fFpsMin) {
// 9=minimalny promień to 600m
Global::iSegmentsRendered = std::max( 9, Global::iSegmentsRendered - 3 );
Global::fDistanceFactor = std::max( Global::ScreenHeight / 768.0f * 0.75f, Global::fDistanceFactor - 0.1f );
}
if ((framerate < 15.0) && (Global::iSlowMotion < 7))
{
Global::iSlowMotion = (Global::iSlowMotion << 1) + 1; // zapalenie kolejnego bitu
if (Global::iSlowMotionMask & 1)
if (Global::iMultisampling) // a multisampling jest włączony
glDisable(GL_MULTISAMPLE); // wyłączenie multisamplingu powinno poprawić FPS
}
else if ((framerate > 20.0) && Global::iSlowMotion)
{ // FPS się zwiększył, można włączyć bajery
Global::iSlowMotion = (Global::iSlowMotion >> 1); // zgaszenie bitu
if (Global::iSlowMotion == 0) // jeśli jest pełna prędkość
if (Global::iMultisampling) // a multisampling jest włączony
glEnable(GL_MULTISAMPLE);
}
iCheckFPS = 0.25 * Timer::GetFPS(); // tak za 0.25 sekundy sprawdzić ponownie (jeszcze przycina?)
}
Timer::UpdateTimers(Global::iPause != 0);
if( (Global::iPause == false)
|| (m_init == false) )