Frame Trimer

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

atom-dragon

Betreff: Frame Trimer

BeitragSo, Sep 18, 2005 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Ich würde gerne die FPSauf einen Grenz Wert festlegen!
Ich habe galub irgendwo gelesen das es einen Befehl dafür gibt!
Gibts einen ?
Oder Darf ich mir das ganze in die HauptSchleife zaubern!

mfg-AD

Blitz3D

BeitragSo, Sep 18, 2005 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
öhm kann sein, dass ich dich nicht richtig verstanden habe, aber ich mache
es immer so:BlitzBasic: [AUSKLAPPEN]
Timer = CreateTimer(60) ;(Framegrenze)
Repeat

WaitTimer Timer

Until KeyHit(1)
User posted image
Xware Entertainment und Forum
User posted image
 

atom-dragon

BeitragSo, Sep 18, 2005 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, das meinte ich, habs grade auch noch in nem Tut gefunden!
hmm, hätte ich meine Bibel schohn würde ich da nach schauen Laughing
 

MegaTefyt

BeitragSo, Sep 18, 2005 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt aber schönere Methoden dafür. Smile
 

MegaTefyt

BeitragMo, Sep 19, 2005 9:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, hier eine Methode wie sie z.B. in dem Mario-Beispielgame verwendet wird:

BlitzBasic: [AUSKLAPPEN]

Const IntFPS% = 60; Intere FPS (60)
FPS_Period% = 0
FPS_Time% = 0
FPS_Elapsed% = 0
FPS_Ticks% = 0
FPS_Cnt% = 0
FPS_Tween# = 0

; -DER VOLLSTÄNDIGKEIT HALBER DRIN-
Const KeyEscape% = 1
VSYNC% = 0
; -DER VOLLSTÄNDIGKEIT HALBER DRIN-


; Werte für interne FPS berechnen
FPS_Period = 1000 / IntFPS
FPS_Time = MilliSecs() - FPS_Period

While (Not(KeyHit(KeyEscape)))
Repeat
FPS_Elapsed = MilliSecs() - FPS_Time
Until FPS_Elapsed

FPS_Ticks = FPS_Elapsed / FPS_Period

FPS_Tween = Float(FPS_Elapsed Mod FPS_Period) / Float(FPS_Period)

For FPS_Cnt = 1 To FPS_Ticks

; ERSTELLUNG VON NEUEN OBJEKTEN (z.B. SCHÜSSEN) HIER EINFÜGEN,
; KÖNNTE SONST PROBLEME MIT CAPTUREWORLD GEBEN!

FPS_Time = FPS_Time + FPS_Period
If (FPS_Cnt = FPS_Ticks) Then CaptureWorld

; HIER LÄUFT DER GANZ NORMALE KRAM WIE STEUERUNG, SPIELABLAUF USW.

UpdateWorld

Next

RenderWorld FPS_Tween

Flip VSYNC

Wend



Also kleine Erklärung: du brauchst die sieben Variablen oben, die Konstante stellt die FPS dar, mit denen ein Programm intern arbeitet. Sprich: nach außen hin (bei der Darstellung) hast du das Maximum an FPS, was mit deinem PC möglich ist, intern läuft aber alles bei 60 FPS. Das heißt: das Spiel läuft auf allen PCs gleich schnell, wird aber mit den maximal möglichen FPS dargestellt. Mein aktuelles Projekt zum Beispiel läuft ohne Effekte oder sonstwas bei mir mit 500 FPS, auf dem PC eines Kumpels bei 150 FPS, trotzdem auf beiden PCs gleich schnell.

Die eigentliche Verarbeitung läuft zwischen der FOR..NEXT-Schleife, hier kommt ganz normal dein Programmablauf rein. Wobei du das Erstellen von Objekten vor den CaptureWorld-Befehl stellen solltest, sonst kommt es vor, dass B3D beim ersten CaptureWorld nach Erstellung die falsche Position ermittelt. ^^

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group