Graphics Device Interface
Das Graphics Device Interface (GDI) ist eine Komponente des Betriebssystems Windows. Es dient als Programmierschnittstelle zu logischen Grafikgeräten und kapselt die Komplexität der Hardware ab (Hardwareabstraktion). Diese logischen Grafikgeräte werden in GDI als Gerätekontext (engl. Device Context) bezeichnet, in einigen Programmiersprachen ist dafür die Bezeichnung Canvas (zu dt. Leinwand) gebräuchlich. Neben der Ausgabe über physische Geräte (Grafikkarte oder Drucker) kann auch die Ausgabe als Rastergrafik im Speicher oder als eine Art Schrittprotokolldatei (WMF/EMF, unter Windows als Vektorgrafikformat genutzt) erfolgen.
GDI ist zuständig für Aufgaben wie das Zeichnen von Linien und Kurven (Vektorgrafik), Darstellung von Schriftzeichen und Bitmaps und Verwaltung von Farbpaletten. Die Komponenten DIB-Engine (Device-Independent Bitmap) und das ICM-Farb-Subsystem erlauben eine geräteunabhängige Verarbeitung von Bitmaps bzw. Farben. Benötigt ein Programm Informationen über gerätespezifische Eigenschaften (Bildschirmauflösung, Bildschirmtyp), kann es sie vom Device Context beziehen. Die GDI-Aufrufe sind aber weitestgehend unabhängig davon, um was für einen Device Context es sich handelt. Ein Programm, das eine Grafik beispielsweise auf dem Bildschirm ausgibt, könnte sie mit minimalen Anpassungen auf einem Drucker ausgeben. Vektorgrafik- und Schriftbefehle werden bei direkter Ausgabe auf einem Drucker-Gerätekontext nicht von GDI gerastert, sodass ein beliebiger physischer Drucker sie in seiner optimalen Auflösung ausgibt[1] und bei durch einen virtuellen Drucker erstellten Dokumenten (z. B. PDF oder XPS) eine Entnahme von Grafiken und Text möglich ist.
Da die meisten Routinen zum Zeichnen auf dem Prozessor arbeiten und nicht auf der Grafikkarte, ist die Grafikausgabe von GDI relativ langsam. Unter Windows Vista wird die Grafikausgabe von GDI komplett von der CPU übernommen, wodurch diese noch langsamer als in früheren Windows-Betriebssystemen ist.[2] Seit Windows 7 werden mit dem Windows „Display Driver Model v1.1“ wieder wenige Zeichenoperationen von der Grafikkarte beschleunigt.[3] Für Anwendungen, die eine schnellere 3D-Grafikschnittstelle benötigen, vor allem für Spiele und CAx-Applikationen, wurden DirectX und OpenGL geschaffen.
Siehe auch
Weblinks
Einzelnachweise
- ↑ About the GDI Print API, MSDN, abgerufen am 7. Juni 2019 (englisch).
- ↑ Comparing Direct2D and GDI Hardware Acceleration - Availability of Hardware Acceleration. Abgerufen am 3. April 2014 (englisch).
- ↑ GDI Hardware Acceleration. Abgerufen am 3. April 2014 (englisch).