Ottimizzazione delle prestazioni: sfruttare appieno l'hardware

L'architettura interna di WPF include due pipeline di rendering, hardware e software. In questo argomento vengono fornite informazioni su queste pipeline di rendering per prendere decisioni sulle ottimizzazioni delle prestazioni delle applicazioni.

Hardware Rendering Pipeline

Uno dei fattori più importanti per determinare le prestazioni wpf è che è associato al rendering, ovvero più pixel è necessario eseguire il rendering, maggiore è il costo delle prestazioni. Tuttavia, maggiore è il rendering che può essere scaricato nell'unità di elaborazione grafica (GPU), maggiore è il vantaggio delle prestazioni che è possibile ottenere. La pipeline di rendering hardware dell'applicazione WPF sfrutta appieno le funzionalità di Microsoft DirectX sull'hardware che supportano almeno Microsoft DirectX versione 7.0. Altre ottimizzazioni possono essere ottenute dall'hardware che supporta le funzionalità Microsoft DirectX versione 7.0 e PixelShader 2.0+.

Software Rendering Pipeline

La pipeline di rendering software WPF è interamente associata alla CPU. WPF sfrutta i set di istruzioni S edizione Standard e S edizione Standard 2 nella CPU per implementare un rasterizzatore software ottimizzato e completo. Il fallback al software è facile in qualsiasi momento in cui non è possibile eseguire il rendering delle funzionalità dell'applicazione usando la pipeline di rendering hardware.

Il problema di prestazioni più grande che si verifica quando il rendering in modalità software è correlato alla frequenza di riempimento, definita come il numero di pixel di cui si esegue il rendering. Se si è preoccupati per le prestazioni in modalità di rendering software, provare a ridurre al minimo il numero di volte in cui un pixel viene ridisegnato. Ad esempio, se si dispone di un'applicazione con uno sfondo blu, che esegue il rendering di un'immagine leggermente trasparente su di essa, si eseguirà il rendering di tutti i pixel nell'applicazione due volte. Di conseguenza, il rendering dell'applicazione con l'immagine con l'immagine richiederà il doppio del tempo necessario.

Livelli di rendering della grafica

Potrebbe essere molto difficile prevedere la configurazione hardware in cui verrà eseguita l'applicazione. È tuttavia consigliabile prendere in considerazione una progettazione che consenta all'applicazione di cambiare facilmente le funzionalità durante l'esecuzione su hardware diverso, in modo che possa sfruttare appieno ogni configurazione hardware diversa.

A tale scopo, WPF fornisce funzionalità per determinare la funzionalità grafica di un sistema in fase di esecuzione. La funzionalità grafica è determinata dalla categorizzazione della scheda video come uno dei tre livelli di funzionalità di rendering. WPF espone un'API che consente a un'applicazione di eseguire query sul livello di funzionalità di rendering. L'applicazione può quindi accettare percorsi di codice diversi in fase di esecuzione a seconda del livello di rendering supportato dall'hardware.

Le funzionalità dell'hardware grafico che hanno effetto sui livelli di rendering sono:

  • RAM video La quantità di memoria video sull'hardware grafico determina le dimensioni e il numero di buffer che possono essere usati per la composizione della grafica.

  • Pixel shader Un pixel shader è una funzione di elaborazione grafica che calcola gli effetti sui singoli pixel. A seconda della risoluzione della grafica visualizzata, potrebbe essere necessario elaborare diversi milioni di pixel per ogni fotogramma visualizzato.

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

  • Supporto per più trame Il supporto per più trame è la possibilità di applicare due o più trame distinte durante un'operazione di fusione su un oggetto grafico 3D. Il grado di supporto per più trame è determinato dal numero di unità a più trame nell'hardware grafico.

Le funzionalità pixel shader, vertex shader e multitexture vengono usate per definire specifici livelli di versione DirectX, che, a loro volta, vengono usati per definire i diversi livelli di rendering in WPF.

Le funzionalità dell'hardware grafico determinano la funzionalità di rendering di un'applicazione WPF. Il sistema WPF definisce tre livelli di rendering:

  • Livello di rendering 0 Nessuna accelerazione hardware grafico. Il livello di versione DirectX è minore della versione 7.0.

  • Rendering Livello 1 Accelerazione hardware grafica parziale. Il livello di versione DirectX è maggiore o uguale alla versione 7.0 e minore della versione 9.0.

  • Livello di rendering 2 La maggior parte delle funzionalità grafiche usa l'accelerazione hardware grafico. Il livello di versione DirectX è maggiore o uguale alla versione 9.0.

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

Vedi anche