Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 16.10.2007, 19:35 Titel: Framerate berechnen |
|
|
Hi,
Ich würde gern wissen, wie man ab effizientesten die Framerate berechnen kann.
Danke im voraus . _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 16.10.2007, 19:36 Titel: |
|
|
Timer Setzen, jedes neu gezeichnete bild zählen und nach einer sekunde diese zahl ausgeben... wie der name schon sagt (is auch logisch) Frames Per Second. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 16.10.2007, 19:50 Titel: |
|
|
da gäbe es nur ein problem:
Code: | dim as double localtime,endtime,fps
do
localtime = timer
locate 1,1:print fps*60*60*60*60
' wenn man jetzt hier ein sleep 1 reinhaut
' wird fps größer was natürlich nicht stimmt^^
endtime = timer
fps=endtime-localtime
loop until inkey = chr(27) |
_________________ Bis irgendwann...  |
|
Nach oben |
|
 |
stuner
Anmeldungsdatum: 29.06.2006 Beiträge: 45
|
Verfasst am: 16.10.2007, 20:04 Titel: |
|
|
Code: | Dim As Double timer1,frames
Dim As Integer fps,count
Timer1 = Timer 'Startzeit setzen
Do
frames += 1 'Frames zählen
'Programm Start
For count = 1 To 1000
Locate 1,1
Print "Hallo"
Next
'Programm Ende
fps = frames/(Timer - timer1) 'FPS berechnen | FPS = frames/s
Locate 2,1
Print "FPS: ";fps
Loop Until INKEY = CHR$(255)+"k" |
Weicht ein wenig von Jojos Vorschlag ab, sollte aber trotzdem funktionieren.
Code sollte eigentlich selbsterklärend sein... |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 16.10.2007, 21:14 Titel: |
|
|
dies gibt eine weniger sprunghafte Anzeige der Fps Code: | Screen 18,32
Dim As Integer frame
Dim As Single t = Timer
Do
Screenlock
'Cls
Line (0, 0) - (799, 599), t * 2500, bf
Screenunlock
frame += 1
If frame >= 100 Then
Windowtitle "Fps = " & Str(Int(frame / (Timer - t)))
t = Timer
frame = 0
End If
Loop Until Inkey = Chr(27)
End |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 16.10.2007, 21:26 Titel: |
|
|
AndT hat Folgendes geschrieben: | ' wenn man jetzt hier ein sleep 1 reinhaut
' wird fps größer was natürlich nicht stimmt^^ |
warum denn das bitte?! wenn du eine verzögerung einbaust, kannst du nur weniger pro sekunde zeichnen was auch dazu führt, dass du weniger FPS hast... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
stuner
Anmeldungsdatum: 29.06.2006 Beiträge: 45
|
Verfasst am: 16.10.2007, 21:37 Titel: |
|
|
volta hat Folgendes geschrieben: | dies gibt eine weniger sprunghafte Anzeige der Fps |
Ich würde sagen, genau umgekehrt.
In mein Programm hat sich ein "kleiner" Fehler eingeschlichen: Es berechnet nicht die aktuelle FPS-Rate, sondern die durchschnittliche....
Hier der berichtigte Code:
Code: | DIM AS DOUBLE timer1
DIM AS INTEGER fps,count
Do
Timer1 = TIMER 'Startzeit setzen
'Programm Start
FOR count = 1 TO 1000
LOCATE 1,1
PRINT "Hallo"
NEXT
'Programm Ende
fps = 1/(TIMER - timer1) 'FPS berechnen | FPS = frames/s
LOCATE 2,1
PRINT "FPS: ";fps;" "
LOOP UNTIL INKEY = CHR$(255)+"k" |
|
|
Nach oben |
|
 |
d1rty.h4rry

Anmeldungsdatum: 05.10.2006 Beiträge: 116 Wohnort: Cassel
|
Verfasst am: 16.10.2007, 23:02 Titel: |
|
|
hi^^ also ich hab das bei meinen Programmen immer so gemacht
Code: |
Dim as integer Timer1, FPS,FCount 'Definitionen der Variablen
timer1=timer+1 'Start-Timer festlegen
Do 'Hauptschleife
FCount +=1 'Frames zählen
If timer >= timer1 then 'Wenn 1 Sekunde vergangen ist
FPS=Fcount 'werden die Zählvorgänge gespeichert
FCount=0 'der Zähler zurückgesetzt
Timer1=timer+1 'und der Timer neu gesetzt
EndIf
'Dein Programmcode
'#############
? "Hello World"
For X= 1 to 50
Locate INT( RND * 20 ), INT( RND * 30 )
? "LoL"
next
'#############
Locate 1,1
? "FPS :";FPS
Loop
|
Ich weis aber net ob das so effizient ist
Probiers aus
D1RtY H4RrY
Edit: "r" vergessen bei Immer  _________________ "Das Fernsehen ist so etwas wie eine geistige Neutronenbombe, das Gehirn wird weggestrahlt. Nur der Kopf bleibt da!" -Olliver Kalkhofe
-> http://fernsehkritik.tv/tv-magazin/
"Wenn alle Stricke reißen, dann häng ich mich auf", Karl Kreiss 
Zuletzt bearbeitet von d1rty.h4rry am 17.10.2007, 19:48, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 17.10.2007, 16:30 Titel: |
|
|
@jojo: mit fps meinte ich natürlich die variable aber egal  _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 17.10.2007, 16:33 Titel: |
|
|
Dein Code ist auch sowas von sinnlos...
Ich weiß nicht, was du dir genau unter FPS vorstellst, aber eigentlich sollte man das in gleichmäßigen Abständen messen, und was du da misst (und willkürlich *60*60*60*60 nimmst, was sich übriogens schneller als 60^4 schreiben lässt), ist einfach keine Messung, sondern Schwachsinn... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 17.10.2007, 16:35 Titel: |
|
|
Ich wusste ja auch nicht wie man FPS berechnet aber jetzt weisss ichs
// Edit:
Meine Variante:
Code: | dim as DOUBLE start_fpstimer,stop_fpstimer
dim as integer fps,frame
dim as integer Abstand
screen 14
Abstand = 35 ' bestimmt nach wievielen Frames die FPS angezeigt werden soll.
Do
Frame+=1
start_fpstimer=timer
'Programmcode
'SLEEP 1
'Programmcodeende
if frame = Abstand then
stop_fpstimer =timer
fps = 1/(start_fpstimer-timer)
frame = 0
end if
windowtitle "FPS: "+str(-fps)
Loop until inkey=chr(27) |
 _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 17.10.2007, 17:25 Titel: |
|
|
was machst du denn da schon wieder für einen mist?! O_o
Was das Programm berechnet, stimmt mal wieder nicht...
Wieso machst du nicht einfach das, was man dir sagt und was die Definition von FPS angibt: Die Frames pro Sekunde?
Du musst die Frames hochzählen, und nach einer Sekunde (wenn's schneller gehen muss, geht auch ne halbe sekunde, dann muss die FPS-Zahl aber doppelt genommen werden) diese Zahl ausgeben... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
d1rty.h4rry

Anmeldungsdatum: 05.10.2006 Beiträge: 116 Wohnort: Cassel
|
Verfasst am: 17.10.2007, 19:47 Titel: |
|
|
lol Andt das funktioniert ja überhaupt nicht richtig
Ich habe den eindruck du liest deine Antworten überhaupt nicht  _________________ "Das Fernsehen ist so etwas wie eine geistige Neutronenbombe, das Gehirn wird weggestrahlt. Nur der Kopf bleibt da!" -Olliver Kalkhofe
-> http://fernsehkritik.tv/tv-magazin/
"Wenn alle Stricke reißen, dann häng ich mich auf", Karl Kreiss  |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 17.10.2007, 20:46 Titel: |
|
|
Aber sobald dein Code funktioniert, kannst du das Ganze ja mal in 'ne schöne Lib packen.
(SCNR) _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
|