Autor Beitrag
Stino
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 04.04.03 13:27 
Hi,

gibt es eine Möglichkeit, auch ohne DelphiX die aktuellen FPS's auszulesen?
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Fr 04.04.03 13:29 
*g* Mitzählen wie oft in einer Sekunde die Bilder gezeichnet werden? Google mal ne wenig, du solltest erschlagen werden bei sowas, auf nahezu jeder größeren Seite mit Grafikprogrammierung solltest Du eine Lösung finden.

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
Stino Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 04.04.03 14:37 
Titel: bps
Ich mein' ja nur ohne die Komponente DelphiX.

Hab's schon mit google probiert, finde aber nix in Delphi außer halt mit dieser Komponente, und dafür gab es schon ein Topic!

Trotzdem danke,

Carsten
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Fr 04.04.03 15:52 
Hi,

wie meinst du das "ohne DelphiX"..?

Benutzt du DelphiX, möchtest aber die FPS von hand berechnen oder wie?? *guckt verwirrt*

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: Fr 04.04.03 16:37 
Einfach den Kehrwert der Zeit, die ein Frame benötigt hat, bilden und das sind dann die FPS ;c)

Wenn das Nehmen der Zeit dein Problem ist, solltest du dir GetTickCount für grobe und QueryPerformanceFrequency und QueryPerformanceCounter für feine Auflösung anschauen.

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
Stino Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 04.04.03 17:34 
Nein, ich habe diese Komponente nicht installiert. Möchte sie auch eigentlich nicht installieren, und suche deshalb eine Möglichkeit die FPS ohne DelphiX auslesen zu können, also nur mit Delphi4.
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Fr 04.04.03 17:38 
Hi,

na ja, wie wär's wenn du uns mal verrätst was du machst..? Arbeitest du mit OpenGL, Direct3D..? Irgendne fertige Engine (GLScene etc)??

Ansonsten, im OnIdle-Event der Application.. jedesmal wenn dieses Event aufgerufen wird, hast du 1FPS mehr... also zählst du im OnIdle irgendnen Counter hoch und setzt ihn jede Sekunde 1x auf 0 zurück...

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Stino Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 04.04.03 22:44 
Ich probiers mal so, wollte direct3d arbeiten.

thanx, Carsten
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: Sa 05.04.03 11:54 
Ich habe dir oben bereits die korrekte Methode genannt. Diese funktioniert auf jedem Win32-System. Die OnIdle-Methode würde ich nicht empfehlen, denn wenn OnIdle nicht aufgerufen wird, weil dein Programm zu beschäftigt ist, passiert da auch nichts.

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Sa 05.04.03 14:05 
OregonGhost hat folgendes geschrieben:
denn wenn OnIdle nicht aufgerufen wird, weil dein Programm zu beschäftigt ist, passiert da auch nichts.

Was bedeuten würde das er 0 FPS hat, was wenn das Programm komplett ausgelastet währe stimmen würde, oder? :)

Au'revoir,
Aya~

PS: Man rendert seine Scene normalerweise im OnIdle Event, egal ob OpenGL oder Direct3D

_________________
Aya
I aim for my endless dreams and I know they will come true!
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Sa 05.04.03 21:26 
warum möchtes du denn die FPS selbst berechnen bring doch garnichts, weil DelphiX sowas schon kann :D

_________________
MFG
Michael Springwald, "kann kein englisch...."
Stino Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 06.04.03 09:43 
Das ist für ne Belegarbeit in der Schule. Zur Vorführung muss ich die Software aus der Schule nutzten, und die ist, Dank Dr. Kaiser-Chip das standart Delphi 4. Für private zwecke würde ich Delphix gerne nutzen.

Gibt es eigentlich auch ne Möglichkeit die Frames bei Spielen oder so zu messen? wie z.B. das Programm FRAPS. Oder funktionier das auch mit DelphiX? -> Sorry, bin aber totaler Newbie in der Hinsicht.

Danke, Carsten
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: So 06.04.03 11:39 
Zitat:

PS: Man rendert seine Scene normalerweise im OnIdle Event, egal ob OpenGL oder Direct3D

Nein. Man rendert normalerweise in der Game Loop. Ich habe noch nie ein Direct3D-Programm gesehen, wo jemand auf die Idee gekommen wäre, überhaupt in einem Event zu rendern. Und auch die meisten OpenGL-Programme tun das nicht, weil ein OnIdle-Event nicht plattformübergreifend einheitlich ist. Das heißt natürlich nicht, dass man es nicht tun kann. Üblich ist es aber nicht. Ich verweise hierzu auf den Artikel "Writing the Game Loop" von Robert Dunlop (Microsoft DirectX MVP):
Robert Dunlop hat folgendes geschrieben:

OnIdle : This method is intended for handling of low overhead background tasks that are not time-critical. Obviously this does not describe a game! Some of the pitfalls that prevent OnIdle from being useful to us:

  • OnIdle will only be called when there are no messages available.
  • Once OnIdle has been started, no more messages can be processed until OnIdle returns.
  • Once OnIdle lets go of its time slice, the thread will sleep. OnIdle will not be called again until the thread has received new
    messages and finished processing them



@Stino: Natürlich gibt es die Möglichkeit, sonst würde FRAPS es wohl nicht können ;c) Ich weiß zwar nicht, wie das geht, aber lass FRAPS doch mal durch den Dependency Walker oder TDump laufen, vielleicht bekommst du dann Aufschluss über seine Funktionsweise.

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
Stino Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 06.04.03 15:41 
aber lass FRAPS doch mal durch den Dependency Walker oder TDump laufen, vielleicht bekommst du dann Aufschluss über seine Funktionsweise.[/quote]

Wie gesagt, bin newbie... :oops: Was ist genau der Depency Walker oder TDumb eigentlich? Hab dazu auch nichts in der Delphi-Hilfe gefunden.

Danke, Stino
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: So 06.04.03 16:30 
sowas rendert man doch eigentlich in einem Timer mit interval 1 ;)

_________________
MFG
Michael Springwald, "kann kein englisch...."
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: So 06.04.03 16:36 
TDump gehört zu Delphi. Wenn du dich im Delphi-Bin-Verzeichnis befindest, rufe doch einmal
tdump "d:\Programme\FRAPS\FRAPS.exe" > frapsdump.txt
auf (natürlich musst du den Pfad anpassen), und dann enthält die frapsdump.txt Informationen über die Funktionen, die FRAPS einsetzt.

@mimi: Ich hoffe, du meinst das nicht ernst ;c)

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: So 06.04.03 17:08 
warum denn nicht...
ich habe zwar noch nie was gerendert, aber ich kann mir vorstellen es in einem DXTimer reinzuschreiben(was spricht dagegen) ?

_________________
MFG
Michael Springwald, "kann kein englisch...."
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: So 06.04.03 17:58 
ich denke mal, dass könnte Probleme geben, insofern, dass sich das Prog aufhängt...
wenn ein Rendervorgang länger als 1ms dauert, und dann schon den nächsten anfängt hat das Prog nachkurzer Zeit viele Rendervorgänge laufen, wodurch sich die Zeit für jeden einzelnen wieder verringert->mehr angefangene Rendervorgänge usw.

sieht nicht gesund aus :D ;)
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: So 06.04.03 18:09 
OregonGhost hat folgendes geschrieben:
Zitat:

PS: Man rendert seine Scene normalerweise im OnIdle Event, egal ob OpenGL oder Direct3D

Nein. Man rendert normalerweise in der Game Loop. Ich habe noch nie ein Direct3D-Programm gesehen, wo jemand auf die Idee gekommen wäre, überhaupt in einem Event zu rendern. Und auch die meisten OpenGL-Programme tun das nicht, weil ein OnIdle-Event nicht plattformübergreifend einheitlich ist. Das heißt natürlich nicht, dass man es nicht tun kann. Üblich ist es aber nicht. Ich verweise hierzu auf den Artikel "Writing the Game Loop" von Robert Dunlop (Microsoft DirectX MVP):

Ja ok, dann ruft man halt im OnIdle die GameLoop auf ;)
und, das das ein Event ist, liegt nur daran das es in Delphi die VCL gibt...

Natürlich kann man die GameLoop auch in nem extra Thread machen, aber OnIdle ist wohl das verbreitetere (zummindest bei denen, die keine HighEnd spiele machen).

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: So 06.04.03 18:42 
was sind denn HighEnd Spiele ?
(kenne ich davon welche ?)

_________________
MFG
Michael Springwald, "kann kein englisch...."