FPS mal anders berechnet...
Übersicht

![]() |
pileBetreff: FPS mal anders berechnet... |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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% |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vertikale Synkronisation. Wenn du nicht weißt was das ist, frag google oder Wikipedia ![]() |
||
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group