I limiti del 2D: uno spazio con molte finestre

Le ultime schede grafiche offrono prestazioni 2D inferiori a quelle di un chip integrato.

Avatar di Tom's Hardware

a cura di Tom's Hardware

I limiti del 2D: uno spazio con molte finestre

Rendering e accelerazione 2D in Windows

Larghezza e altezza sono tutto ciò che serve

Se osservate il rendering 2D all'interno di qualsiasi finestra, noterete che vengono applicate solo due dimensioni: X e Y, o larghezza e altezza. Manca, chiaramente, qualsiasi tipo d'informazione riguardo alla profondità.

In Windows la grafica 2D viene renderizzata grazie al GDI (Graphics Device Interface). Questa interfaccia supporta tutti i linguaggi di programmazione ad alto livello e include tutte le importanti funzioni grafiche necessarie per renderizzare oggetti grafici in 2D. Gli ultimi miglioramenti, come GDI+ e Direct2D, non entrano molto in gioco in questo caso perché GDI è (e rimane) lo strumento più importante per la produzione grafica 2D nelle applicazioni.

Le funzioni critiche per pixel, linee, curve, poligoni, rettangolo, ellissi e così via, inizialmente, erano tutte calcolate sulla CPU. Grazie alla specializzazione delle schede grafiche, le ultime generazioni di hardware forniscono calcoli e rendering 2D più rapidi. Questa forma iniziale di accelerazione 2D rimane importante persino oggi, ma l'accelerazione 2D non è più il focus primario. Per sfruttare al massimo le prestazioni grafiche, abbiamo bisogno di una terza coordinata.

Rendering semplice di più finestre senza accelerazione hardware

Il metodo di rendering 2D originale che si cela dietro la sovrapposizione di finestre è sia semplice che lineare. Bisogna sapere due cose: la prima riguarda l'area su schermo all'interno di qualsiasi finestra che è cambiata (e che deve essere ridisegnata) e secondo, l'ordine nel quale le finestre o gli oggetti si sovrappongono le une con le altre (se è visibile interamente o in parte, o coperta da altre finestre). Questo tipo d'informazione offre due dimensioni e mezza, o una grafica stratificata, mentre una terza coordinata prende un valore 0 (nascosto) o 1 (visibile) come una sorta di "dimensione di supporto". Questo è il motivo per cui avrete sentito esperti Windows parlare di grafica 2.5D.

Z order indica come le finestre sono organizzate e sovrapposte

Dopo aver deciso ordine o visibilità, i contenuti della finestra visibile devono essere disegnati usando funzioni grafiche a due dimensioni. Non è solo necessario per renderizzare i contenuti della finestra completamente visibili, ma lo è anche per amministrare numerosi tipi di informazioni e contenuti visualizzati nella finestra. Che cosa succede, per esempio, quando la finestra viene spostata? Ogniqualvolta un'altra finestra contiene una regione che è parzialmente o completamente esposta, di conseguenza la routine grafica di sistema WM_PAINT deve essere chiamata con un'informazione precisa per indicare quale regione rettangolare deve essere ridisegnata ("dirty rectangle").

Le implementazioni ottimizzate ricostruiranno o ridisegneranno quest'area. Purtroppo, molte implementazioni riprogettano l'intera finestra, malgrado l'accesso rapido a istruzioni più precise, nel caso in cui ci sia bisogno di una riproduzione completa o solo parziale. Questo può avere un profondo impatto sulle prestazioni grafiche. Un altro svantaggio è il ben conosciuto e disprezzato blurring o ripetizione dell'effetto, che spesso si presenta quando le finestre vengono spostate rapidamente sullo schermo di un sistema che non supporta l'accelerazione hardware.

Facciamo un riepilogo di quando abbiamo visto finora. Ci sono finestre individuali, e quelle con contenuti a due dimensioni devono essere disegnate a schermo per essere viste. Queste finestre possono essere spostate arbitrariamente, quindi possono sovrapporsi ed essere parzialmente o completamente oscurate da altre finestre. I contenuti visibili di tutte queste finestre devono essere amministrati, per essere disegnati a schermo con un ritardo minimo assoluto. Sappiamo anche che la sola CPU, persino con processori molto veloci, può essere superata nell'esecuzione di queste operazioni complesse. Che altro c'è da fare, eccetto scaricare tutto ciò sulla scheda video? Che cosa ciò comporti e come suoni semplice nel concetto rispetto alle pratiche attuali, è una cosa che vedremo nella prossima pagina.