Delen via


Prestaties optimaliseren: profiteren van hardware

De interne architectuur van WPF heeft twee renderingpijplijnen, hardware en software. Dit onderwerp bevat informatie over deze renderingpijplijnen om u te helpen beslissingen te nemen over prestatieoptimalisaties van uw toepassingen.

Hardware Rendering-pijplijn

Een van de belangrijkste factoren bij het bepalen van WPF-prestaties is dat deze afhankelijk is van de weergave, hoe meer pixels u moet weergeven, hoe hoger de prestatiekosten. Hoe meer rendering kan worden uitbesteed aan de GPU (Graphics Processing Unit), hoe meer prestatievoordelen u kunt behalen. De hardwarerenderingspijplijn van de WPF-toepassing maakt volledig gebruik van Microsoft DirectX-functies op hardware die minimaal Microsoft DirectX-versie 7.0 ondersteunt. Verdere optimalisaties kunnen worden verkregen door hardware die ondersteuning biedt voor Microsoft DirectX-versie 7.0- en PixelShader 2.0+-functies.

Software-renderpijplijn

De WPF-softwarerenderingspijplijn is volledig afhankelijk van de CPU. WPF maakt gebruik van de SSE- en SSE2-instructiesets in de CPU om een geoptimaliseerde, volledig functionele softwarerasterizer te implementeren. Terugval naar software is naadloos wanneer toepassingsfunctionaliteit niet kan worden weergegeven met behulp van de hardwarerenderingspijplijn.

Het grootste prestatieprobleem dat u ondervindt bij het weergeven in de softwaremodus, is gerelateerd aan de vulsnelheid, die wordt gedefinieerd als het aantal pixels dat u weergeeft. Als u zich zorgen maakt over de prestaties in de softwarerenderingsmodus, probeert u het aantal keren dat een pixel opnieuw wordt getekend, te minimaliseren. Als u bijvoorbeeld een toepassing hebt met een blauwe achtergrond, die vervolgens een licht transparante afbeelding over de toepassing weergeeft, worden alle pixels in de toepassing twee keer weergegeven. Als gevolg hiervan duurt het tweemaal zo lang om de toepassing weer te geven met de afbeelding dan als u alleen de blauwe achtergrond had.

Grafische weergave-niveaus

Het kan erg moeilijk zijn om de hardwareconfiguratie te voorspellen waarop uw toepassing wordt uitgevoerd. U kunt echter overwegen om een ontwerp te overwegen waarmee uw toepassing naadloos overschakelt naar functies wanneer deze op verschillende hardware wordt uitgevoerd, zodat deze volledig kan profiteren van elke verschillende hardwareconfiguratie.

Om dit te bereiken, biedt WPF functionaliteit om de grafische mogelijkheden van een systeem tijdens runtime te bepalen. De grafische capaciteit wordt bepaald door de videokaart te categoriseren als een van de drie renderniveaus. WPF maakt een API beschikbaar waarmee een toepassing een query kan uitvoeren op de renderingfunctionaliteitslaag. Uw toepassing kan vervolgens verschillende codepaden uitvoeren tijdens runtime, afhankelijk van de renderinglaag die wordt ondersteund door de hardware.

De functies van de grafische hardware die het meest van invloed zijn op de renderinglaagniveaus zijn:

  • Video RAM-geheugen De hoeveelheid videogeheugen op de grafische hardware bepaalt de grootte en het aantal buffers dat kan worden gebruikt voor het compositeren van afbeeldingen.

  • Pixel Shader A pixel shader is een grafische verwerkingsfunctie waarmee effecten per pixel worden berekend. Afhankelijk van de resolutie van de weergegeven afbeeldingen, kunnen er enkele miljoenen pixels zijn die voor elk weergaveframe moeten worden verwerkt.

  • Vertex Shader Een vertex shader is een grafische verwerkingsfunctie die wiskundige bewerkingen uitvoert op de vertexgegevens van het object.

  • Ondersteuning voor multitexture ondersteuning voor multitexture verwijst naar de mogelijkheid om twee of meer verschillende patronen toe te passen tijdens een mengbewerking op een 3D-grafisch object. De mate van ondersteuning voor multitexture wordt bepaald door het aantal multitexture-eenheden op de grafische hardware.

De functies pixel-shader, hoekpunt-shader en multitexture worden gebruikt om specifieke DirectX-versieniveaus te definiƫren, die op hun beurt worden gebruikt om de verschillende renderinglagen in WPF te definiƫren.

De functies van de grafische hardware bepalen de renderingmogelijkheden van een WPF-toepassing. Het WPF-systeem definieert drie renderinglagen:

  • Rendering Tier 0 Geen hardwareversnelling voor afbeeldingen. Het Niveau van de DirectX-versie is kleiner dan versie 7.0.

  • Rendering Tier 1 Gedeeltelijke grafische hardwareversnelling. Het DirectX-versieniveau is groter dan of gelijk aan versie 7.0 en minder dan versie 9.0.

  • Rendering Tier 2 De meeste grafische eigenschappen maken gebruik van grafische hardwareversnelling. Het Niveau van de DirectX-versie is groter dan of gelijk aan versie 9.0.

Zie Graphics Rendering Tiersvoor meer informatie over WPF-renderinglagen.

Zie ook