Page 1 of 1

Pāris jautājumi(Elapsed time& Direction)

Posted: 16 Aug 2011, 21:28
by CodeWolf
Sveiki,gribeju noskaidrot pāris lietas kuras mani jau kadu laicinju nomoka OpenGL vidē
Kas īsti skaitas elapsed time itka pēc tulkojuma saprotu ko tas nozime...
bet nesaprotu kā lai to isti aprēķina(iegūst)..
cik atceros xna bija viena neliela rindiņa..
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;

un otra lieta ir Virziens..Ko nozīmē virziens spēļu industrijā?
tā gadijuma nav ta pati Pozicija.Z?

butu ļoti jauki ja kads varetu nedaudz paskaidrot.. (:

Re: Pāris jautājumi(Elapsed time& Direction)

Posted: 17 Aug 2011, 00:31
by bubu
Jokaini tavi jautājumi. Tiem absolūti un pilnīgi nav nekāda sakara ar OpenGL.

Visticamāk tavā gadījumā elapsed time ir laiks kopš pēdējā updeita vai uzzīmētā kadra, vai funkcijas izsaukuma - atkarīgs par kādu API/freimworku tu runā. Ja nekādu/paša rakstītu, tad vienkārši ņem un rēķini to laiku. Tad elapsed time = t2 - t1, kur t1 un t2 ir patreizējais laiks attiecīgi iepriekšējā un tekošajā laika momentā.

Virziens ir virziens. Vektors. Kad tu ej pa ielu uz priekšu - tu virzies tādā pašā virzienā kādā ir ielas virziens. Pozicija.Z, ja Pozicija ir pozīcija telpā, ir trešā koordināte. Ja lidmašīna ir 10 km virs zemes, un Z virziens ir uz augšu, tad Pozicija.Z = 10km.

Re: Pāris jautājumi(Elapsed time& Direction)

Posted: 18 Aug 2011, 01:19
by CodeWolf
jamm ir nedaudz :D
Ja pareizi sapratu...
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
tad elapsed vienkārši tiek papildināts... sanak ka ElapsedGameTime = kopš palaišanas brīža uzsakts tads ka taimeris..

Code: Select all

float elapsed;
//iekš update funkcijas
elapsed++;
?? :roll:

Re: Pāris jautājumi(Elapsed time& Direction)

Posted: 18 Aug 2011, 23:03
by bubu
Nekā nesapratu.

Ja runājam par Windows, tad tam ir GetTickCount() funkcija, kas atgriež laiku milisekundēs. To savā kodā var izmantot šādi:

Code: Select all

int main()
{
    // ...
    unsigned int time = GetTickCount();
    // ...
    while (running)
    {
        unsigned int now = GetTickCount();
        unsigned int delta = now - time;
        float elapsed = delta / 1000.0f;
        time = now;

        // ... te var lietot elapsed
        input.process();
        physics.simulate(elapsed);
        graphics.render(elapsed);
        window.swapBuffers();
    }
}
Te daudz vairāk un detalizētāk izskaidrots:
http://gafferongames.com/game-physics/f ... -timestep/
http://www.koonsolo.com/news/dewitters-gameloop/