High Fidelity-Grafiken mit DirectX
Windows-Anwendungsentwickler verwenden Microsoft DirectX seit langem, um hochwertige, hardwarebeschleunigte 3D-Grafiken bereitzustellen. Als die Technologie 1995 debütierte, konnten Entwickler hochwertige 3D-Grafiken für Spiele und Technische Anwendungen für Gamer und Profis bereitstellen, die bereit sind, für eine 3D-Grafikplatine extra zu bezahlen. Selbst die kostengünstigsten PCs verfügen nun über leistungsfähige 3D-Grafikhardware.
Um diese Grafikfunktionen zu nutzen, hat Windows Vista die WDDM-Infrastruktur (Windows Display Driver Model) für DirectX eingeführt, die es mehreren Anwendungen und Diensten ermöglichte, die Ressourcen der Grafikverarbeitungseinheit (GPU) gemeinsam zu nutzen. Der Desktopfenster-Manager (DWM) verwendet diese Technologie, um den Aufgabenwechsel in 3D zu animieren, dynamische Miniaturansichten von Anwendungsfenstern bereitzustellen und Windows Aero Glass-Effekte für Desktopanwendungen bereitzustellen.
Windows 7 legt noch mehr Grafikfunktionen in die Hände von Anwendungsentwicklern. Durch eine neue Gruppe von DirectXAPIs können Microsoft Win32-Entwickler die neuesten Innovationen in GPUs nutzen, um ihren Anwendungen schnelle, skalierbare, hochwertige 2D- und 3D-Grafiken, Text und Bilder hinzuzufügen. Auf den neuesten LCD-Displays können DirectXAPIs Desktop- und Fensterinhalte mit einer Farbtiefe von mehr als 8 Bit pro Farbkomponente anzeigen.
Mit DirectX können Win32-Entwickler auch die Parallelität der GPU für allgemeine Berechnungen wie die Bildverarbeitung verwenden und auf DirectX 10-Hardware, DirectX 9-Hardware, der CPU oder auf einem Windows-Remotecomputer rendern. Diese Technologien wurden für die Zusammenarbeit mit Windows Graphics Device Interface (GDI) und Windows GDI+ entwickelt, um sicherzustellen, dass Entwickler ihre vorhandenen Investitionen in Win32-Code problemlos beibehalten können. (Weitere Informationen finden Sie unter Neuerungen im DirectX SDK vom März 2009.)
Diese erweiterten Grafikfunktionen werden von den folgenden COM-basierten APIs bereitgestellt:
- Direct2D zum Zeichnen von 2D-Grafiken.
- DirectWrite zum Anordnen und Rendern von Text.
- Windows-Bildverarbeitungskomponente zum Verarbeiten und Anzeigen von Bildern.
- Direct3D 10 zum Zeichnen von 3D-Grafiken.
- Direct3D 11 zum Zeichnen von 3D-Grafiken und bereitstellung des Zugriffs auf GPU-Technologien der nächsten Generation, z. B. Tessellation, eingeschränkte Unterstützung für Texturstreaming und allgemeines Computing.
- DirectX Graphics Infrastructure (DXGI) für die Verwaltung lokaler und Remoteanzeigegeräte und GPU-Ressourcen sowie für die Interoperabilität zwischen DirectX und GDI.
Direct2D
Basierend auf Microsoft Direct3D 10 bietet Direct2D Win32-Entwicklern einen sofortigen, auflösungsunabhängigen 2D-APIs, die die Leistungsfähigkeit der Grafikhardware der nächsten Generation nutzen und dennoch gut mit den heutigen GDI/GDI+-Anwendungen und Direct3D 10-Anwendungen zusammenarbeiten. Direct2D bietet qualitativ hochwertiges 2D-Rendering mit einer Leistung, die GDI und GDI+ überlegen ist. Es bietet Win32-Entwicklern eine genauere Kontrolle über Ressourcen und deren Verwaltung. (Siehe Direct2D.)
DirectWrite
Viele der heutigen Anwendungen müssen qualitativ hochwertiges Textrendering, auflösungsunabhängige Gliederungsschriftarten und vollständige Unicode-Text- und Layoutunterstützung unterstützen. DirectWrite, eine neue DirectX-Komponente, bietet folgende und weitere Features:
- Ein geräteunabhängiges Textlayoutsystem, das die Lesbarkeit von Text in Dokumenten und in der Benutzeroberfläche verbessert.
- Hochwertiges ClearType-Textrendering unter Pixeln, das GDI, Direct2D oder anwendungsspezifische Renderingtechnologie verwenden kann.
- Hardwarebeschleunigter Text, wenn er mit Direct2D verwendet wird.
- Unterstützung für Text in mehreren Formaten.
- Unterstützung für die erweiterten Typografiefeatures von OpenType-Schriftarten .
- Unterstützung für das Layout und Rendering von Text in allen unterstützten Sprachen.
- GDI-kompatibles Layout und Rendering.
Das DirectWrite Schriftartsystem ermöglicht die Schriftartverwendung "beliebige Schriftart überall", bei der Benutzer keinen separaten Installationsschritt ausführen müssen, nur um eine Schriftart zu verwenden, und eine verbesserte strukturelle Hierarchie der Schriftartgruppierung, um bei der manuellen oder programmgesteuerten Schriftartenermittlung zu helfen. Die APIs unterstützen das Messen, Zeichnen und Treffertest von Text mit mehreren Formaten. DirectWrite verarbeitet Text in allen unterstützten Sprachen für globale und lokalisierte Anwendungen und baut dabei auf der schlüsselsprachigen Infrastruktur in Windows 7 auf. DirectWrite bietet auch Low-Level-Glyphenrendering-APIs für Entwickler, die ihr eigenes Layout und die Unicode-zu-Glyphenverarbeitung ausführen möchten. (Siehe DirectWrite.)
Windows-Bilderstellungskomponente
In Windows Vista hat die Windows-Bildverarbeitungskomponente ein erweiterbares Framework für die Arbeit mit Images und Bildmetadaten eingeführt. Die von der Windows-Bildverarbeitungskomponente unterstützten Bildformate umfassen JPEG, PNG und TIFF, und die unterstützten Metadatenformate umfassen XMP und EXIF. Mit Windows 7 erweitert die Windows-Imaging-Komponente ihre Standardkonformität, indem sie Unterstützung für progressive Bildcodierung, erweiterte PNG-Features , GIF-Metadaten und Metadaten bietet, die APPn-Segmente umfassen. (Weitere Informationen finden Sie unter Neuigkeiten für WIC in Windows 7.)
Direct3D 11
Microsoft Direct3D 11 erweitert die Funktionalität der Direct3D 10-Pipeline und bietet Windows 7-Spielen und High-End-3D-Anwendungen einen effizienten, robusten und skalierbaren Zugriff auf die kommende Generation von GPUs und Mehrkern-CPUs. Zusätzlich zur Funktionalität in Direct3D 10 führt Direct3D 11 einige neue Features ein.
Geometrie und Oberflächen mit hoher Ordnung können jetzt tesselliert werden, um skalierbare, dynamische Inhalte in Patch- und Unterteilungsoberflächendarstellungen zu unterstützen.
Um die von mehreren CPU-Kernen verfügbare parallele Verarbeitungsleistung zu nutzen, erhöht Multithreading die Anzahl potenzieller Renderingaufrufe pro Frame, indem die Anwendungs-, Laufzeit- und Treiberaufrufe auf mehrere Kerne verteilt werden. Darüber hinaus wurden die Ressourcenerstellung und -verwaltung für die Verwendung von Multithreads optimiert, wodurch eine effizientere dynamische Texturverwaltung für streaming ermöglicht wird.
Für Direct3D 11 wurden neue universelle Compute-Shader erstellt. Im Gegensatz zu vorhandenen Shadern sind dies Erweiterungen der programmierbaren Pipeline, mit denen Ihre Anwendung mehr Arbeit vollständig auf der GPU ausführen kann, unabhängig von der CPU. DrawAuto, das in Direct3D 10 eingeführt wurde, wurde erweitert, um mit einem Compute-Shader zu interagieren.
An der High-Level-Schattierungssprache (HLSL) wurden mehrere Verbesserungen vorgenommen, z. B. eine eingeschränkte Form der dynamischen Verknüpfung in Shadern zur Verbesserung der Spezialisierungskomplexität und objektorientierte Programmierkonstrukte wie Klassen und Schnittstellen. (Weitere Informationen finden Sie unter Neuerungen im DirectX SDK vom März 2009.)
Direct3D 10-Verbesserungen
Direct3D 10 enthält eine neu gestaltete Grafikpipeline mit programmierbaren Shaderstufen und unveränderlichen Zustandsobjekten zum Initialisieren der Stufen mit festen Funktionen. Die Zustandsobjekte vereinfachen die Pipeline und verbessern die Leistung, indem sie die Anzahl der erforderlichen Zustandsänderungen minimieren. Die Programmierbarkeit von Shaderstufen bietet jetzt allgemeine Schattierungsspracherweiterungen, um unbegrenzte Shaderanweisungen, generalisierte Shaderressourcen sowie ganzzahlige und bitweise Berechnungen zu unterstützen.
Die Pipeline führt auch die Geometrie-Shaderphase ein, die die Arbeit vollständig von der CPU auf die GPU auslädt. Mit dieser neuen Phase können Sie Geometrie erstellen, die Daten in den Arbeitsspeicher streamen und die Geometrie ohne CPU-Interaktion rendern.
Mehrere weitere Verbesserungen sind speziell für eine schnellere Leistung konzipiert. Prädiktisches Rendering führt Verschlüsse durch, um die Menge der gerenderten Geometrie zu reduzieren. Instancing-APIs können die Menge an Geometrie, die an die GPU übertragen werden muss, erheblich reduzieren, indem mehrere Instanzen ähnlicher Objekte erstellt werden. Texturarrays ermöglichen der GPU den Texturaustausch ohne CPU-Eingriff.
Direct3D 10 und Direct3D 11 wurden mehrere Ergänzungen vorgenommen, um den Umfang der Konfigurationen zu erweitern, die mit diesen APIs als Ziel verwendet werden können. Die Windows Advanced Rasterization Platform (WARP) implementiert ein schnelles, skalierbares CPU-Rendering mit mehreren Kernen für Direct3D 10 und ermöglicht so ein vollständiges Grafikrendering auf Systemen ohne Grafikhardware. Durch das Hinzufügen neuer "Featureebenen", insbesondere Direct3D 10 Level 9, können die Direct3D 10- und Direct3D 11APIs Hardware der Microsoft Direct3D 9-Klasse steuern, wodurch die Anzahl der Konfigurationen erweitert wird, die eine Direct3D 10- oder Direct3D 11-Anwendung auf fast jedes Computersystem auf dem Markt abzielen kann. (Siehe Direct3D 10-Grafiken.)
DirectX/GDI-Interoperabilität
In Windows Vista unterscheidet sich das Verhalten einer Anwendung, die sowohl DirectX als auch GDI zum Rendern auf einer freigegebenen Oberfläche verwendet, je nachdem, ob DWM aktiviert oder deaktiviert ist. Wenn DWM aktiviert ist, verhalten sich Anwendungen, die sowohl DirectX als auch GDI verwenden, unter Windows Vista anders als unter Windows XP. Dies führte dazu, dass viele ISVs DWM beim Ausführen ihrer Anwendungen unter Windows Vista deaktivieren, um ein konsistentes Verhalten sicherzustellen. Mit den Verbesserungen an DirectX in Windows 7 kann eine Anwendung jetzt DirectX und GDI frei kombinieren, ohne DWM zu deaktivieren. Windows 7 bietet auch eine verbesserte Leistung für Szenarien, die eine Interoperation zwischen DirectX und GDI erfordern, indem die effizienteren Direct3D 10-APIs verwendet werden. (Siehe Übersicht über die Direct2D- und GDI-Interoperabilität.)