FPS mal anders berechnet...

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

pile

Betreff: FPS mal anders berechnet...

BeitragSo, Okt 01, 2006 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich wollte es mir einfach machen um die FPS zu berechnen (Mit FPS sind in dem Fall nicht wirklich die Bilder Pro Sekunde gemeint sondern eher n Indikator für die Rechnerleistung oder die Auslastung durch das Programm [Wird viel berechnet oder gezeichnet sinkt der FPS-Wert]
Wie gesagt, ich wollte es mir einfach machen. Am Schleifenanfang messe ich die Zeit: Zeit1=Millisecs() (Wozu eigentlich die Klammern nach dem Befehl?)
Und am Ende auch wieder: Zeit2=Millisecs()
So jetzt habe ich zwei Werte: Zeit1 hat zb 100000 ms und Zeit2 zb 100500.
Jetzt würde sich aus der Differenz, nämlich 500 ms die Schnelligkeit ergeben. So weit so gut. Allerdings, möchte ich das ganze ja als FPS-Wert angeben, also je höher desto schneller. Wie könnte ich das anstellen, ohne für jeden Differenz-Wert ne neue Berechnung alla
Wenn Differenz >1000 dann FPS=0
Wenn Differenz <=1000 Und Differenz>500 Dann FPS=1
Wenn Differenz <=500 Und Differenz>333 Dann FPS=2
Wenn Differenz <=333 Und Differenz>250 Dann FPS=3
.....
zu schreiben, denn das wäre Tatsächlich zu viel Arbeit.
Weiß einer wie ich das verwirklichen könnte?

Ach ja, ich habe bewußt auf Creattimer und Waittimer verzichtet, da ich damit erlich gesagt nichts anfangen kann. Ich habs mir schon so oft in der Onlinehilfe angesehen aber nie kapiert. (geht mir übrigens bei den meisten Codebeispielen von anderen so, hab irgendwie nich das logische Denken dafür anderen Quellcode zu verstehen sobald der mehr als 10 Zeilen lang is, darum komm ich meistens nur mit meinem eigenen Zeug klar)
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

Hummelpups

BeitragSo, Okt 01, 2006 23:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Darf ich dir die Forumssuche ans Herz legen?
FPS wird schon genügen und du bekommst sicherlich 10 Beschreibungen
wie es funktioniert.

Um die FPS zu berechnen, zählt man die Schleifendurchgänge und nach
einer Sekunde ist der FPS Wert gleich der Schleifendurchgänge. Ganz leicht.

pile hat Folgendes geschrieben:
Ach ja, ich habe bewußt auf Creattimer und Waittimer verzichtet, da ich damit erlich gesagt nichts anfangen kann. Ich habs mir schon so oft in der Onlinehilfe angesehen aber nie kapiert. (geht mir übrigens bei den meisten Codebeispielen von anderen so, hab irgendwie nich das logische Denken dafür anderen Quellcode zu verstehen sobald der mehr als 10 Zeilen lang is, darum komm ich meistens nur mit meinem eigenen Zeug klar)

Hm, damit hast du gaaanz schlechte Karten beim Programmieren. Logisch
denken sollte man schon können Wink

Achja, und auf deine Art. Wenn du die Zeit in Millisekunden hast,
kannst du auch einfach FPS=1000/differenz
machen. Aber so wechseln die FPS zig mal pro schleife und es ist
irgendwie ercheatet weil es keinen durchschnitt von einer Sekunde
errechnet sondern einfach den Rest der Sekunde interpoliert.

IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

pile

BeitragMo, Okt 02, 2006 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, es hat so erstmal funktioniert. Allerdings habe ich nicht beachtet das so ein Schleifendurchgang ziemlich schnell ist und die Werte ständig am wechseln sind, also es ist so schnell das man gar nix erkennt. Darum werde ich es doch so machen wie du am Anfang beschrieben hast, so sollte sich ja der FPS-Wert nur einmal in der Sekunde ändern oder?
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

Hummelpups

BeitragMo, Okt 02, 2006 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit einem zusätzlichen IF würde sich auch das nur einmal die Sekunde ändern,
ist aber schwachsinn, zähl einfach, wie oft geflipt wird und gib das immer
nach einer Sekunde als FPS Wert an.

IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

pile

BeitragMo, Okt 02, 2006 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, ich habe jetzt das hier:

Code: [AUSKLAPPEN]
Startzeit=MilliSecs()
Repeat
Zeit=MilliSecs()-Startzeit
C=C+1
If Zeit>=1000 Then Startzeit=MilliSecs():FPS=C:C=0
Cls
Text 10,20,FPS
Until KeyDown (1)=1


Zur Erklärung: "Startzeit" habe ich genommen um Millisecs() zwischen zu speichern. "Zeit" ist die Differenz zwischen "Startzeit" und der aktuellen Millisecs(). C ist der Counter der zählt wie oft geflipt wurde. Und wenn eine Zeit von mehr als 1000 Millisekunden überschritten ist wird der Counter-Wert als FPS-Wert gespeichert und angezeigt, außerdem wird eine neue Startzeit gemessen und der Counter zurückgestellt.
Frage: Kann man das noch verbessern/optimieren und wie?
Achja ist es normal das der FPS-Wert ohne zusätzlichen Code, also so wie hier bei über 10000 liegt oder habe ich doch was falsch gemacht?
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

Hummelpups

BeitragMo, Okt 02, 2006 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
fast. Du hast das FLIP vergessen, darum ist es so schnell, die Berechnung
ist okay. Optimieren oder anders machen kann man es so:

Code: [AUSKLAPPEN]
Repeat
   Cls
   
      If MilliSecs()>=zeit+1000 Then
         zeit=MilliSecs()
         fps=flips
         flips=0
      End If
      
      
      Text 10,10,fps
   
   Flip : flips=flips+1
Until KeyHit(1)


IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

pile

BeitragMo, Okt 02, 2006 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, ist doch etwas kürzer, aber ich freu mich das ich es FAST genauso gut hinbekommen habe ^_^

Eins verstehe ich aber nicht. Warum ist der FPS-Wert mit dem Flip-Befehl um ein Vielfaches kleiner als ohne? (Bei mir mit Flip bei etwa 75 und ohne bei etwa 11000)
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

aMul

Sieger des Minimalist Compo 01/13

BeitragMo, Okt 02, 2006 23:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Vertikale Synkronisation. Wenn du nicht weißt was das ist, frag google oder Wikipedia Wink
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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group