Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den interna arkitekturen i WPF har två renderingspipelines, maskinvara och programvara. Det här avsnittet innehåller information om dessa återgivningspipelines som hjälper dig att fatta beslut om prestandaoptimering av dina program.
Pipeline för maskinvarurendering
En av de viktigaste faktorerna för att fastställa WPF-prestanda är att det är återgivningsbundet – ju fler bildpunkter du måste återge, desto större blir prestandakostnaden. Men ju mer rendering som kan avlastas till grafikprocessorn (GPU), desto fler prestandafördelar kan du få. WPF-programmets maskinvarurenderingspipeline drar full nytta av Microsoft DirectX-funktioner på maskinvara som stöder minst Microsoft DirectX version 7.0. Ytterligare optimeringar kan göras av maskinvara som stöder microsoft DirectX version 7.0 och PixelShader 2.0+-funktioner.
Pipeline för programvarurendering
WPF-programrenderingspipelinen är helt CPU-bunden. WPF drar nytta av SSE- och SSE2-instruktionsuppsättningarna i processorn för att implementera en optimerad, fullständig programvarurasteriserare. Att återgå till mjukvara sker sömlöst när applikationsfunktionalitet inte kan renderas med hjälp av maskinvarurenderingspipelinen.
Det största prestandaproblemet du kommer att stöta på när du återger i programvaruläge är relaterat till fyllningshastigheten, som definieras som antalet bildpunkter som du återger. Om du är orolig för prestanda i programrenderingsläge kan du försöka minimera antalet gånger en pixel ritas om. Om du till exempel har ett program med en blå bakgrund, som sedan renderar en något transparent bild över den, renderar du alla bildpunkter i programmet två gånger. Därför tar det dubbelt så lång tid att återge programmet med bilden än om du bara hade den blå bakgrunden.
Grafikrenderingsnivåer
Det kan vara mycket svårt att förutsäga maskinvarukonfigurationen som programmet kommer att köras på. Men du kanske vill överväga en design som gör att ditt program smidigt kan växla funktioner när det körs på olika maskinvara, så att det kan dra full nytta av varje maskinvarukonfiguration.
För att uppnå detta tillhandahåller WPF funktioner för att fastställa grafikkapaciteten i ett system i realtid. Grafikfunktionen bestäms genom att grafikkortet kategoriseras som en av tre kapacitetsnivåer för återgivning. WPF exponerar ett API som gör att ett program kan köra frågor mot renderingskapacitetsnivån. Ditt program kan sedan använda olika kodsökvägar vid körning beroende på vilken renderingsnivå som stöds av maskinvaran.
Funktionerna i grafikmaskinvaran som mest påverkar nivåerna på renderingsnivån är:
Video RAM Mängden videominne på grafikmaskinvaran avgör storleken och antalet buffertar som kan användas för att skapa grafik.
Pixelskuggare En pixelskuggning är en grafikbearbetningsfunktion som beräknar effekter per bildpunkt. Beroende på upplösningen för den visade grafiken kan det finnas flera miljoner pixlar som måste bearbetas för varje visningsram.
Hörnskuggning En hörnskuggning är en grafikbearbetningsfunktion som utför matematiska åtgärder på objektets hörndata.
Flertextursstöd Flertextursstöd avser möjligheten att tillämpa två eller flera distinkta texturer vid en blandningsoperation på ett 3D-grafikobjekt. Graden av stöd för flera textningar bestäms av antalet flertextenheter på grafikmaskinvaran.
Funktionerna pixelskuggning, hörnskuggning och flertextur används för att definiera specifika DirectX-versionsnivåer, som i sin tur används för att definiera de olika renderingsnivåerna i WPF.
Funktionerna i grafikmaskinvaran avgör återgivningsfunktionen för ett WPF-program. WPF-systemet definierar tre renderingsnivåer:
Renderingsnivå 0 Ingen maskinvaruacceleration för grafik. DirectX-versionsnivån är mindre än version 7.0.
Återgivningsnivå 1 Partiell maskinvaruacceleration för grafik. DirectX-versionsnivån är större än eller lika med version 7.0 och mindre än version 9.0.
Renderingsnivå 2 De flesta grafikfunktioner använder maskinvaruacceleration för grafik. DirectX-versionsnivån är större än eller lika med version 9.0.
Mer information om WPF-renderingsnivåer finns i Grafikrenderingsnivåer.
Se även
.NET Desktop feedback