Il motore di rendering di Windows Presentation Foundation si poggia sulle funzionalità di Direct3D e delle API che lavorano a stretto contatto con la GPU, il processore della scheda grafica. Questo permette di sfruttare anche questo dispositivo, montato sulla maggior parte dei PC, ottenendo il massimo delle prestazioni con animazioni le fluide possibili.
Su alcuni dispositivi la GPU può però non esserci, il motore di WPF se ne accorge e grava tutto il sistema di rendering sulla CPU principale, lavorando quindi in modalità software. Questo può comunque bastare per fornire semplici animazioni e far procedere correttamente l'applicazione; è possibile inoltre con lo script #23 personalizzare il layout in funzione delle prestazioni della macchina.
In alcuni casi purtroppo, specie in schede grafiche integrate, sebbene il tier di valutazione restituisca un pieno supporto alle funzionalità GPU, per colpa di driver e della GPU stessa si ottengono scarse prestazioni che paradossalmente si possono migliorare escludendo la GPU e facendo lavorare direttamente la CPU. Per forzare questa modalità è possibile ricorrere alla classe HwndTarget che attraverso la proprietà RenderMode permette di forzare la modalità di rendering.
Nell'esempio successivo si veda quindi come ottenere l'oggetto HwndTarget dato l'oggetto visuale figlio della finestra.
public MyWindow() { HwndSource hwndSource = PresentationSource.FromVisual(this); // Ottengo la finestra con composition rendering HwndTarget hwndTarget = hwndSource.CompositionTarget; // Forzo il rendering su CPU hwndTarget.RenderMode = RenderMode.SoftwareOnly; }
Questa soluzione va comunque sempre considerata come ultima possibilità da sfruttare. E' infatti preferibile cercare driver video migliori e avere a disposizione un hardware che supporti le caratteristiche di WPF.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.