FPS ermitteln!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Evolver01

Betreff: FPS ermitteln!

BeitragSo, März 18, 2007 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,
ich möchte wissen wie man in b3d die "Frames Per Second" ermitteln kann!

in der suchfunktion habe ich nix gefunden!

MfG Evolver
Grafiker von Space Threat...

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, März 18, 2007 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Möglichkeit zB:

Code: [AUSKLAPPEN]
 ms=MilliSecs():Text 0,0,fps
 If ms>mt mt=ms+502:fps=frame:frame=0 Else frame=frame+2
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Eingeproggt

BeitragSo, März 18, 2007 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
so ungefähr

Code: [AUSKLAPPEN]

Repeat
  ms=MilliSecs()
  ;Stuff
  fps=1000/(Millisecs()-ms)
Until KeyHit(1)


EDIT: Da hast spgar 2 Möglichkeiten, wobei ich die von hectic nicht durchschau Embarassed
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Evolver01

BeitragSo, März 18, 2007 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Wunderbar! danke für die schnelle antwort, ich hoffe dies wird einem anderen irgendwann auch mal helfen!
Grafiker von Space Threat...

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, März 18, 2007 14:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt unterschiedliche arten die FPS zu ermitteln, und jede hat ihre Vor- und Nachteile. Hier mal ein paar aufgezählt:


1. Methode von Eingeproggt (oben angegeben):
Vorteil: Die schnellste Angabe von Werten
Nachteil: Wert kann (wegen ständigem wechsel) kaum abgelesen werden
Code: [AUSKLAPPEN]
  fps=1000.0/(MilliSecs()-ms)
  Text 0,100,fps
  ms=MilliSecs()


2. Eine Methode von StepTiger:
Vorteil: Die genauste Angabe von Werten
Nachteil: Sehr lange 'Wartezeit' bis richtige Werte angegeben werden (sliding)
Code: [AUSKLAPPEN]
f#=0
time=MilliSecs()
;Schleife Beginn
  f=f+1
  Text 1,1,f#/(MilliSecs()-time)*1000
;Schleife Ende


3. Meine oben genante Methode:
Vorteil: Schnelle Angabe von Werten
Nachteil: Wert wird bei hohen FPS-Werten ungenau
Code: [AUSKLAPPEN]
 ms=MilliSecs():Text 0,0,fps
 If ms>mt mt=ms+502:fps=frame:frame=0 Else frame=frame+2


1. Finde ich zu schnell wechselnd. Wenn zB der Wert immer wieder wechselt, so kann man kein vernünftigen Wert dabei auslesen. Je schneller die FPS umso schlimmer wird es

2. Ist für messzwecke (wo die FPS eines Programmes von Anfang an relativ konstant bleibt) gut geeignet, dann kann man genaue Werte ermitteln. Hat man aber zB ein Spiel wo die FPS sich verändern können, so dauert es vielzu lange bis sich die Angabe eingependelt hat. Bei wenig FPS kann dies schon paar Minuten dauern.

3. Hat sich für mich 'eingebürgert' und liefert mir das 'von jedem etwas' was man für Spiele so braucht. Man kann eine absolute Genauigkeit erreichen, wenn man zB vor der Programmschleife ms zwischenspeichert und dann weitere kleine Veränderungen in den Zeilen vornimmt. Mir war es aber wichtig es nur an einer Codestelle zu haben um schnelles Copy&Paste durchführen zu können.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

tft

BeitragSo, März 18, 2007 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo....

ich selber beforzuge folgende Variante.

FPS_C=FPS_C+1
if ms<Millisecs()
ms=Millisecs()+1000
FPS=FPS_C
FPS_C=0
endif

Text 10,10,FPS

Diese methode hat den Forteil das sie auch bei mer als 999 FPS funktioniert und die Anzeige nur jede Secunde wechselt. Gut mer als 300 FPS anzuzeigen wird ausser bei einer leerschleife kaum möglich sein. Aber wenn ich anfange etwas zu coden, binn ich immer über 1000 FPS.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Tornado11

BeitragSo, März 18, 2007 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Über 1000 FPs ,wusste gar nicht das es so hohe Raten schon gibt. Crying or Very sad

Lunatix

BeitragSo, März 18, 2007 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
haha....

Ja, wenn du anfängst. Sobald du dann aufgaben ausführst, gehn sie runter.
btw:

Code: [AUSKLAPPEN]


Graphics3D 640,480,32,2
SetBuffer BackBuffer ()
Global FrameCount#,FPS#,FpsLast%

Repeat
  UpDateFps(100)
  Text 0,0,FPS
  Flip
  Cls
Until KeyHit(1)
End

Function UpDateFps(wait%=0)
 FrameCount=FrameCount+1
 tm=MilliSecs()
 If ( tm > FpsLast+wait)
    Fps= ((FrameCount)/Float(tm-FpsLast))*1000.0
      FpsLast=tm      
    FrameCount=0
  EndIf
End Function

bäh. diese syntax.... *mein blitzmax knuddel*
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Dreamora

BeitragSo, März 18, 2007 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du Rendern und Spiellogik trennst wirst du eigentlich ziemlich häufig auf mehr FPS kommen.

Meine Spiellogik läuft normalerweise auf 300'000 Loops pro Sekunde bis ich anfange sie zuzubomben.
Bei sauberen 60 FPS fix. (mehr machen auf 60hz bildschirm 0 sinn)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

StepTiger

BeitragSo, März 18, 2007 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal abgesehen davon, tft, kann man auch einfach floats benutzen.

Es gibt hier aber schon etwa 1000 dieser Programme im Codearchiv. Forensuche hilft da gern Smile
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group