ich habe da mal ne Frage und zwar möchte ich einen Bildschirmschoner mit OpenGL machen. Alles schön und gut, aber wenn ich den Saver laufen lasse, habe ich mehrere hundert FPS. Kann man im Code irgendwie was einbauen, dass man die FPS so auf 60 reduziert? Ne CPUlast von 100% bei nem Screensaver ist nicht so prikelnt. Danke für die Hilfe.
Gruß
agm
_________________ Hardware: AMD Athlon 1400 MHz +++ EPOX 8K7A (AMD761-Chipsatz) +++ Sapphire Atlantis Radeon 9600XT Fireblade Edition (128MB DDR) +++ Infineon 2x256MB DDR (PC266, CL2) +++ Creative Labs SoundBlaster Live 1024 +++ Maxtor 6Y080L0 Festplatte (80GB) +++ IBM IC35L040 Festplatte (40 GB) +++ MSI DR4-A DVD Brenner +++ Netgear FA310TX Fast Ethernet Adapter Software: Windows XP Professional SP1 +++ ATI Catalyst 4.7 +++ DirectX 9.0c
Eine Lösung wäre VSync zu aktivieren, aber die Wiederholfrequenz kann von moni zu moni und von einstellung zu einstellung variieren imho.
Sonst kannst du noch timebasedmovement einsetzen, mit wenigen zeilen code kannst du die FPS runterschrauben oder die geschwindigkeit deiner objekte an die fps anpassen, so dass alles ob bei 100 oder 1000 fps sich gleich schnell bewegt. Dazu empfehle ich dir einfach mal das 2te Bomberman tutorial von SoS.
Ein gezielt eingesetztes Sleep(x) wird deine CPU-Last erheblich senken. Am besten lässt du x vom Anwender irgendwie konfigurieren. Ansonsten kannst du die Priorität deines Prozesses herabsetzen und auf idle stellen - wenn kein anderes Programm am laufen ist, wird dein Sceensaver zwar immernoch 100% schlucken, sobald aber die Maschiene zu arbeiten anfängt kannst du dich ziemlich darauf verlassen, dass das OS CPU-Zeit von deinem Programm abziehen wird.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Die idee von delphic mit dem sleep empfinde ich auch als die beste Methode. Allerdings würde ich nicht direkt das x einstellen lassen sondern mehr das Resultat. Also der Benutzer kann einstellen, wie viele FPS er haben möchte und du machst nichts anderes als die Zeit des Bildes zu messen und dann dynamisch ein sleep mit der dazu passende Millisekunden anzahl aufrufen. Dann läuft es auf jedem Rechner in etwa gleich und frisst mal mehr oder weniger CPU.
Mitglieder in diesem Forum: 0 Mitglieder und 18 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.