Framelimit trotz Flip(0) unter Linux

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

Boris1993

Betreff: Framelimit trotz Flip(0) unter Linux

BeitragDi, Jan 08, 2013 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Seit gegrüßt! Smile
Ich habe eben angefangen das Grundgerüst für ein neues Programm zu schreiben und da viel mir auf, das obwohl ich es mit Flip 0 und ohne Frametimer ausgeführt hab nur auf 60 fps kam. Ohne Flip wird die Framerate nicht limitiert also funktioniert da wohl irgendwas mit Flip nicht hat jemand eine Idee wie ich das lösen könnte?

Code: [AUSKLAPPEN]
SuperStrict


Const w:Int = 900
Const h:Int = 600

Graphics(w, h, 0, 200)

Repeat
   
   TFps.GetFps()
   Draw()
Until KeyHit(KEY_ESCAPE) Or AppTerminate()

EndGraphics()
End

Function Draw()
   
   DrawText TFps.fps, 15, 15
   
   Flip(0)
   Cls()
EndFunction


Type TFps
   Global frame:Int
   Global time:Long
   Global fps:Int
   
   Function GetFps()
      frame :+ 1
      If time = 0 Then time = MilliSecs()+1000
      If MilliSecs() >= time Then
         fps = frame
         frame = 0
         time = 0
      EndIf
   EndFunction
EndType


Lg Boris
  • Zuletzt bearbeitet von Boris1993 am Di, Jan 15, 2013 22:25, insgesamt einmal bearbeitet

Holzchopf

Meisterpacker

BeitragDi, Jan 08, 2013 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.

MfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

Boris1993

BeitragDi, Jan 08, 2013 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Keiner ne Idee?
 

Boris1993

BeitragSa, Feb 16, 2013 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab eine Lösung gefunden. Ich rufe Flip jetzt nur auf wenn mindestens 16 Millisekunden verstrichen sind so hab ich immer noch eine flüssige 60 FPS Framerate aber das Programm läuft annähernd mit der fps die es normal hätte.

Xeres

Moderator

BeitragSa, Feb 16, 2013 14:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist schade, aber offenbar kann dich dabei keiner Unterstützen - sonst hätte es jemand getan.
Unterlasse pushen in Zukunft, danke.

Edit: Na um so besser.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

ToeB

BeitragSa, Feb 16, 2013 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch würde ich das mit dem "If Frame = 0" Anders lösen, Andernfalls hast du einen Unberechneten Frame dabei und das ganze könnte ungenau werden (Vorallem wenns weit aus weniger als 60Fps sind).

Bei mir geht das ganze,

Guck doch mal in deinen Grafikkarten Einstellungen nach ob du da Standardmäßig VSync angeschaltet hast, daran wirds vermutlich liegen.

Lg,
Tobias
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

Boris1993

BeitragSo, Feb 17, 2013 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den Tipp. Wie berechnest du denn die fps? also wenn ichs genau brauche arbeite ich meist mit delta time.

ToeB

BeitragSo, Feb 17, 2013 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfach das zurücksetzen in die If-Bedingung:

BlitzMax: [AUSKLAPPEN]
Type TFps 
Global frame:Int
Global time:Long
Global fps:Int

Function GetFps()
frame :+ 1
If MilliSecs() >= time Then
fps = frame
frame = 0
time = MilliSecs()+1000
EndIf
EndFunction
EndType


Smile

Lg,
Tobias
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

Boris1993

BeitragSo, Feb 17, 2013 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Es hat funktioniert mit vsync austellen vielen dank nochmal toeb

Xeres

Moderator

BeitragSo, Feb 17, 2013 20:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne Fields braucht es auch keinen Type...

BlitzMax: [AUSKLAPPEN]
Function GetFps:Int()
Global frame:Int
Global time:Long
Global fps:Int
frame :+ 1
If MilliSecs() >= time Then
fps = frame
frame = 0
time = MilliSecs()+1000
EndIf
Return fps
EndFunction
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

PhillipK

BeitragSo, Feb 17, 2013 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
sure thing, xeres.
Ich hab sowas trotzdem auch lieber im type Wink Ich hasse generell funktionen. Und so hab ich brav geordnet (und von blide zusammengefasst), alles, was ich zu TFPS habe. eine sache der eigenen vorlieben - aber evtl auch ganz gut, das du globals innerhalb von funktionen mit erwähnst Smile

DAK

BeitragMo, Feb 18, 2013 9:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Fetze hat das auch so gemacht, einfach Types als Namespaces missbrauchen. Ich hab mal vor Ewigkeiten versucht, sein Star Trade etwas weiter zu coden, das war gar nicht so einfach, bei dem Stil.
Gewinner der 6. und der 68. BlitzCodeCompo
 

Boris1993

BeitragDi, Feb 19, 2013 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx ! Gut zu wissen mit den Globals innerhalb von Funktionen. Man lernt immer etwas neues Very Happy

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group