Einzelnen Beitrag anzeigen

Phobeus

Registriert seit: 14. Sep 2003
Ort: Tespe
65 Beiträge
 
Delphi 7 Professional
 
#2

Re: DirectX: Schnelles Text-Scrolling mit DirectDraw

  Alt 10. Apr 2005, 11:17
Also ohne, dass ich mich näher damit auseinander gesetzt habe, sind mir beim lesen zwei kleine Denkfehler aufgefallen. 1. Du scheinst als Bewegungs-Variable einen Integer zu nehmen. Das mag vielleicht sinnvoll erscheinen, da der Bildschirm ja eben einen Pixel als kleinste Einheit nur versteht. Allerdings schränkt einen dies ungemein bei der Berechnung ein. Es bietet sich meistens eher an, dass einen Float-Typen zu nehmen und diesen für die Berechnung zu nehmen und dann halt auf "Pixel" zu runden. Auf diese Weise erreichst Du ein "feineres bewegen".
Der zweite gedankliche Fehler ist wohl schwerer nachzuvollziehen. Du gehst momentan davon aus, dass dein Rechner 60 FPS hat. Vermutlich weil Du VSync an hast oder wohl noch eher, weil Du einen TFT hast. Wenn jemand mit einem CRT davor sitzt in 20 Jahren wird er die Texte nur so fliegen haben. Deine Bewegungsgeschwindigkeit richtet sich nämlich nach den Frames, dabei sollte diese sich lieber nach der Zeit richten, also bei jedem Durchgang die Zeitspanne zum vorherigen Bild messen und danach die Geschwindigkeit entsprechend anpassen. Mit dieser Methode erreichst Du nicht nur, dass das Programm auf allen Rechner gleich schnell läuft, sondern das auch ein im Hintergrund anspringender Indizierungsdienst im System nicht plötzlich zu rucklern oder unterschiedlichen Geschwindigkeiten führt. Bei mir auf der Seite unter Tutorials=>Spieletutorials=>Bomberman2 ist ziemlich oberhalb das "TimeBased Movement" erklärt. Auch der Source Code könnte Dir evtl. helfen. Ist zwar OpenGL, allerdings ist die Technik 1:1 zu übernehmen.
Hoffe wenigstens ein wenig geholfen zu haben
Florian Sievert
http://www.delphigl.com/
  Mit Zitat antworten Zitat