Ottimizzazione delle prestazioni: sfruttare appieno l'hardware

L'architettura interna di WPF presenta due pipeline di rendering, hardware e software. In questo argomento vengono fornite informazioni su tali pipeline di rendering, in modo da consentire di decidere le operazioni più opportune per ottimizzare le prestazioni delle applicazioni.

Pipeline di rendering hardware

Uno dei fattori più importanti per determinare le prestazioni di WPF consiste nel fatto che queste sono associate al rendering: maggiore è il numero di pixel di cui eseguire il rendering, maggiore sarà l'incidenza sulle prestazioni. Tuttavia, maggiore è il volume di rendering che è possibile scaricare alla graphics processing unit (GPU), maggiori saranno i vantaggi in termini di prestazioni. La pipeline di rendering hardware dell'applicazione WPF sfrutta le funzionalità Microsoft DirectX sull'hardware che supporta almeno Microsoft DirectX versione 7.0. Ulteriori ottimizzazioni possono essere sfruttate dall'hardware che supporta le funzionalità di Microsoft DirectX versione 7.0 e PixelShader 2.0 o superiore.

Pipeline di rendering software

La pipeline di rendering software WPF è totalmente associata alla CPU. WPF sfrutta i set di istruzioni SSE e SSE2 della CPU per implementare un'unità di rasterizzazione software ottimizzata e completa. Il fallback al software risulta semplificato nei casi in cui non è possibile eseguire il rendering di una funzionalità dell'applicazione tramite la pipeline di rendering hardware.

Il problema più rilevante relativamente alle prestazioni si verifica quando il rendering in modalità software è correlato alla velocità di riempimento, definita come numero di pixel di cui si sta eseguendo il rendering. Se si desidera evitare problemi di prestazioni durante il rendering in modalità software, provare a ridurre al minimo il numero di volte in cui un pixel viene ridisegnato. Se, ad esempio, si sta utilizzando un'applicazione con sfondo blu, che esegue il rendering di un'immagine leggermente trasparente sullo sfondo stesso, sarà necessario eseguire due volte il rendering di tutti i pixel dell'applicazione. Di conseguenza, l'operazione di rendering dell'applicazione con l'immagine impiegherà il doppio del tempo rispetto a quello necessario nel caso in cui l'applicazione presenti solo lo sfondo blu.

Livelli di rendering della grafica

Prevedere la configurazione hardware in cui sarà eseguita l'applicazione può essere molto difficile. Tuttavia, è possibile prendere in considerazione una progettazione che consenta di passare facilmente da una funzionalità dell'applicazione all'altra durante l'esecuzione su hardware diverso, in modo da sfruttare appieno tutte le differenti configurazioni hardware.

A tal fine, WPF fornisce le funzionalità necessarie per determinare le funzionalità grafiche di un sistema in fase di esecuzione. Le funzionalità grafiche sono determinate dalla categorizzazione della scheda video come uno dei tre livelli di funzionalità di rendering. WPF espone un'API che consente a un'applicazione di ricercare il livello di funzionalità di rendering. L'applicazione può quindi accettare diversi percorsi del codice in fase di esecuzione, a seconda del livello di rendering supportato dall'hardware.

Di seguito sono riportate le funzionalità dell'hardware grafico che influiscono maggiormente sui livelli di rendering:

  • RAM video: la quantità di memoria video disponibile nell'hardware grafico determina le dimensioni e il numero di buffer che possono essere utilizzati per la composizione della grafica.

  • Pixel shader: un pixel shader è una funzione di elaborazione grafica che calcola gli effetti per singolo pixel. A seconda della risoluzione della grafica visualizzata, può essere necessario elaborare milioni di pixel per ogni fotogramma di visualizzazione.

  • Vertex shader: un vertex shader è una funzione di elaborazione grafica che esegue operazioni matematiche sui dati vertex dell'oggetto.

  • Supporto multitrama: il supporto multitrama fa riferimento alla possibilità di applicare due o più trame distinte durante un'operazione di sfumatura su un oggetto di grafica tridimensionale. Il grado del supporto multitrama è determinato dal numero di unità multitrama dell'hardware grafico.

Le funzionalità pixel shader, vertex shader e multitrama vengono utilizzate per definire specifici livelli di versione di DirectX, che a loro volta consentono di determinare i diversi livelli di rendering in WPF.

Le funzionalità dell'hardware grafico determinano la capacità di rendering di un'applicazione WPF. Nel sistema WPF vengono definiti tre livelli di rendering:

  • Livello di rendering 0: nessuna accelerazione dell'hardware grafico. Il livello di versione di DirectX è inferiore alla versione 7.0.

  • Livello di rendering 1: accelerazione dell'hardware grafico parziale. Il livello di versione di DirectX è superiore o uguale rispetto alla versione 7.0 e inferiore alla versione 9.0.

  • Livello di rendering 2: la maggior parte delle funzionalità grafiche utilizzano l'accelerazione dell'hardware grafico. Il livello di versione di DirectX è superiore o uguale rispetto alla versione 9.0.

Per ulteriori informazioni sui livelli di rendering di WPF, vedere Livelli di rendering della grafica.

Vedere anche

Concetti

Ottimizzazione delle prestazioni di applicazioni WPF

Pianificazione delle prestazioni dell'applicazione

Ottimizzazione delle prestazioni: layout e progettazione

Ottimizzazione delle prestazioni: grafica bidimensionale e creazione di immagini

Ottimizzazione delle prestazioni: comportamento degli oggetti

Ottimizzazione delle prestazioni: risorse di applicazioni

Ottimizzazione delle prestazioni: testo

Ottimizzazione delle prestazioni: associazione dati

Ottimizzazione delle prestazioni: altri suggerimenti