![]() |
![]() |
|
Programiranje Programski jezici, tehnike, alatke... |
![]() |
|
Alatke vezane za temu | Vrste prikaza |
![]() |
#1 |
Član
Član od: 14.4.2010.
Lokacija: Podgorica
Poruke: 332
Zahvalnice: 61
Zahvaljeno 11 puta na 11 poruka
|
![]()
Napravio sam klasu CAnimation i klasu CTimer... U klasi CAnimation postoji varijabla koja sadrzi delay izmedju dvije slike/teksture/sprita .... i nacin na koji sam ja zamislio da se frejmovi mijenjaju jeste timerTick % delay == 0;
Ali tu nailazim na problem.... Koristim SDL_GetTick() funkciju. To funkcionise tako sto postavim pocetni interval a zatim mjerim razliku izmedju pocetnog i trenutnog intervala, tacnije broji milisekunde.... 1 tick = 1 ms. Ne znam zasto ali kad ja pokrenem program sa svim ostalima klasama mene program preskace tickove :/ i zato rijetko kad strefi jednakost timerTick % delay == 0 Ako je postavljeno da se posle svake sekunde promeni frejm za animaciju, onda to dodje timerTick % 1000 == 0; medjutim, mene timer broji na primer 998 ticks pa zatim 1014 ticks... i preskoci ovo 1000 ticks :/ Kada napravim posebno novi projekat, i samo main,cpp fajl stavim, kod samo za timer i ispisivanje tikova, on tu broji jedan po jedan tick i to ce doci do 1000... Sad kapiram da u stvari zbog svih tih iscrtavanja na ekranu, interval izmedju provjere protecenog vremena nije jednak 1ms a treba da bude... :/ Sad postoji li neka fora da ja to izbjegnem, ponavaljam, klasa radi normalno kad je sama .... ali kad su tu initialize funkcije, event funkcije, logic i render funkcije onda je interval izmedju dvije provjere protecenog vremena random :/ Drugi nacin koji sam smislio, ako ne nadjem resenje za ovaj problem jeste da provjeravam sledece if ( timerTick > delay ) ali ovjde bih uvijek morao da modifukem ovaj timerTick, tako da on cim predje trazeni delay da se resetuje.... |
![]() |
![]() |
![]() |
#2 |
Član
Član od: 15.12.2010.
Lokacija: Beograd
Poruke: 120
Zahvalnice: 26
Zahvaljeno 39 puta na 32 poruka
|
![]()
Funkcija koja ti treba je SDL_AddTimer i sa njom zadaješ funkciju koja će biti pozvana nakon određenog broja milisekundi.
Nije mi baš najjasnije zašto na taj način kontrolišeš framerate. Zar ti nije jednostavnije da sistemu prepustiš zamenu bafera sa SDL_Flip ili sa SDL_GL_SwapBuffers (ako koristiš OpenGL).SDL_GetTicks koristi za kontrolu događaja. Recimo kontrolišeš brzinu nekog sprajta tako što mu dodaješ broj proteklih milisekundi od poslednjeg update-a. Više detalja o SDL_AddTimer funkciji i ostalim SDL 1.3 funkcijama imaš ovde http://wiki.libsdl.org/moin.cgi/APIByCategory |
![]() |
![]() |
![]() |
#3 |
Član
Član od: 14.4.2010.
Lokacija: Podgorica
Poruke: 332
Zahvalnice: 61
Zahvaljeno 11 puta na 11 poruka
|
![]()
Ja koristim funkciju SDL_GL_SwapBuffers(). na kraju isrctavanja...
Pogledacu ovo za SDL_AddTimer() Timer mi treba kako bih kontrolisao animacije objekata kod kojih se ovaj delay razlikuje.... Kod nekog je brze, kod nekog sporije.. |
![]() |
![]() |
![]() |
Bookmarks sajtovi |
|
|
![]() |
||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Kako da napravim PTC stranicu (sajt za zaradjivanje)? | Schnak3 | Web razvoj | 8 | 25.1.2011 16:53 |
Timer u C++-u? | Nenad Zivic | Programiranje | 1 | 31.10.2010 14:13 |
Timer za gasenje kompjutera | pmale | Aplikativni softver | 2 | 18.10.2009 13:10 |
Instalacija Fedore 5,pomoc | kvare_cg | Slobodni softver | 7 | 5.6.2007 10:59 |
N2D Engine | EclipsE | Pravljenje igara | 4 | 22.8.2006 23:34 |