Optimieren der Leistung: Vorteile der Hardware nutzen
Aktualisiert: November 2007
Die interne Architektur von WPF verfügt über zwei Renderingpipelines, Hardware und Software. Dieses Thema enthält Informationen über diese Renderingpipelines, die Sie bei den Entscheidungen hinsichtlich Leistungsoptimierungen Ihrer Anwendungen unterstützen.
Hardwarerenderingpipeline
Einer der wichtigsten Faktoren bei der Bestimmung der WPF-Leistung besteht darin, dass sie renderinggebunden ist - je mehr Pixel gerendert werden müssen, desto höher sind die Kosten für die Leistung. Je mehr Rendering jedoch an die Graphics Processing Unit (GPU) übergeben werden kann, desto mehr Leistungsvorteile sind möglich. Die Hardwarerenderingpipeline der WPF-Anwendung kann in vollem Umfang die Vorteile der Microsoft DirectX-Features für Hardware nutzen, die mindestens Microsoft DirectX Version 7.0 unterstützt. Weitere Optimierungen lassen sich bei Hardware erzielen, die Microsoft DirectX Version 7.0 und PixelShader 2.0+-Features unterstützt.
Softwarerenderingpipeline
Die Softwarerenderingpipeline von WPF ist vollständig CPU-gebunden. WPF nutzt die Vorteile der SSE- und SSE2-Anweisungssets der CPU, um eine optimierte und mit allen Features ausgestattete Rasterisierungsfunktion zu implementieren. Wenn beliebige Anwendungsfunktionalität nicht mit der Hardwarerenderingpipeline gerendert werden kann, kann nahtlos auf die Software zurückgegriffen werden.
Das größte Leistungsproblem, das beim Rendern im Softwaremodus auftreten kann, betrifft die Füllrate, die als Anzahl der Pixel definiert ist, die gerendert werden. Wenn Sie Bedenken hinsichtlich der Leistung im Softwarerenderingmodus haben, minimieren Sie die Häufigkeit, mit der ein Pixel neu gezeichnet wird. Beispielsweise werden bei einer Anwendung mit einem blauen Hintergrund, die dann ein leicht transparentes Bild auf diesem Hintergrund rendert, alle Pixel der Anwendung zweimal gerendert. Deshalb nimmt das Rendern der Anwendung inklusive Bild doppelt soviel Zeit in Anspruch wie das alleinige Rendern des blauen Hintergrunds.
Renderingebenen für Grafiken
Möglicherweise ist es sehr schwierig, die Hardwarekonfiguration vorherzusagen, auf der die Anwendung ausgeführt wird. Sie sollten jedoch einen Entwurf in Betracht ziehen, der es der Anwendung ermöglicht, bei der Ausführung auf unterschiedlicher Hardware nahtlos zwischen den Features zu wechseln. Auf diese Weise können die Vorteile der jeweiligen Hardwarekonfiguration vollständig genutzt werden.
Zu diesem Zweck stellt WPF Funktionalität bereit, um die Grafikfähigkeit eines Systems zur Laufzeit zu bestimmen. Die Grafikfähigkeit wird durch die Kategorisierung der Videokarte als eine der drei Ebenen der Renderingfähigkeit bestimmt. WPF macht eine API verfügbar, mit der eine Anwendung die Ebene der Renderingfähigkeit abfragen kann. Je nach der von der Hardware unterstützten Renderingebene kann die Anwendung zur Laufzeit dann verschiedenen Codepfaden folgen.
Folgende Features der Grafikhardware wirken sich besonders stark auf die Renderingebenen aus:
Video-RAM: Der Umfang des Video-Arbeitsspeichers der Grafikhardware bestimmt die Größe und Anzahl der Puffer, die für die Zusammensetzung von Grafiken verwendet werden können.
Pixelshader: Ein Pixelshader ist eine Grafikverarbeitungsfunktion, die Effekte auf der Basis einzelner Pixel berechnet. Je nach Auflösung der angezeigten Grafiken müssen möglicherweise für jeden angezeigten Frame mehrere Millionen Pixel verarbeitet werden.
Vertexshader: Ein Vertexshader ist eine Grafikverarbeitungsfunktion, die mathematische Operationen für die Vertexdaten des Objekts ausführt.
Unterstützung von Mehrfachtexturen: Hierbei handelt es sich um die Fähigkeit, während eines Blendingvorgangs mehrere unterschiedliche Texturen auf ein 3D-Grafikobjekt anzuwenden. Der Grad der Unterstützung von Mehrfachtexturen hängt von der Anzahl der Mehrfachtextureinheiten in der Grafikhardware ab.
Mithilfe der Features Pixelshader, Vertexshader und Mehrfachtextur werden bestimmte DirectX-Versionsebenen definiert, mit denen wiederum die unterschiedlichen Renderingebenen in WPF definiert werden.
Die Features der Grafikhardware bestimmen die Renderingfähigkeit einer WPF-Anwendung. Das WPF-System definiert drei Renderingebenen:
Renderingebene 0 (null) Keine Grafikhardwarebeschleunigung. Die DirectX-Versionsebene liegt in einer niedrigeren Version als 7.0 vor.
Renderingebene 1 Eingeschränkte Grafikhardwarebeschleunigung. Die DirectX-Versionsebene liegt in mindestens Version 7.0 und einer niedrigeren Version als 9.0 vor.
Renderingebene 2 Die meisten Grafikfeatures verwenden die Grafikhardwarebeschleunigung. Die DirectX-Versionsebene liegt mindestens in Version 9.0 vor.
Weitere Informationen über die WPF-Renderingebenen finden Sie unter Renderingebenen für Grafiken.
Siehe auch
Konzepte
Optimieren der WPF-Anwendungsleistung
Optimieren der Leistung: Layout und Entwurf
Optimieren der Leistung: 2D-Grafiken und Bildverarbeitung
Optimieren der Leistung: Objektverhalten
Optimieren der Leistung: Anwendungsressourcen
Optimieren der Leistung: Datenbindung