Optimieren der Leistung: Vorteile der Hardware nutzen

Die interne Architektur von WPF verfügt über zwei Rendering-Pipelines, Hardware und Software. In diesem Thema finden Sie Informationen zu diesen Rendering-Pipelines, um Entscheidungen über Leistungsoptimierungen Ihrer Anwendungen zu treffen.

Hardware-Rendering-Pipeline

Eine der wichtigsten Faktoren bei der Bestimmung der WPF-Leistung besteht darin, dass sie gebunden ist – je mehr Pixel Sie rendern müssen, desto größer sind die Leistungskosten. Das Rendern, das jedoch auf die Grafikverarbeitungseinheit (GPU) geladen werden kann, desto mehr Leistungsvorteile können Sie gewinnen. Die WPF-Anwendungshardware-Rendering-Pipeline nutzt die Microsoft DirectX-Funktionen auf Hardware, die mindestens Microsoft DirectX Version 7.0 unterstützt. Weitere Optimierungen können von der Hardware gewonnen werden, die Microsoft DirectX Version 7.0 und PixelShader 2.0+-Funktionen unterstützt.

Software-Rendering-Pipeline

Die WPF-Software-Rendering-Pipeline ist vollständig CPU-gebunden. WPF nutzt die SSE- und SSE2-Anweisungssätze in der CPU, um einen optimierten, voll funktionellen Software-Raster zu implementieren. Fallback in Software ist nahtlos, wenn die Anwendungsfunktionalität nicht mithilfe der Hardware-Rendering-Pipeline gerendert werden kann.

Das größte Leistungsproblem, das beim Rendern im Softwaremodus auftritt, ist mit der Füllrate verknüpft, die als Anzahl der Pixel definiert ist, die Sie rendern. Wenn Sie sich um die Leistung im Software-Rendering-Modus kümmern, versuchen Sie, die Anzahl der Zeiten zu minimieren, in denen ein Pixel neu gezeichnet wird. Wenn Sie beispielsweise eine Anwendung mit einem blauen Hintergrund haben, über das dann ein leicht transparentes Bild gerendert wird, werden alle Pixel in der Anwendung zweimal gerendert. Daher dauert es zweimal so lang, bis die Anwendung mit dem Bild gerendert wird, als wenn Sie nur den blauen Hintergrund hätten.

Renderingebenen für Grafiken

Möglicherweise ist es sehr schwierig, die Hardwarekonfiguration vorherzusagen, auf der Ihre Anwendung ausgeführt wird. Möglicherweise sollten Sie jedoch ein Design berücksichtigen, mit dem Ihre Anwendung Features nahtlos auf unterschiedlicher Hardware wechseln kann, damit sie die einzelnen Hardwarekonfigurationen vollständig nutzen kann.

Um dies zu erreichen, stellt WPF Funktionen zum Ermitteln der Grafikfunktionalität eines Systems zur Laufzeit zur Verfügung. Die Grafikfunktionalität wird durch Kategorisierung der Videokarte als einer von drei Rendering-Funktionsstufen bestimmt. WPF stellt eine API bereit, die es einer Anwendung ermöglicht, die Rendering-Funktionalitätsebene abzufragen. Ihre Anwendung kann dann unterschiedliche Codepfade zur Laufzeit verwenden, je nach der vom Gerät unterstützten Rendering-Ebene.

Die Funktionen der Grafikhardware, die sich am stärksten auf die Renderingebenen auswirken, sind:

  • Video-RAM: Die Videospeichermenge der Grafikhardware bestimmt die Größe und Anzahl der Puffer, die für die Zusammensetzung von Grafiken verwendet werden kann.

  • Pixel-Shader: Ein Pixel-Shader ist eine Grafikprozessorfunktion, die Auswirkungen auf eine Pro-Pixel-Basis berechnet. Abhängig von der Auflösung der angezeigten Grafiken kann es mehrere Millionen Pixel geben, die für jeden Frame des Displays verarbeitet werden müssen.

  • Vertex-Shader: Ein Vertex-Shader ist eine Grafikprozessorfunktion, die mathematische Operationen für die Vertexdaten des Objekts ausführt.

  • Multitexturunterstützung: Bei Multitexturunterstützung handelt es sich um die Möglichkeit, zwei oder mehr unterschiedliche Texturen während eines Mischvorgangs für ein 3D-Grafikobjekt anzuwenden. Der Grad der Multitexturunterstützung wird durch die Anzahl der Multitextureinheiten in der Grafikhardware bestimmt.

Die Pixel-Shader-, Vertex-Shader- und Multitextur-Funktionen werden verwendet, um bestimmte DirectX-Versionsstufen zu definieren, die wiederum verwendet werden, um die verschiedenen Rendering-Stufen in WPF zu definieren.

Die Funktionen der Grafikhardware bestimmen die Rendering-Funktionalität einer WPF-Anwendung. Das WPF-System definiert drei Rendering-Ebenen:

  • Renderingebene 0: Keine Beschleunigung der Grafikhardware. Die DirectX-Versionsebene ist kleiner als die Version 7.0.

  • Rendering-Ebene 1-Grafikhardware-Beschleunigung. Die DirectX-Versionsebene ist größer oder gleich Version 7.0 und kleiner als Version 9.0.

  • Renderingebene 2: Die meisten Grafikfunktionen verwenden die Beschleunigung der Grafikhardware. Die DirectX-Versionsebene ist größer als oder gleich der Version 9.0.

Weitere Informationen zur Hardware-Beschleunigung finden Sie unter Rendering-Ebenen für Grafiken.

Weitere Informationen