Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

FPS Konstant halten

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 25.11.2008, 15:00    Titel: FPS Konstant halten Antworten mit Zitat

Hi!
Ich schreibe gerade ein Spiel. Ich habe in der Do-Loop-Schleife ein Sleep 10
Wie kann ich die FPS Konstant bei ca. 60 halten. Ich muss ja dafür den Wert beim Sleep ändern, aber wie kann ich den so ändern, dass das Spiel bei 60 FPS bleibt und nicht aufeinmal schneller wird?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 25.11.2008, 16:29    Titel: Antworten mit Zitat

Code:
sleep 16, 1


So sinds nen bissel mehr als 60 FPS, das ", 1" sagt sleep das es wirklich 16 ms warten soll und nich bei tastendruck die pause unterbricht.

je nach rechenaufwand zwischen 2 pausen würde ich den sleep weiter rabsetzen.
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 25.11.2008, 17:10    Titel: Antworten mit Zitat

ganz schlecht. GAAAANZ schlecht. Damit hast du aller, allerhöchstens 60fps.
Es gibt an sich 2 Möglichkeiten:

1.
- Starttimer setzen
- Alle relevanten Befehle ausführen
- Warten, bis 17 msec vergangen sind (falls mehr zeit vergangen ist, evtl frameskipping)

ODER (besser):
- Ein Thread erstellen, der Variablen berechnet
- Ein Thread erstellen, der das Bild zeichnet
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.11.2008, 19:08    Titel: Antworten mit Zitat

Hi,
diese fps zählerei ist eigentlich für die Katz.
Wieviel Bildschirmaktualisierungen stattfinden wird durch deine Grafikkarte und Monitor bestimmt.
Hier: SCREENINFO sagt dir das.

Die Verzögerung mit Sleep ist wirklich die schlechteste Möglichkeit, da Sleep unter 100ms sehr ungenau ist.
Stormy hat das mal in einem Tutorial sehr gut beschrieben.
Dort beschreibt er auch wie man trotzdem gleichmäßige Bewegungen hinbekommt.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 25.11.2008, 21:03    Titel: Antworten mit Zitat

Danke, dass Tutorial hat mir sehr weitergeholfen (Ich habe sonst immer ScreenCopy benutzt, Screen(Un)Lock ist aber viel einfacher und schneller)

Ich habe da aber noch eine Frage, und zwar zu Joysticks: Wie kann ich den Joystick vibrieren lassen, wenn es vom Joystick unterstützt wird?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 26.11.2008, 13:07    Titel: Antworten mit Zitat

Möglicherweise hilft dir dieser Artikel im MSDN: "http://msdn.microsoft.com/en-us/library/bb153254(VS.85).aspx"
Das behandelt aber nur wie es mit DirectX 9 geht.
_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 26.11.2008, 14:14    Titel: Antworten mit Zitat

OK!

Kann man eigentlich die CPU Auslastung des eigenen Programmes abfragen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 26.11.2008, 14:54    Titel: Antworten mit Zitat

Für CPU-Auslastungen würd ich einfach den Windows Taskmanager befragen. Unter Linux mit top.


Wie sehr ein Programm das System Auslastet kann man eigentlich pi-mal-daumen selbst bestimmen.

beispiel:

Code:

do
    locate 1,1:print "Hallo Welt!"
loop


Lastet meine CPU (Intel Core2Duo 1.86GHz) zu 10% aus.
Während:

Code:

do
    locate 1,1:print "Hallo Welt!"
    sleep 1
loop


meine CPU zu 0% auslastet.

Soll heissen: Sobald man in eine Schleife geht, die dauerhaft irgendwelche Werte Abfragt oder auf irgendwelche Events/Ereignisse wartet, dann sollte man dem System mit "sleep 1" die möglichkeit geben sich um sich selbst zu kümmern.
Belastet man innerhalb einer Schleife das Grafik/Rechensystem stark wird die cpu natürlich nicht so viel zeit pro Schleifenzyklus haben um sich selbst zu kümmern. Dann steigt die CPU auslastung natürlich wieder...
[/code]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 26.11.2008, 14:56    Titel: Antworten mit Zitat

wozu...? braucht doch nur rechenzeit durchgeknallt
es gibt bestimmt per winapi (google ist dein freund, vbarchiv.net auch), aber das ist ein typisches "schaut mal wie toll ich programmieren kann"-feature, das für den programmierer natürlich ultrageil ist (vor allem wenn dann noch die auslastung mit supertollen 3d-effekten versehen im spiel angezeigt wird!), für den benutzer jedoch völlig belanglos ist.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz