FPS begrenzen und berechnen
Übersicht

![]() |
StepTigerBetreff: FPS begrenzen und berechnen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier mal ein code, mit dem man die FPS(Frames per second) berechnen und begrenzen kann.
Der code reserviert lediglich 2 Variablen. FPS_MAX und FPS_LAST hier mal ein beispielcode: Code: [AUSKLAPPEN] ;Global
Graphics3D 800,600,32,2 SetBuffer BackBuffer() ;Konstante Const MAX_FPS=100 ;Testobjekt cone=CreateCone() ;Kamera cam=CreateCamera() PositionEntity cam,0,0,-10 ;Hauptschleife While Not KeyDown(1) ;Cls und FrameLimiter Cls While FPS_LAST>(MilliSecs()-(1000./MAX_FPS)):Delay FPS_LAST-(MilliSecs()-(1000./MAX_FPS))-1:Wend ;Entity bewegen TurnEntity cone,1.+Rnd(.5),1.+Rnd(.5),1.+Rnd(.5) ;Render und Update UpdateWorld RenderWorld ;Fps berechnen und anzeigen fps#=(19*fps#+(1000./(MilliSecs()-FPS_LAST)))/20.:FPS_LAST=MilliSecs() Text 1,1,fps# ;Buffer tauschen Flip 0 Wend hoffe, der code ist nützlich |
||
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 ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieso benutzt du nicht CreatTimer(fps) plus WaitTimer(fps)?
Is kürzer und verwirrt nicht so ![]() |
||
°_° °.° °~° °v° .. -.- |
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weil man bei Waittimer die FPS wirklich begrenzt. Das heißt, man hat dann 30 FPS. Der Sinn ist aber, dass man sich bei 800 FPS immer noch gleich schnell besegt, wie wenn man 30 hätte. | ||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
genau das selbe macht mein code aber auch ^^
nur createtimer ... ist nervig. Und DAS ist auch nur ein 3 Zeilen Code |
||
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 ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Macht das Flip 0 keine Probleme, wenn man es auf nem Röhrenmonitor mit niedriger Bildwiederholrate mit hohem FPS_MAX laufen lässt?
Wenn Du die FPS begrenzt, kannst Du doch gleich auch die CPU-Auslastung senken. |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
um mal einen (jedoch unübersichtlichen) code zu zeigen, der immer die gleiche geschwindigkeit lässt:
Code: [AUSKLAPPEN] ;Global
Graphics3D 800,600,32,2 SetBuffer BackBuffer() ;Konstante Const MAX_FPS=100 ;Testobjekt cone=CreateCone() ;Kamera cam=CreateCamera() PositionEntity cam,0,0,-10 ;Hauptschleife FPS_LAST=MilliSecs() norm#=15 While Not KeyDown(1) ;Cls und FrameLimiter Cls While FPS_LAST>(MilliSecs()-(1000./MAX_FPS)):Delay FPS_LAST-(MilliSecs()-(1000./MAX_FPS))-1:Wend make=-(FPS_LAST-MilliSecs())/norm# For x=1 To make ;Entity bewegen TurnEntity cone,1.+Rnd(.5),1.+Rnd(.5),1.+Rnd(.5) Next ;Render und Update UpdateWorld RenderWorld ;Fps berechnen und anzeigen fps#=(19*fps#+(1000./(MilliSecs()-FPS_LAST)))/20.:FPS_LAST=MilliSecs() Text 1,1,fps# ;Buffer tauschen Flip 0 Wend @Hase: Ich lass das Ding hier gerade auf einem Schulcomputer mit 1.7 Ghz laufen, der eine Ati Rage 128 Pro drinne hat 512 MB SD Ram. Es läuft mit 1%-4% CPU Auslastung! wenn bei dir die CPU Belastung groß ist, dann stammt dein PC aus den Anfängen des letzten Jahrhunderts. Ich hab nicht umsonst delay in den klammern benutzt um es bei maximal 100FPS mit 99.999 laufen zu lassen |
||
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 ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
TheMatrix hat Folgendes geschrieben: Wieso benutzt du nicht CreatTimer(fps) plus WaitTimer(fps)?
Is kürzer und verwirrt nicht so ![]() WaitTimer ist der Rechenaufwendigste Befehl zum Warten(neben Flip 1). Delay ist meilenweit besser! @Steptiger: Warum nicht einfach wie folgt? Code: [AUSKLAPPEN] TurnEntity cone,rnd(1,1.5)*make,rnd(1,1.5)*make,rnd(1,1.5)*make
Eine For-Schleife ist soweit ich weiß langsamer und auf alle Fälle unübersichtlicher.(make als Float(#) zu deklarieren ist nebenbei auch sinnvoll ![]() |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hehe, ja stimmt hab ich übersehn, das delay, sorry ![]() |
||
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich finde den Code echt gut und gebräuchlich, wenn man z.B. ein kleines 3D DesktopSpiel machen will, also eins, das nicht im fullscreen laufen soll ![]() ![]() |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
welchen sinn das mit dem drehen hat?
ganz einfach. In diese for schleife kommt ALLES rein. Also ob Physik, KI, Steuerung. Das sorgt dafür, dass das Programm IMMER gleich schnell läuft. Ob bei 10 fps oder bei 90 |
||
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 ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group