AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Seltsames Verhalten von Application.OnIdle
Thema durchsuchen
Ansicht
Themen-Optionen

Seltsames Verhalten von Application.OnIdle

Ein Thema von DeerHunter · begonnen am 18. Okt 2004 · letzter Beitrag vom 18. Okt 2004
Antwort Antwort
DeerHunter

Registriert seit: 8. Jun 2004
16 Beiträge
 
Delphi 6 Professional
 
#1

Seltsames Verhalten von Application.OnIdle

  Alt 18. Okt 2004, 03:34
Hallo, ich arbeite gerade an einem kleinen Spielchen; für die Darstellung verwende ich Application.OnIdle, (mit Done := False), sodass permanent neu das Spielfeld gezeichnet wird.
Ich erreiche somit bei wohlbemerkt 100% CPU Auslastung eine Framerate, die stets bei ungefähr 100 FPS liegt.
Das seltsame dabei ist nun: wenn ich während der Laufzeit meines Spielchens die Auflösung ändere, dann erreiche ich plötzlich auch viel höhere Framerates von mehreren Hundert FPS. Wenn ich dann in der selben Auflösung das Spiel neu starte sind es aber wieder nur um die ~100.

Woran liegt das? gibt es da irgendwie ein internes Limit bei OnIdle..? und wenn ja, wieso wird das außer Kraft gesetzt bei Änderung der Auflösung? aber eigentlich kann das auch garnicht sein, da ich, wenn ich statt meinem normalen Spielfeld einfach nur ein Rechteck zeichne, trotzdem auf viel höhere FPS komme...
Kommt mir alles höchst seltsam vor, v.a. da ja die CPU Auslastung eigentlich immer 100% ist... wie kann er da plötzlich das doppelte an FPS erreichen?
  Mit Zitat antworten Zitat
Benutzerbild von Spezi1980
Spezi1980

Registriert seit: 11. Aug 2003
Ort: Dresden OT Cossebaude
71 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Seltsames Verhalten von Application.OnIdle

  Alt 18. Okt 2004, 07:00
Hallo,
also, je größer die Auflösung vom Bildschirm ist, desto geringer ist auch die Framerate, da die Grafikkarte dann mehr zu leisten hat. Ich vermute mal, dass due die Auflösung heruntergesetzt hast und damit ist dann die Framerate auch plötzlich um ein vielfaches größer.

Die CPU Rechenzeit und das onIdle hat damit nur weniger etwas tun. Es kommt auch darauf an, ob du Dein Rechteck direkt im Grafikspeicher malst, oder im "normalen" Speicher und dann immer wieder in den Grafikspeicher kopierst.
In dem letzteren Fall hat natürlich die Auflösung eine noch viel größere Auswirkung und es kann schnell bei Verkleinerung der Auflösung die doppelte bis dreifache Framrate zunehmen.

Nenn doch noch ein Paar Informationen wie du das mit dem Zeichnen machst. (mittels DirectX, OpenGL, Welche Komponenten verwendest du?,...)

Gruß
Robert
Robert
Codito, ergo sum.
>>I code, therefore I am<<
  Mit Zitat antworten Zitat
DeerHunter

Registriert seit: 8. Jun 2004
16 Beiträge
 
Delphi 6 Professional
 
#3

Re: Seltsames Verhalten von Application.OnIdle

  Alt 18. Okt 2004, 08:38
ich zeichne in ein TBitmap im speicher, welches dann auf eine Form geblittet wird... allerdings kann deine Theorie nicht ganz hinkommen, da das Programm, wenn ich es in einer niedrigeren Auflösung NEU STARTE, wieder nur mit ~100 FPS rennt. (hatte ich oben auch geschrieben)

nur wenn ich, während es läuft, die Auflösung ändere (ob verkleinere oder vergrößere spielt keine Rolle), dann ja dann läufts schneller..

tja ich sag ja... seltsam seltsam
  Mit Zitat antworten Zitat
Benutzerbild von Spezi1980
Spezi1980

Registriert seit: 11. Aug 2003
Ort: Dresden OT Cossebaude
71 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Seltsames Verhalten von Application.OnIdle

  Alt 18. Okt 2004, 16:26
Da ich damit noch keine Probleme hatte, kann ich dir leider auch nicht weiterhelfen. Ich könnte nur Vermutungen anstellen (Windows begrenzt die Framerate o.ä.) aber ohne weitere Informationen kann ich nichts genaues sagen.

Gruß Robert
Robert
Codito, ergo sum.
>>I code, therefore I am<<
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz