AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi DirectX: Schnelles Text-Scrolling mit DirectDraw
Thema durchsuchen
Ansicht
Themen-Optionen

DirectX: Schnelles Text-Scrolling mit DirectDraw

Ein Thema von Tyr123 · begonnen am 9. Apr 2005 · letzter Beitrag vom 12. Apr 2005
Antwort Antwort
Tyr123

Registriert seit: 9. Apr 2005
Ort: Köln
2 Beiträge
 
#1

DirectX: Schnelles Text-Scrolling mit DirectDraw

  Alt 9. Apr 2005, 23:49
Hallo Zusammen,

da ich hier jetzt neu bin, möchte ich zunächst alle herzlich begrüßen
Bin auch relativ neu bei DirectX, d.h. habe vor 6-7 Jahren mit DirectX 3.0 was probiert und war total begeistert wegen der Geschwindigkeit. Danach lange Pause...
Jetzt möchte ich einen schnellen Text-Scroller (so was wie ein Ticker von rechts nach links) im Fullscreen realisieren, aber die Geschwindigkeit lässt leider viel zu wünschen übrig.
Vielleicht kann mir hier jemand helfen... Also die relevante Routine (denke ich mal, dass es relevant ist ):

Delphi-Quellcode:
// ********************************************
  FDisplay.Clear(0);
  FDisplay.Blt(intLeft, 10, FTextSurface, nil);
  inc(intleft);
  if intLeft > 300 then
    intLeft := 0;
  hr := FDisplay.Flip;
// ********************************************
Die FTextSurface ist immer die gleiche, es wird immer der gleiche Text gezeigt.
Habe auch versucht das in eine
Delphi-Quellcode:
while (true) do
begin
....
end;
Schleife zu packen. Hat nicht viel gebracht, ausser dass ich alles abschiessen musste, da nicht mehr zurückkommen konnte. *g*
Arbeite auf einem win2000 System mit DirectX 7.0 Header Dateien von Erik Unger.

Hat jemand einen Vorschlag, wie man das beschleunigen könnte? natürlich ohne in größeren Schritten zu inkrementieren, das sieht nicht aus...

Vielen Dank und
Viele Grüße
Tyr


...
nachdem ich gestern die halbe Nacht damit verbracht habe das Problem zu finden ist mir eingefallen, dass ich vielleicht einfach was unmögliches möchte
Also,ich bekomme immer die FPS Rate die der Bildfrequenz des Monitor entspricht. Also folglich kann ich nicht mehr als z.B. 60 Pixel in einer Sekunde scrollen bei einer FPS von 60... Klingt auch logisch, auch wenn ich es bisschen langsam finde.
Ausser ich würde flackern in Kauf nehmen den double-puffer ausschalten...
Weiss jemand ob es bei DirectX geht? Ohne dieses FDisplay.Flip tut sich nichts...

Nochmals Danke und viele Grüße
Tyr
  Mit Zitat antworten Zitat
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, 12: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
Tyr123

Registriert seit: 9. Apr 2005
Ort: Köln
2 Beiträge
 
#3

Re: DirectX: Schnelles Text-Scrolling mit DirectDraw

  Alt 10. Apr 2005, 23:09
Hallo,

danke für die Antwort, da hast Du natürlich recht, besonders bei dem zweiten Punkt. Merke es jetzt schon, gerade weil ich es über OnIdle Event laufen lasse, wenn der Rechner was beschäftigt ist. Und sowas darf nicht sein

Viele Grüße
Tyr
  Mit Zitat antworten Zitat
Ruppi

Registriert seit: 12. Apr 2005
7 Beiträge
 
#4

Re: DirectX: Schnelles Text-Scrolling mit DirectDraw

  Alt 12. Apr 2005, 21:15
DirectDraw ist nurnoch wegen abwärtskompatibilität vorhanden
Direct3D verwenden und ID3DXFont.
Dann sollte das ganze mit 500 FPS flüssig laufen

(bei fragen hier oder bei http://www.delphidev.de/ forum für delphi+directX programmierer.)

mfg
Ruppi
  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 04:25 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