hab ne kleine frage... ich programmier grad ne 3d engine.. mir is aufgefallen, wenn ich mich bewege.. das die wände dann an mir vorbei "zuckeln" und sich nicht flüssig bewegen... das liegt wohl an meinem "frame rate begrenzer"(nich wirklich einer, aba sowas in der art).. der sieht in etwa so aus...
wenn ich den "frame rate begrenzer" weg lass.... bewegt sich alles total flüssig... aber ich muss ihn ja einbaun.. das die engine auf jedem comp gleich schnell fuzzt...
nu hab ich ma geschaut was mir GetTickCount() zurückgibt....
sagen wir mal... 1000
so... jez ruf ich GetTickCount() 1 frame später auf... hab ich immer noch 1000
... noch ein frame später..... 1000....
ein paar frames später... ~1016...
warum is das so?
deswegen zuckelt das au so... wenn er also 1000 - 1000 rechnet haben wir 0 raus... und SPEED mit 0 multipliziert ergibt 0... kein wunder das es also zuckelt... wenn er mal 0 und mal 16 raus hat.... bei mir bewegt sich das immer im rahmen... 0, 15, 16, 32... sonst nix...
und nun meine eigentliche frage *g*
wie bekomm ich einen genaueren wert raus? wirklich auf die millisekunde genau...?!
Code:
void Update(DWORD ms)
{
move_speed = SPEED * ms;
}
void main(void)
{
DWORD tick, lasttick = GetTickCount();
while(true)
{
tick = GetTickCount();
Update(lasttick - tick);
DrawFrame(); // bla bla usw...
lasttick = GetTickCount();
}
}
wenn ich den "frame rate begrenzer" weg lass.... bewegt sich alles total flüssig... aber ich muss ihn ja einbaun.. das die engine auf jedem comp gleich schnell fuzzt...
nu hab ich ma geschaut was mir GetTickCount() zurückgibt....
sagen wir mal... 1000
so... jez ruf ich GetTickCount() 1 frame später auf... hab ich immer noch 1000
... noch ein frame später..... 1000....
ein paar frames später... ~1016...
warum is das so?
deswegen zuckelt das au so... wenn er also 1000 - 1000 rechnet haben wir 0 raus... und SPEED mit 0 multipliziert ergibt 0... kein wunder das es also zuckelt... wenn er mal 0 und mal 16 raus hat.... bei mir bewegt sich das immer im rahmen... 0, 15, 16, 32... sonst nix...
und nun meine eigentliche frage *g*
wie bekomm ich einen genaueren wert raus? wirklich auf die millisekunde genau...?!