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

Pętla stałokrokowa - po co ciągłe wywoływanie funkcji rysującej?

Ostatnio zmodyfikowano 2015-07-13 14:14
Autor Wiadomość
Patrycjerz
Temat założony przez niniejszego użytkownika
Pętla stałokrokowa - po co ciągłe wywoływanie funkcji rysującej?
» 2015-07-11 18:21:33
Witajcie,
czytając jeden z artykułów o tworzeniu gier spotkałem się z prezentacją pętli stałokrokowej. Znałem ją wcześniej, ale chciałem doczytać jakie ma wady i zalety, lecz jedna sprawa mnie zaciekawiła. Po co ciągle rysować klatkę, nawet wtedy, kiedy stan gry nie zostaje zaktualizowany? Oto przykładowy kod:

C/C++
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
}

(Źródło: http://temporal.pr0.pl/devblog​/download/arts/fixed_step​/fixed_step.pdf)

Oczywiście miło by mi było, gdybyście zapisali także własne osobiste spostrzeżenia co do tego rodzaju pętli.

Za odpowiedzi z góry dziękuję.
P-134574
bingo009
» 2015-07-13 14:14:41
Jak masz animowaną mapę czy postacie, wtedy powinno być to rysowane niezależnie od obliczeń fizyki. Wogóle rysowanie/renderowanie powinno się wykonywać jak najszybciej i niezależnie od obliczeń fizyki. Ponadto ta pętla stałokrokowa ma za zadanie obliczanie fizyki, które powinno być w miarę szybkie, jak dodasz tam renderowanie, to każdy obieg tej pętli będzie trwał znacznie dłużej, niż powinien.
P-134622
« 1 »
  Strona 1 z 1