Übersicht über die Windows-Grafikarchitektur
Windows stellt mehrere C++/COM-APIs für Grafiken bereit. Diese APIs sind im folgenden Diagramm dargestellt.
- Graphics Device Interface (GDI) ist die ursprüngliche Grafikschnittstelle für Windows. GDI wurde zuerst für 16-Bit-Windows geschrieben und dann für 32-Bit- und 64-Bit-Windows aktualisiert.
- GDI+ wurde in Windows XP als Nachfolger von GDI eingeführt. Auf die GDI+-Bibliothek wird über eine Reihe von C++-Klassen zugegriffen, die flache C-Funktionen umschließen. Die .NET Framework bietet auch eine verwaltete Version von GDI+ im System.Drawing-Namespace.
- Direct3D unterstützt 3D-Grafiken.
- Direct2D ist eine moderne API für 2D-Grafiken, der Nachfolger von GDI und GDI+.
- DirectWrite ist eine Textlayout- und Rasterisierungs-Engine. Sie können entweder GDI oder Direct2D verwenden, um den gerasterten Text zu zeichnen.
- DirectX Graphics Infrastructure (DXGI) führt Aufgaben auf niedriger Ebene aus, z. B. die Darstellung von Frames für die Ausgabe. Die meisten Anwendungen verwenden DXGI nicht direkt. Es dient vielmehr als Zwischenebene zwischen dem Grafiktreiber und Direct3D.
Direct2D und DirectWrite wurden in Windows 7 eingeführt. Sie sind auch für Windows Vista und Windows Server 2008 über ein Plattformupdate verfügbar. Weitere Informationen finden Sie unter Plattformupdate für Windows Vista.
Direct2D ist der Schwerpunkt dieses Moduls. Während sowohl GDI als auch GDI+ in Windows weiterhin unterstützt werden, werden Direct2D und DirectWrite für neue Programme empfohlen. In einigen Fällen kann ein Mix von Technologien praktischer sein. Für diese Situationen sind Direct2D und DirectWrite so konzipiert, dass sie mit GDI zusammenarbeiten.
In den nächsten Abschnitten werden einige der Vorteile von Direct2D beschrieben.
Hardwarebeschleunigung
Der Begriff Hardwarebeschleunigung bezieht sich auf Grafikberechnungen, die von der Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) und nicht von der CPU durchgeführt werden. Moderne GPUs sind stark für die Berechnungstypen optimiert, die beim Rendern von Grafiken verwendet werden. Im Allgemeinen gilt: Je mehr dieser Arbeit von der CPU auf die GPU verschoben wird, desto besser.
Während GDI die Hardwarebeschleunigung für bestimmte Vorgänge unterstützt, sind viele GDI-Vorgänge an die CPU gebunden. Direct2D ist über Direct3D angeordnet und nutzt die von der GPU bereitgestellte Hardwarebeschleunigung in vollem Umfang. Wenn die GPU die für Direct2D erforderlichen Features nicht unterstützt, greift Direct2D auf Softwarerendering zurück. Insgesamt übertrifft Direct2D GDI und GDI+ in den meisten Situationen.
Transparenz und Antialiasing
Direct2D unterstützt vollständig hardwarebeschleunigte Alpha-Blending (Transparenz).
GDI hat nur eingeschränkte Unterstützung für Alpha-Blending. Die meisten GDI-Funktionen unterstützen keine Alphamischung, obwohl GDI die Alphamischung während eines Bitblt-Vorgangs unterstützt. GDI+ unterstützt Transparenz, aber das Alpha-Blending wird von der CPU ausgeführt, sodass es nicht von der Hardwarebeschleunigung profitiert.
Hardwarebeschleunigte Alpha-Blending ermöglicht auch Antialiasing. Aliasing ist ein Artefakt, das durch das Sampling einer fortlaufenden Funktion verursacht wird. Wenn beispielsweise eine gekrümmte Linie in Pixel konvertiert wird, kann aliasing zu einem zackigen Erscheinungsbild führen. Jede Technik, die die durch Aliasing verursachten Artefakte reduziert, wird als Eine Form von Antialiasing betrachtet. In Grafiken erfolgt das Antialiasing, indem Kanten mit dem Hintergrund gemischt werden. Hier ist beispielsweise ein Kreis, der von GDI gezeichnet wurde, und derselbe Kreis, der von Direct2D gezeichnet wurde.
Das nächste Bild zeigt ein Detail der einzelnen Kreise.
Der von GDI (links) gezeichnete Kreis besteht aus schwarzen Pixeln, die sich einer Kurve annähern. Der von Direct2D (rechts) gezeichnete Kreis verwendet das Blending, um eine glattere Kurve zu erstellen.
GDI unterstützt kein Antialiasing, wenn geometrien (Linien und Kurven) zeichnen. GDI kann antialiasierten Text mit ClearType zeichnen. andernfalls wird GDI-Text auch aliast. Aliasing ist besonders für Text spürbar, da die gezackten Linien das Schriftdesign stören und den Text weniger lesbar machen. Obwohl GDI+ Antialiasing unterstützt, wird es von der CPU angewendet, sodass die Leistung nicht so gut ist wie Direct2D.
Vektorgrafiken
Direct2D unterstützt Vektorgrafiken. In Vektorgrafiken werden mathematische Formeln verwendet, um Linien und Kurven darzustellen. Diese Formeln sind nicht von der Bildschirmauflösung abhängig, sodass sie auf beliebige Dimensionen skaliert werden können. Vektorgrafiken sind besonders nützlich, wenn ein Bild skaliert werden muss, um unterschiedliche Monitorgrößen oder Bildschirmauflösungen zu unterstützen.
Nächste