Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#23

AW: Animationen mit Delphi erstellen

  Alt 19. Jan 2015, 10:33
Die Auflösung des Timers reicht nicht aus? Wieviele Bilder pro Sekunde möchtest du denn anzeigen (und dann bitte auch erklären für wen)? Nach meiner Erfahrung reichen eigentlich 25 Bilder/Sekunde aus. Das macht dann 40ms pro Bild. Wie ist die Auflösung des Standard-Timers? ca. 20ms? Nach meiner Erfahrung bekommt man mit einem normalen Timer und einer recht fixen Darstellung (keine Monsterberechnungen) knapp 60 Bilder pro Sekunde auf den Schirm gemalt. Das menschliche Auge hat ab 25 Bildern/Sekunde den Eindruck einer flüssigen Bewegung. Aber evtl. hast du ja schnellere Augen?
Das ist auch so eine Urban Legend. Es gibt keine feste Schwelle, ab der das menschliche Auge eine flüssige Bewegung wahrnimmt. Guck dir mal ein Video mit 25 FPS an, und dann das gleiche Video mit 60 FPS und sag mir du siehst keinen Unterschied. Was man als „flüssig“ bezeichnet, hängt von den eigenen Ansprüchen ab. Wenn 25 FPS reichen, dann kannst du den Timer vielleicht nehmen. Wenn du 60 FPS haben willst, ist der Timer unter Windows nach meiner Erfahrung nicht geeignet.

Das Hauptproblem beim Timer ist gar nicht mal, dass das minimale Intervall zu grob ist, sondern dass er zu sehr streut. Du kriegst vielleicht im Durchschnitt 50 FPS, aber der tatsächliche Abstand zwischen zwei Frames schwankt mal zwischen 15ms und 25ms. Das hat sehr starken Einfluss darauf, ob die Animation flüssig wirkt oder nicht.

Aber das sind alles Details, die für den OP wahrscheinlich erst mal überhaupt nicht wichtig sind, und deswegen bin ich darauf, ob man das jetzt konkret mit einer Schleife oder einem Timer oder sonstwie implementiert, in meinem Beitrag auch gar nicht erst eingegangen. In der Praxis reicht TTimer hier wahrscheinlich. Ist aber ein Implementierungsdetail, was für meinen Beitrag nicht relevant war.

Wenn man es „wirklich richtig“ machen will, führt eigentlich sowieso kein Weg an OpenGL/DirectX vorbei.

Geändert von Namenloser (19. Jan 2015 um 10:37 Uhr)
  Mit Zitat antworten Zitat