Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

pętla stałokrokowa gdzie zbieranie danych

Ostatnio zmodyfikowano 2014-11-15 15:30
Autor Wiadomość
dek12
Temat założony przez niniejszego użytkownika
pętla stałokrokowa gdzie zbieranie danych
» 2014-11-15 10:55:26
siema, ogólnie w artykułach o pętli stałokrokowej, np w tym

float dt = 0.0f; //czas od ostatniej aktualizacji
float lastUpdateTime = GetCurrentTime(); //czas ostatniej aktualizacji
//przykladowa funkcja GetCurrentTime() pobiera
//nam od systemu aktualny czas w sekundach
float accumulator = 0.0f;
const float TIME_STEP = 0.03; //krok czasowy, a zarazem czas trwania ramki
//fizyki w sekundach; tutaj 30 milisekund, czyli
//ok. 30 aktualizacji na sekundę
while(true)
{
 dt = GetCurrentTime() - lastUpdateTime; //obliczenie czasu od ostatniej klatki
lastUpdate += dt; //podmiana
accumulator += dt;
GrabInput(); //<-- zbieranie wejscia z klawiatury, myszki, sieci, itp.
while(accumulator > TIME_STEP)
{
UpdateGame(TIME_STEP); //<-- aktualizacja fizyki i logiki gry
accumulator -= TIME_STEP;
}
RenderGame(); //<-- wyswietlenie aktualnego stanu na ekranie
}
zbieranie danych jest przed wejściem do pętli stałokrokowej.
a gdy czytałem książkę o sfml, tą od autorów sfml, to tam zbieranie danych jest środku pętli

while (timeSinceLastUpdate > TimePerFrame)
        {
            timeSinceLastUpdate -= TimePerFrame;
 
            processEvents();
            update(TimePerFrame);
        }

i które podejście według was jest lepsze? co sądzicie?
P-120638
kubawal
» 2014-11-15 11:46:30
Pętla stałokrokowa, która pokazałeś to pętla stałokrokowa, ale tylko dla fizyki. FPS'y (takie od renderowania) będą zmienne.
Ten przykład pokazuje jedynie przypadek, gdy stosujesz bardziej zaawansowaną fizykę, która działa stabilniej dla stałego kroku.
P-120645
Quirinnos
» 2014-11-15 15:30:34
Ale o ile rendering będzie zmienny, to jednak aktualizacja nie. Co względnie daje stabilny rendering ;) Dla mnie większej różnicy nie ma gdzie ten input będzie zbierany, ale niby dobrze, jak jest zbierany przed pętlą.
P-120664
« 1 »
  Strona 1 z 1