Banding su Windows Phone

Updated on 2012-04-03 08:19

Anche se non sono un grafico, aver lavorato per diversi anni come redattore per Hardware Upgrade e, in particolare, fare recensioni di schede video, mi ha reso particolarmente sensibile ad alcuni artefatti grafici tipici delle schede di un tempo. Dovete sapere, infatti, che fino a quando il monopolio delle schede video acceleratrici 3D era in mano a 3dfx Interactive (e qui una lacrima riga il mio viso), buona parte delle elaborazioni grafiche veniva eseguita a 16 bit. Per chi non lo sapesse, questo significa che il numero massimo di colori visualizzabili sullo schermo era pari a 65536, tanti potreste pensare voi, ma in realtà pochissimi in molte circostanze.

Il problema si pone in particolare quando è necessario sfruttare un'ampio spettro di sfumature di uno stesso colore. In questo specifico ambito i 16 bit mostrano tutti i loro limiti e gli oltre 16 milioni di colori che oggi ammiriamo grazie ai 32 bit diventano indispensabili. L'effetto più evidente che si nota quando il numero di colori diventa insufficiente è il cosiddetto banding.

L'immagine sopra esposta ben evidenzia la problematica. A questo punto alcuni si staranno chiedendo: cosa c'entra il banding con i Windows Phone? Purtroppo molto perché Microsoft ha deciso di impostare 16 bit come profondità di colore predefinita delle applicazioni Windows Phone sviluppate in Silverlight. La motivazione è presto detta: 16 bit richiedono molta meno potenza di calcolo, molta meno memoria video e di sistema, oltre a rappresentare il minimo comune denominatore dei colori supportati dagli schermi sui Windows Phone.

Ecco quindi che, esattamente come alla fine degli anni 90 abbiamo dovuto lottare per conquistare i 32 bit nella grafica tridimensionale dei videogiochi, oggi ci tocca fare altrettanto con i Windows Phone. Fortunatamente, contrariamente all'epoca, la scelta di Microsoft non è dettata da limiti hardware, ma da una scelta votata all'ottimizzazione delle risorse di un telefono, il che significa che per abilitare i 32 bit nelle vostre app per Windows Phone non dovrete fare altro che aprire il file WMAppManifest.xml ed impostare l'attributo BitsPerPixel a 32.

Controindicazioni? In teoria vi macchierete del crimine di non risparmiare le risorse hardware del Windows Phone sul quale gira la vostra app, ma onestamente a mio parere è più alto il rischio di fare brutta figura con il banding, che non quello di perdere qualche decimale di batteria in più. Detto questo, valutate su uno smartphone (e non sull'emulatore) l'entità della problematica e, eventualmente, prendete le dovute contromisure.