Autor Beitrag
matthiasluebbe
Hält's aus hier
Beiträge: 10

WIN XP
Delphi 6
BeitragVerfasst: Sa 29.03.08 18:39 
Um in meinem Programm die Framerate zu bestimmen benutze ich den QueryPerformanceCounter.
Das ganze sieht in etwa so aus:

...
QueryPerformanceCounter(Start);

//Bewegung berechnen, Figur zeichnen, usw...

QueryPerformanceCounter(Ende);

TempZeit:=(Endzeit-Startzeit)/Frequenz;
...

Laut msdn ist die Einheit für Start- und Endezeit "Counts",
die Einheit für die Frequenz ist "Counts pro Sekunde".

Also müsste TempZeit die Sekunden pro Frame angeben, oder?

Wenn ich nun den Kehrwert von TempZeit nehme (power(TempZeit,-1))
müsste das doch die Anzahl der Frames pro Sekunde sein, oder?

Das ganze kommt mir nämlich etwas spanisch vor da ich einen
FPS-Wert von über 700 habe.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 31.03.08 09:20 
user profile iconmatthiasluebbe hat folgendes geschrieben:
Um in meinem Programm die Framerate zu bestimmen benutze ich den QueryPerformanceCounter.
Das ganze sieht in etwa so aus:

...
QueryPerformanceCounter(Start);

//Bewegung berechnen, Figur zeichnen, usw...

QueryPerformanceCounter(Ende);

TempZeit:=(Endzeit-Startzeit)/Frequenz;
...

Laut msdn ist die Einheit für Start- und Endezeit "Counts",
die Einheit für die Frequenz ist "Counts pro Sekunde".

Also müsste TempZeit die Sekunden pro Frame angeben, oder?

Wenn ich nun den Kehrwert von TempZeit nehme (power(TempZeit,-1))
müsste das doch die Anzahl der Frames pro Sekunde sein, oder?

Das ganze kommt mir nämlich etwas spanisch vor da ich einen
FPS-Wert von über 700 habe.

Moderne Grafikkarten schaffen sogar noch weit mehr ... >5000 FPS hab ich sogar schon selber gesehen ...

Ach ja: Es spart Zeit, 1 / Zeit zu rechnen, anstatt die Power-Funktion zu nutzen ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
matthiasluebbe Threadstarter
Hält's aus hier
Beiträge: 10

WIN XP
Delphi 6
BeitragVerfasst: Mo 31.03.08 10:27 
Hmm, danke, darauf bin ich garnicht gekommen. Aber ansonsten stimmt das soweit?

Und ich benutze ja nicht den Grafikbeschleuniger der Grafikkarte sondern mache
das ganze per BitBlt und ner Paintbox. Angeblich soll das ja relativ langsam sein.

Ab 4 animierten und bewegten Figuren pendelt sich das ganze bei 150 - 160 FPS ein.
Mal sehen ob eine Kollisionsabfrage das ganze noch nach unten drückt. ;)
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 31.03.08 11:42 
Die Frequenz musst Du mit QueryPerformanceFrequency abfragen ...

@Richtig: Wenn's ruckelt und er dir >10 FPS anzeigt, ist's unter Garantie falsch ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
matthiasluebbe Threadstarter
Hält's aus hier
Beiträge: 10

WIN XP
Delphi 6
BeitragVerfasst: Mo 31.03.08 11:57 
Jepp, hab ich ja auch gemacht.

Und es ruckelt eigentlich nicht. Die Animation selber sieht zwar noch nicht
ganz so toll aus wie mit Andorra 2D, aber das bekomm ich schon noch irgend-
wie hin. Ich will ersteinmal versuchen das ganze ohne OpenGL oder DirectX
hinzubekommen. Das hat ja früher auch funktioniert, z.B bei Earthworm Jim
für Win 95 oder bei Pitfall - The Mayan Adventure. Ok, die Jungs konnten in
gegensatz zu mir auch richtig Programmieren. ;)