Einzelnen Beitrag anzeigen

henrik

Registriert seit: 25. Nov 2003
36 Beiträge
 
Delphi 2007 Professional
 
#1

Wäre DirectX/OpenGL hiefür sinnvoll ?

  Alt 7. Jan 2008, 15:47
Hallo,

bei meiner Anwendung unter Win XP werfe ich in manchen Situationen ca. alle 50 ms ein 700 * 600 großes - im Hintergrund dynamisch erstelles - Bitmap mittles BitBlt auf eine Paintbox : Mit der Maus kann man auf dieser Fläche "Objekte verschieben", d.h. in einer OnTimer Methode wird die Mausposition ca. alle 50 ms abgefragt, dann das darunterliegende Objekt (teilweise schon fertige kleine Bilder, teils einfache geometrische 2D-Figuren mittels Canvas FillRect LineTo... erstellt) im Hintergrundbuffer an der neuen Position neu gemalt und anschließend dieser gezeigt.

Das ganze funktioniert prinzipiell gut bei realtiv geringer CPU Auslastung. Die Berechnung des 700*600 Bildes dauert ca. 15 ms, d.h. eine RefreshRate von ca. 20 ms müsste theoretisch drin sein.

Doch hier ist das problem : selbst wenn ich das Timer Interval von 50 auf 20-30 ms setze, spürt man keine Verbesserung (verwende den MMTimer welcher eine Genbauigkeit von ca. 1 ms hat) :

Die bewegten Objekte hängen dem Mauszeiger immer deutlich hinterher.

Liegt da eine prinzipielle Einschränkung bei dieser Art von Grafikprogrammierung (Canvas) vor, d.h. die nicht direkt auf die Grafikkarte zugreift ?
Wäre DirectX/OpenGL hiefür sinnvoll (es werden keine 3D Sachen und sonstige Effekte benötigt) ?

Es geht ja eigentlich "nur" das schnelle Darstellen eines größeren Bitmaps auf einer Fläche (Paintbox). Die Operationen zur Berechnung des Bildes im Hintergrund (Bitmap Manipulationen) lassen sich wohl nicht beschleunigen (verwende auch kein langsames Canvas.Pixels[x,y]) ?

Gruss
Henrik
  Mit Zitat antworten Zitat