ok, klar wenn du das Bild in regelmäßigen Abständen aufbaust ist es egal wieviele Steine die Position ändern, sollte sich nichts ändern.
Mit dem Delay ist das bei mir immer so eine Sache, es gibt den normalen Timer wie früher in älteren Rechnern, dort war die Freq abgeleitet von einem 4,1xxxMhz Quarz nit ca. 838ns dann gab es Rechner bei denen die Auflösung dann ca. 279ns war, später kamen dann Multimediatimer hinzu die mit der Prozessorfreq laufen und hier liegt das Problem. Diese Timer laufen bei Rechnern die die Leistung durch CPU Takten anpassen unterschiedlich, hier müsste man die Zeit jedesmal neu berechnen oder die CPU auf 100% halten, das genaue Werte rauskommen. Man kann das Verhalten des Timers in der Boot.ini beeinflussen, beim Booteintrag "/usepmtimer" benutzt dann den alten Timer. Genaus kritisch ist der SLEEP() Befehl, dieser funktioniert bei neueren Rechnern erst ab einem Wert von 10, darunter wird einfach ein Application.Processmessages ausgelöst und er kommt einfach wieder zurück. Beim Einsatz von Sleep() mit Werten über 10 funktioniert diese Wartezeit wirklich gut.. Was mir auch schon oft geholen hat, abzufragen ob ein DualCore oder besser im System sitzt und dann das Programm einem Kern zugewiesen habe, hier kommt es dann nicht vor, dass Threads asynchron laufen und sich ggf überholen.
Also mein Lüfter macht nicht soooo viel Geräusche eher der vom Fujitsu den meine Frau benutzt..Düsenjäger ist da nix, aber mich stört die heisse Luft, die aus meinem Notebook ausströmt, wenn ich auf der Couch sitze mit den Teil auf den Beinen und mir den Oberschenkel wärmt..
Der Toshiba hat ein Tool,mit dem kann ich die Taktfreq anpassen, aber für die neueren Intel Proz gibt es ja verschieden Tools die das können. Ich kann z.B. die Freg durch 1-5 teilen.
>Der Toshiba hat ein Tool,mit dem kann ich die Taktfreq anpassen, >aber für die neueren Intel Proz gibt es ja verschieden Tools die das können. >Ich kann z.B. die Freg durch 1-5 teilen.
Damit kannst du doch viel besser einstellen, wieviel Power/Wärme dein Rechner erzeugen soll/darf. Selbst wenn dein Notebook dann auf niedrigster Stufe "nur" mit z.B. 300 Mhz getaktet wäre, würde das für einen flüssigen Ablauf bestimmt (für 99 Seconds) ausreichend sein.
Ich habe eben wieder den Process Explorer während des Spielens laufen lassen. Im 16Bit Screen-Mode krebst 99 Seconds bei mir um die 30% herum. Mit 32Bit sind es schon 60% und der Delay-Wert sinkt auf 8.
Oh, das macht hier bei mir einen aber einen sehr grossen Unterschied von 50% aus. Wundert mich ehrlich gesagt, da die Vista Compilation die modernen DirectX Befehle verwendet, während die "normale" Version die alten Standardbefehle für Sprites benutzt. Dann hat das compilieren für moderne Grafikkarten wohl nur auf "manchen" Systemen den erhofften Vorteil.
Ich kann mich des Eindrucks nicht erwehren, dass die ganzen neudmodischen Rechner sowieso für 3D konzipiert sind. Ich meine irgendwo gelesen zu haben das bereits DirectX 9 die Sprite Befehle "emulierte", da sie damals schon nicht mehr Bestandteil ihres Befehlssatzes waren.
Thema Delay: Ich habe mal auf die schnelle ein kleines Programm geschrieben, das den Timer in eurem PC testet. die ersten 5 Tests laufen ohne festlegung des kleinstmöglichen Wertes, die anderen mit mit festlegung. Bin gespannt was dabei rauskommt...
Danke fürs Testen. Sehr aufschlussreich, zwischen einer Millisekunde und 16 Millisekunden ist die Zeitspanne bei einem Delay von 1. Dies wird aber nicht der Grund für die 30 Frames sein...
Übrigends, hab mal die Priorität auf 8 zurückgesetzt, jetzt laufen nur noch 3 Soundthreads mit 15 und einer _DIEmWin mit 10. Ich kann keine Unterschiede beim Spielen feststellen. Das Prog läuft immer noch wie vorher
Ein Delay von 1 kommt erst nach 16 Millisekunden zurück. Na denn...
> jetzt laufen nur noch 3 Soundthreads mit 15 Ob 99 Seconds auf 8 oder 13 läuft spielt bei einer Priorität von 15 für die 3 Soundthreads ja auch keine Rolle. Sie kommen immer vorher dran.
hab mal dein Testprogramm debuggt, da wird intern der Sleep abgesetzt mit 1 ..ich habe mal 1 durch 16 ersetzt und komme dann auf 31 msec bei 32 komme ich dann auf 46msec. die Konstante von ca. 16 hängt bei mir immer dran
>hab mal dein Testprogramm debuggt, da wird intern der Sleep abgesetzt mit 1 ..ich habe mal 1 durch 16 ersetzt >und komme dann auf 31 msec bei 32 komme ich dann auf 46msec. die Konstante von ca. 16 hängt bei mir immer dran ...und was hat dir das debuggen nun gebracht?
Wenn ein Delay (du nennst es sleep) von einer Millisekunde erst nach 16 Ms zurückkehrt, ist doch klar, das eines von 16 ms dann eher 32 als 17 braucht. Deshalb schrieb ich ja auch "ach du sch...."
wir rechnen: 1000 ms / 60 Bilder = 16.667 ms
unser pc braucht 4 ms für seine berechnungen wir geben die restliche Zeit (12ms) an windows
Das Resultat: 4ms + 16ms = 20 Ms woraufhin windows aber erst nach 32 ms zurückkehrt
Ergo: 1000 / 32 = 31.25 FPS
Nun frage ich mich aber, ob du wieder so ein powerprofil aktiviert hattest, denn deine Werte waren doch eigentlich ganz in Ordnung...