AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia GDI, GDI+ oder doch Direct2D?
Thema durchsuchen
Ansicht
Themen-Optionen

GDI, GDI+ oder doch Direct2D?

Ein Thema von Jazzman_Marburg · begonnen am 12. Mai 2011 · letzter Beitrag vom 6. Nov 2022
Antwort Antwort
Benutzerbild von christian.noeding
christian.noeding

Registriert seit: 26. Mai 2005
Ort: Knw.-Remsfeld
120 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: GDI, GDI+ oder doch Direct2D?

  Alt 11. Jul 2012, 10:15
OK, dann sehe ich für GDI+ und OpenGL schon mal ein paar Pros und Contras. Danke schon einmal für die zahlreichen Infos. Für OpenGL könnte man ja auch unter Umständen Andorra2D verwenden. Man muss das Rad ja nicht komplett neu erfinden. Ich muss aber noch einmal nachhaken: wie sieht es mit TDirect2DCanvas aus, oder ist das noch zu neu, dass es noch keiner verwendet hat? Klingt ja eigentlich laut Beschreibung am vielversprechendsten, da man viele bekannte GDI-Zeichenoperationen weiterverwenden kann.


viele Grüße,
Chris
Christian Nöding
  Mit Zitat antworten Zitat
Namenloser

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

AW: GDI, GDI+ oder doch Direct2D?

  Alt 11. Jul 2012, 12:34
Bei Direct2D sehe ich in erster Linie den Nachteil, dass es erst ab Vista läuft...
  Mit Zitat antworten Zitat
Benutzerbild von christian.noeding
christian.noeding

Registriert seit: 26. Mai 2005
Ort: Knw.-Remsfeld
120 Beiträge
 
Delphi 10.3 Rio
 
#3

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, 33x aufgerufen)
Christian Nöding
  Mit Zitat antworten Zitat
Namenloser

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

AW: GDI, GDI+ oder doch Direct2D?

  Alt 13. Jul 2012, 08:43
Das so zu messen bringt nichts, weil der Timer selbst der Flaschenhals ist
Wenn dann müsstest du es in einer Schleife testen.
  Mit Zitat antworten Zitat
Benutzerbild von christian.noeding
christian.noeding

Registriert seit: 26. Mai 2005
Ort: Knw.-Remsfeld
120 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: GDI, GDI+ oder doch Direct2D?

  Alt 13. Jul 2012, 08:48
Oh - wie wahr

Ich erweitere meinen bisherigen Code jetzt erst einmal mit Direct2D-Canvas, da das am wenigsten Aufwand macht (bislang ja GDI). Dann läuft das Programm auch noch unter WinXP, da ich dort dann mit GDI zeichne. Sollte das am Ende immer noch nicht zufriedenstellend schnell laufen, wechsle ich auf Andorra2D.


Vielen Dank an Euch Poster.


Viele Grüße,
Christian
Christian Nöding
  Mit Zitat antworten Zitat
Namenloser

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

AW: GDI, GDI+ oder doch Direct2D?

  Alt 13. Jul 2012, 09:01
Ah, ich wusste nicht, dass TDirect2DCanvas das gleiche Interface wie TCanvas hat (habe ich unter TDE nicht). Ja, in dem Fall würde ich das auch nutzen... mehr Performance wird mit Andorra2D vermutlich auch nicht drin sein.
  Mit Zitat antworten Zitat
Benutzerbild von christian.noeding
christian.noeding

Registriert seit: 26. Mai 2005
Ort: Knw.-Remsfeld
120 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: GDI, GDI+ oder doch Direct2D?

  Alt 13. Jul 2012, 09:08
Ja, Direct2D-Canvas besitzt soweit alle wichtigen Zeichenfunktionen des Standard-Canvas. Von daher braucht man nicht viel ändern. Das habe ich aber auch erst gestern herausgefunden. Hier gibts einige interessante Infos dazu: Using the Direct2D Canvas

beste Grüße!
Christian Nöding
  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 01:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz