Seite 1 von 1

[gelöst]Jeder sechste Frame 0 ms?

Verfasst: 12.04.2009, 17:33
von Xethoras
Folgendes Problem: Die meisten Frames meines Programms dauern 15-16 ms. Einzelne Frames brauchen allerdings lediglich 0 ms (laut dem Code, den ich gleich poste). Ich weiß jetzt nicht ob das tatsächlich so ist(und warum das so sein kann) oder ob mein Zeitmesscode nicht richtig funktioniert( und warum nicht)

Code: Alles auswählen

SYSTEMTIME Time1,Time2    //Woanders...
//In der Mainloop:
GetSystemTime(&Time1);
if(Time2.wMilliseconds>Time1.wMilliseconds)
{
	timeoffset=1000-Time2.wMilliseconds+Time1.wMilliseconds;
}
else
	timeoffset=Time1.wMilliseconds-Time2.wMilliseconds;
Time2=Time1;
Jeden Frame sollte es genausoviel Zeichenbefehle geben.

Re: Jeder sechste Frame 0 ms?

Verfasst: 12.04.2009, 17:52
von DarkD
Hi,

Der Timer hat nur eine Auflösung von ca. 16ms. Das heißt so genaue Messungen kannst du damit gar nicht durchführen.
Ich empfehle timeGetTime()
http://msdn.microsoft.com/en-us/library ... S.85).aspx
Hat eine Auflösung von 1ms.
Nicht vergessen winmm.lib einzubinden!

EDIT:
Für maximale Genauigkeit würde ich QueryPerformanceCounter() verwenden (aber ich hatte mit timeGetTime() in den letzten 5 Jahren nie ein Problem)

Re: Jeder sechste Frame 0 ms?

Verfasst: 12.04.2009, 17:58
von Xethoras
Danke! (klappt)

Re: Jeder sechste Frame 0 ms?

Verfasst: 13.04.2009, 12:45
von Aramis
Hi,
Der Timer hat nur eine Auflösung von ca. 16ms
Der Timer hat afaik auf den meisten Systemen eine Auflösung von 10ms. Der Schuldige ist möglicherweise auch der Windows Task Scheduler, der Rechenzeit in einem Takt von etwa 16ms vergibt, oder eben nicht.

Re: Jeder sechste Frame 0 ms?

Verfasst: 14.04.2009, 09:12
von kimmi
Sollte euch das auch noch nicht reichen:

http://msdn.microsoft.com/en-us/library ... S.85).aspx

Gruß Kimmi