Einzelnen Beitrag anzeigen

Benutzerbild von christian.noeding
christian.noeding

Registriert seit: 26. Mai 2005
Ort: Knw.-Remsfeld
119 Beiträge
 
Delphi XE2 Professional
 
#27

AW: GDI, GDI+ oder doch Direct2D?

  Alt 13. Jul 2012, 07:02
Tja,

also zwischen GDI-Canvas mit BitBlt() und Direct2DCanvas kann ich unter Win7 64Bit keinen wirklichen Unterschied feststellen. Wenn ich mit einem Threaded-Timer die Oberfläche bei D2D mit höherer Geschwindigkeit neuzeichne, bleibt zwar die CPU-Belastung nahezu 0% und es wird schnell neugezeichnet, allerdings friert mir das Hauptprogramm ein. Man müsste also die Zeichenroutinen dann in einen Extra-Thread einbauen. Wenn ich einen normalen VCL-Standard-Timer verwende kann ich gar keinen Unterschied zu BitBlt() feststellen.


Im Anhang habe ich ein kleines Demo-Programm, welches beide Varianten verwendet (BitBlt() und D2DCanvas). Ich zähle in der Zeichenroutine einfach eine Word-Variable hoch und skaliere damit mein Rectangle, welches auf der Canvas gezeichnet wird. Bei der GDI-Variante zeichne ich zunächst auf ein TBitmap32 aus der GR32-Sammlung und blitte es dann mit Bitblt auf die Paintbox. Bei der D2DCanvas zeichne ich direkt auf die Canvas. Es ist jetzt wirklich die Frage, ob der Aufwand eines Extra-Zeichen-Threads wert ist, wenn GDI auch unter Win7 noch so gut funktioniert. OpenGL schaue ich mir jetzt als nächstes an.


viele Grüße,
Christian
Angehängte Dateien
Dateityp: zip Demo.zip (556,7 KB, 32x aufgerufen)
Christian Nöding
  Mit Zitat antworten Zitat