FPS??
Verfasst: 27.12.2004 22:08
Hallo,
wie bekomm ich die aktuelle Frame Rate in einem 2D Spiel (mit Sprites und Sprite3Ds) raus?
wie bekomm ich die aktuelle Frame Rate in einem 2D Spiel (mit Sprites und Sprite3Ds) raus?
Code: Alles auswählen
Repeat
start=ElapsedMilliseconds()
Code...
stop=ElapsedMilliseconds()
clearscreen(0,0,0)
fps=start-stop
fps=fps/1000
StartDrawing(ScreenOutput())
DrawText(Str(fps)+"FPS")
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_KEY_ESCaPE)startfps=ElapsedMilliseconds()
Repeat
..Code...
fps2=fps2+1
If ElapsedMilliseconds()-startfps=>1000
fps=fps2
fps2=0
startfps=ElapsedMilliseconds()
EndIf
StartDrawing(ScreenOutput())
DrawText(Str(fps)+" FPS"
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_KEY_ESCaPE)
Code: Alles auswählen
#k = 10
Global fps.f
Procedure FPSCounter(hwnd,nIDEvent,uElapse,lpTimerFunc)
If fps/#k < 1:SetGadgetText(0,"SPF: "+StrF(#k / fps)):Else:SetGadgetText(0,"FPS: "+StrF(fps / #k)): EndIf
While WindowEvent():Wend
EndProcedure
CreateGadgetList(OpenWindow(0,0,0,200,20,#PB_Window_ScreenCentered|#PB_Window_SystemMenu,"FPS"))
StringGadget(0,0,0,200,20,"",#PB_String_ReadOnly)
SetTimer_(WindowID(),1,1000,@FPSCounter())
While WindowEvent():Wend
Repeat
st = timegettime_()
Delay(5); ...
fps - (fps/#k) + (1000/(timegettime_()-st))
Until WindowEvent() = #PB_Event_CloseWindowCode: Alles auswählen
Global fps.l, Timer.l
Procedure FPSCounter()
Zeit = ElapsedMilliseconds()
If Timer < Zeit
SetGadgetText(0,"FPS: "+Str(fps))
Timer = Zeit + 1000
fps = 0
EndIf
fps + 1
EndProcedure
CreateGadgetList(OpenWindow(0,0,0,200,20,#PB_Window_ScreenCentered|#PB_Window_SystemMenu,"FPS"))
StringGadget(0,0,0,200,20,"",#PB_String_ReadOnly)
Repeat
FPSCounter()
Delay(4)
Until WindowEvent() = #PB_Event_CloseWindowCode: Alles auswählen
Procedure.f FpS2()
Static Start_Zeit, Frames, SendFrames.f
Zeit_akt = GetTickCount_()
Frames + 1
ZeitU = Zeit_akt - Start_Zeit
If ZeitU
SendFrames = Frames / ZeitU
EndIf
If Zeit_akt >= Start_Zeit + 10000
Start_Zeit = Zeit_akt
Frames = 0
EndIf
ProcedureReturn SendFrames * 1000
EndProcedure