Wie ermittelt man die FPS-Rate?
Übersicht BlitzBasic FAQ und Tutorials
Ensign JoeBetreff: Wie ermittelt man die FPS-Rate? |
Fr, März 26, 2004 23:01 Antworten mit Zitat |
|
---|---|---|
Der Titel sagt alles | ||
Freeman |
Fr, März 26, 2004 23:21 Antworten mit Zitat |
|
---|---|---|
so :
Code: [AUSKLAPPEN] Function FPS() Frames = Frames + 1 If ZaehlStart + 1001 < MilliSecs() Then FramesJeSekunde = Frames Frames = 0 ZaehlStart = MilliSecs() EndIf Text 100, 10, FramesJeSekunde + " FPS" End Function mfg Freeman |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
RallimenSieger des 30-EUR-Wettbewerbs |
Sa, März 27, 2004 0:26 Antworten mit Zitat |
|
---|---|---|
hi,
so mach ich es... Code: [AUSKLAPPEN] Dim FPS(3)
Code: [AUSKLAPPEN] Text 9,9,"FPS:"+FPS(1):FPS(2)=FPS(2)+1:If MilliSecs()>FPS(3)+999 Then FPS(1)=FPS(2):FPS(2)=0:FPS(3)=MilliSecs()
ist im prinzip genauso brauche allerdings keine Globalen Variablen machen da Arrays immer Global sind |
||
[BB2D | BB3D | BB+]
|
Mr.Keks |
Sa, März 27, 2004 8:47 Antworten mit Zitat |
|
---|---|---|
hmm, ich mache das auch so wie freeman, nur dass ich was von der funktion zurückliefern lasse. habe die immer in meiner util.bb, die ich in dutzenden meiner projekte benutze. ist in sofern praktisch, dass man im hauptprogramm eigentlich nur zu schreiben hat:
Code: [AUSKLAPPEN] Text 0,0,"fps: "+util_fps()
find ich toll so . man muss nur aufpassen, nicht zweimal diesen text einzufügen, da das zu einer fpsverdopplung führt, wie es mir kürzlich passiert ist Code: [AUSKLAPPEN] Global fps_frames,fps_ms=MilliSecs(),fps_anzeige
Function Util_Fps() fps_frames = fps_frames+1 If MilliSecs()-fps_ms >= 1000 Then fps_anzeige = fps_frames fps_frames = 0 fps_ms = MilliSecs() EndIf Return fps_anzeige End Function habe gerade noch einen fpszähler aus einem älteren projekt von mir gefunden... nicht ganz so schön geschrieben, aber auch effektiv. Code: [AUSKLAPPEN] If fpsc >= 10 Then fps=1000.00/Float#(MilliSecs()-t)*10 : fpsc = 0 : t=MilliSecs()
fpsc = fpsc+1 |
||
MrKeks.net |
Freeman |
Sa, März 27, 2004 14:24 Antworten mit Zitat |
|
---|---|---|
@ Ensign Joe
doch das passt mit der Function . Du musst natürlich die Funktion noch aufrufen und nicht das cls + flip vergessen beispiel : Code: [AUSKLAPPEN] Function FPS() Frames = Frames + 1 If ZaehlStart + 1001 < MilliSecs() Then FramesJeSekunde = Frames Frames = 0 ZaehlStart = MilliSecs() EndIf Text 100, 10, FramesJeSekunde + " FPS" End Function graphics 800,600 setbuffer backbuffer() repeat cls fps() flip until keydown(1) probier mal , das muss doch klappen |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
RallimenSieger des 30-EUR-Wettbewerbs |
Sa, März 27, 2004 14:56 Antworten mit Zitat |
|
---|---|---|
@Freeman:
deine variablen sind nicht Global, deswegen funst das auch nicht! Code: [AUSKLAPPEN] Global ZaehlStart,FramesJeSekunde ,Frames
setz das oben rein und es geht! |
||
[BB2D | BB3D | BB+]
|
Travis |
Sa, März 27, 2004 17:04 Antworten mit Zitat |
|
---|---|---|
Ich finde die Version von Inarie am besten nachvollziehbar. Ich habe das Problem mit der Verdopplung der FPS-Werte mal gelöst. Die Funktion wird jetzt mit einem Parameter aufgerufen. Dieser bestimmt, ob der Counter die Framerate zählen soll oder ob er sie nur anzeigen soll.
Code: [AUSKLAPPEN] Global FPSSEC = MilliSecs(), FPS, FRAMES SetBuffer BackBuffer() Repeat Cls Text 0,0, FPS(1) ; Anzeigen und zählen Text 0,10, FPS(0) ; Nur anzeigen Flip Until KeyHit(1) End ; --- Frames per Second --- Function FPS(MODE) If MODE = 1 Then FRAMES = FRAMES + 1 If MilliSecs() - FPSSEC => 1000 Then FPS = FRAMES FRAMES = 0 FPSSEC = MilliSecs() EndIf EndIf Return FPS End Function ; --- Frames per Second --- |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Triton |
Sa, März 27, 2004 17:55 Antworten mit Zitat |
|
---|---|---|
Ich machs immer ungefähr so:
Code: [AUSKLAPPEN] loops=0 time1 = MilliSecs() While Not KeyDown(1) loops = loops+1 Color 255,255,255 Text 610, 50, fps If MilliSecs() - time1 > 1000 Then fps = loops:loops = 0:time1 = MilliSecs() ... Wend bzw lieber so, wenn die Hauptschleife übersichtlicher bleiben soll: [code] Graphics 640,480,16,2 Global fpsrate,loops, fpstime While Not KeyDown(1) Color 255,255,255 Text 10, 10, fps() Plot MouseX(),MouseY() Flip Cls Wend ;--- Function fps() loops = loops+1 If MilliSecs() - fpstime > 1000 Then fpsrate = loops loops = 0 fpstime = MilliSecs() End If Return fpsrate End Function [/code} |
||
- Zuletzt bearbeitet von Triton am Mi, Aug 23, 2006 19:02, insgesamt einmal bearbeitet
Gast |
Mo, Mai 24, 2004 12:30 Antworten mit Zitat |
|
---|---|---|
Ich mach das immer so:
Code: [AUSKLAPPEN] ;Diese Funktion gibt die FPS aus Global lastTime Function fps(posX=0,posY=0) Color 255,255,255 ;Farbe weiß If lastTime < MilliSecs() currentFrames = 1000/(MilliSecs()-lastTime) End If Text posX,posY,"FPS: "+currentFrames lastTime = MilliSecs() End Function die funktion gibt die fps oben links aus wenn keine parameter übergeben werden. |
||
PhOENiX |
Mo, Aug 16, 2004 17:51 Antworten mit Zitat |
|
---|---|---|
Und wo kommt das nachher im Gnazen programm hin ??
MFG PhOENiX |
||
Übersicht BlitzBasic FAQ und Tutorials
Powered by phpBB © 2001 - 2006, phpBB Group