.NET Framework 4 - Windows Presentation Foundation Optimizing Performance: Taking Advantage of Hardware The internal architecture of WPF has two rendering pipelines, hardware and software. This topic provides information about these rendering pipelines to help you make decisions about performance optimizations of your applications.

Hardware Rendering Pipeline
One of the most important factors in determining WPF performance is that it is render bound—the more pixels you have to render, the greater the performance cost. However, the more rendering that can be offloaded to the graphics processing unit (GPU), the more performance benefits you can gain. The WPF application hardware rendering pipeline takes full advantage of Microsoft DirectX features on hardware that supports a minimum of Microsoft DirectX version 7.0. Further optimizations can be gained by hardware that supports Microsoft DirectX version 7.0 and PixelShader 2.0+ features.

Software Rendering Pipeline
The WPF software rendering pipeline is entirely CPU bound. WPF takes advantage of the SSE and SSE2 instruction sets in the CPU to implement an optimized, fully-featured software rasterizer. Fallback to software is seamless any time application functionality cannot be rendered using the hardware rendering pipeline. The biggest performance issue you will encounter when rendering in software mode is related to fill rate, which is defined as the number of pixels that you are rendering. If you are concerned about performance in software rendering mode, try to minimize the number of times a pixel is redrawn. For example, if you have an application with a blue background, which then renders a slightly transparent image over it, you will render all of the pixels in the application twice. As a result, it will take twice as long to render the application with the image than if you had only the blue background. Graphics Rendering TiersIt may be very difficult to predict the hardware configuration that your application will be running on. However, you might want to consider a design that allows your application to seamlessly switch features when running on different hardware, so that it can take full advantage of each different hardware configuration. To achieve this, WPF provides functionality to determine the graphics capability of a system at runtime. Graphics capability is determined by categorizing the video card as one of three rendering capability tiers. WPF exposes an API that allows an application to query the rendering capability tier. Your application can then take different code paths at run time depending on the rendering tier supported by the hardware. The features of the graphics hardware that most impact the rendering tier levels are: Video RAM The amount of video memory on the graphics hardware determines the size and number of buffers that can be used for compositing graphics. Pixel Shader A pixel shader is a graphics processing function that calculates effects on a per-pixel basis. Depending on the resolution of the displayed graphics, there could be several million pixels that need to be processed for each display frame. Vertex Shader A vertex shader is a graphics processing function that performs mathematical operations on the vertex data of the object. Multitexture Support Multitexture support refers to the ability to apply two or more distinct textures during a blending operation on a 3D graphics object. The degree of multitexture support is determined by the number of multitexture units on the graphics hardware.
The pixel shader, vertex shader, and multitexture features are used to define specific DirectX version levels, which, in turn, are used to define the different rendering tiers in WPF. The features of the graphics hardware determine the rendering capability of a WPF application. The WPF system defines three rendering tiers: Rendering Tier 0 No graphics hardware acceleration. The DirectX version level is less than version 7.0. Rendering Tier 1 Partial graphics hardware acceleration. The DirectX version level is greater than or equal to version 7.0, and lesser than version 9.0. Rendering Tier 2 Most graphics features use graphics hardware acceleration. The DirectX version level is greater than or equal to version 9.0.
For more information on WPF rendering tiers, see Graphics Rendering Tiers.

See Also
|
.NET Framework 4 - Windows Presentation Foundation Optimieren der Leistung: Vorteile der Hardware nutzen 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- Funktionen 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+-Funktionen 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 Funktionen 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 GrafikenMö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
|