Condividi tramite


Ottimizzazione delle prestazioni: sfruttare i vantaggi dell'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 di WPF è che è legato al rendering: più pixel devono essere renderizzati, maggiore è il costo in termini di prestazioni. Tuttavia, più rendering può essere trasferito all'unità di elaborazione grafica (GPU), maggiori sono i benefici in termini di prestazioni che si possono 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+.

Pipeline di renderizzazione del software

La pipeline di rendering software WPF è completamente basata sulla CPU. WPF sfrutta i set di istruzioni SSE e SSE2 nella CPU per implementare un rasterizzatore software ottimizzato e completo. Il passaggio al software è trasparente ogni volta che le funzionalità dell'applicazione non possono essere eseguite utilizzando 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 richiederà il doppio del tempo rispetto a se avessi solo lo sfondo blu.

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 influiscono maggiormente sui livelli di livello di rendering sono:

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

  • Pixel Shader Un pixel shader è una funzione di elaborazione grafica che calcola gli effetti per pixel. A seconda della risoluzione della grafica visualizzata, potrebbero essere presenti diversi milioni di pixel che devono essere elaborati per ogni frame di visualizzazione.

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

  • supporto multitexture Il supporto multitexture si riferisce alla possibilità di applicare due o più trame distinte durante un'operazione di fusione su un oggetto grafico 3D. Il grado di supporto multitexture è determinato dal numero di unità multitexture 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 grafica. Il livello di versione DirectX è minore della versione 7.0.

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

  • Rendering Livello 2 La maggior parte delle funzionalità grafiche utilizza l'accelerazione della scheda grafica. 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.

Vedere anche