Freigeben über


Optimieren der Leistung: Nutzen der Hardware

Die interne Architektur von WPF verfügt über zwei Renderingpipelines, Hardware und Software. Dieses Thema enthält Informationen zu diesen Renderingpipelinen, um Entscheidungen über Leistungsoptimierungen Ihrer Anwendungen zu treffen.

Hardware-Rendering-Pipeline

Einer der wichtigsten Faktoren bei der Bestimmung der WPF-Leistung ist, dass sie rendering-gebunden ist – je mehr Pixel Sie rendern müssen, desto höher sind die Leistungseinbußen. Je mehr Rendering jedoch in die Grafikverarbeitungseinheit (GPU) entladen werden kann, desto mehr Leistungsvorteile können Sie erzielen. Die Hardware-Rendering-Pipeline der WPF-Anwendung nutzt die Funktionen von Microsoft DirectX auf der Hardware, die mindestens Microsoft DirectX Version 7.0 unterstützt. Weitere Optimierungen können durch Hardware gewonnen werden, die Microsoft DirectX Version 7.0 und PixelShader 2.0+-Features unterstützt.

Software-Rendering-Pipeline

Die WPF-Softwarerenderingpipeline ist vollständig CPU-gebunden. WPF nutzt die SSE- und SSE2-Anweisungssätze in der CPU, um einen optimierten, voll funktionsfähigen Software-Rasterizer zu implementieren. Der Fallback auf die Software erfolgt nahtlos, wenn die Anwendungsfunktionalität nicht über die Hardware-Rendering-Pipeline dargestellt werden kann.

Das größte Leistungsproblem, das beim Rendern im Softwaremodus auftritt, hängt mit der Füllrate zusammen, die als Die Anzahl der Pixel definiert ist, die Sie rendern. Wenn Sie sich gedanken über die Leistung im Softwarerenderingmodus machen, versuchen Sie, die Häufigkeit zu minimieren, mit der ein Pixel neu gezeichnet wird. Wenn Sie beispielsweise eine Anwendung mit einem blauen Hintergrund haben und dann ein leicht transparentes Bild darüber rendert, werden alle Pixel in der Anwendung zweimal gerendert. Daher dauert es doppelt so lange, bis die Anwendung mit dem Bild gerendert wird, als wenn Sie nur den blauen Hintergrund hatten.

Grafik-Rendering-Stufen

Es kann sehr schwierig sein, die Hardwarekonfiguration vorherzusagen, auf der Ihre Anwendung ausgeführt wird. Möglicherweise sollten Sie jedoch ein Design in Betracht ziehen, mit dem Ihre Anwendung Features nahtlos wechseln kann, wenn sie auf unterschiedlicher Hardware ausgeführt werden, damit sie die einzelnen Hardwarekonfigurationen vollständig nutzen kann.

Um dies zu erreichen, stellt WPF Funktionen bereit, um die Grafikfunktion eines Systems zur Laufzeit zu ermitteln. Die Grafikfunktion wird durch kategorisieren der Grafikkarte als eine von drei Renderingfunktionsebenen bestimmt. WPF macht eine API verfügbar, die es einer Anwendung ermöglicht, die Renderfunktionsebene abzufragen. Ihre Anwendung kann dann zur Laufzeit unterschiedliche Codepfade verwenden, je nachdem, welche Renderingebene von der Hardware unterstützt wird.

Die Eigenschaften der Grafikhardware, die sich am stärksten auf die Rendering-Stufen auswirken, sind:

  • Video-RAM Die Menge des Videospeichers auf der Grafikhardware bestimmt die Größe und Anzahl der Puffer, die zum Kompositing von Grafiken verwendet werden können.

  • Pixelshader Ein Pixelshader ist eine Grafikverarbeitungsfunktion, die Effekte pro Pixel berechnet. Je nach Auflösung der angezeigten Grafiken kann es mehrere Millionen Pixel geben, die für jeden Anzeigeframe verarbeitet werden müssen.

  • Vertex-Shader Ein Vertex-Shader ist eine Grafikverarbeitungsfunktion, die mathematische Vorgänge für die Vertexdaten des Objekts ausführt.

  • Multitexture-Unterstützung Die Multitexture-Unterstützung bezieht sich auf die Möglichkeit, zwei oder mehr unterschiedliche Texturen während eines Vermischungsvorgangs auf ein 3D-Grafikobjekt anzuwenden. Der Grad der Multitexturunterstützung wird durch die Anzahl der Multitextureeinheiten auf der Grafikhardware bestimmt.

Die Pixelshader-, Vertex-Shader- und Multitexture-Features werden verwendet, um bestimmte DirectX-Versionsebenen zu definieren, die wiederum zum Definieren der verschiedenen Renderingebenen in WPF verwendet werden.

Die Features der Grafikhardware bestimmen die Renderingfunktion einer WPF-Anwendung. Das WPF-System definiert drei Renderingebenen:

  • Rendering Stufe 0 Keine Grafikhardwarebeschleunigung. Die DirectX-Versionsebene ist kleiner als Version 7.0.

  • Rendern der Ebene 1 Partielle Grafikhardwarebeschleunigung. Die DirectX-Versionsebene ist größer oder gleich Version 7.0 und kleiner als Version 9.0.

  • Rendering-Stufe 2 Die meisten Grafikfeatures verwenden Grafikhardwarebeschleunigung. Die DirectX-Versionsebene ist größer oder gleich Version 9.0.

Weitere Informationen zu den WPF-Rendering-Ebenen finden Sie unter Grafik-Rendering-Ebenen.

Siehe auch