Output della grafica 2D con GDI: Diretto o Buffered?

Abbiamo creato un benchmark e confrontato 15 schede grafiche per analizzare i problemi.

Avatar di Tom's Hardware

a cura di Tom's Hardware

Output della grafica 2D con GDI: Diretto o Buffered?

Non importa il modo in cui interagiscono XP, Vista o Windows 7 con GDI; da un punto vista della programmazione, i metodi di codifica rimangono tutti gli stessi. Il modo in cui differiscono queste implementazioni è una cosa che abbiamo coperto nella precedente sezione di questa storia. Come tutto ciò funziona su questi sistemi operativi è una cosa che copriamo in questa sezione.

Comandi Line-drawing

Tutto è basato su una collezione ben stabilita di istruzioni di disegno standardizzate. Dato che i dettagli di queste istruzioni cadono al di fuori dello scopo di questa storia, diciamo solo quanto segue: ognuna delle grafiche primitive, incluse linee, curve, poligoni, rettangoli ed ellissi ha il proprio comando ben definito, incluse le proprietà come il riempimento dell'area, lo spessore della linea, il colore e così via. Descriveremo questi comandi insieme ai parametri associati che potrebbero assumere, così come sono stati passati alla GDI. Tutto ciò che accade dopo, è comunque al di fuori del controllo attivo dell'applicazione.

Disegno diretto e buffered: confrontare formiche con elefanti

In linea di principio, non dovrebbe fare la differenza se un milione di formiche trasportano granelli di sabbia dal punto A al punto B o se caricate un grande container pieno di sabbia sulla schiena di un elefante e spostate tutta questa sabbia in una singola azione. Entrambi gli approcci raggiungono lo stesso obiettivo.

Tuttavia, i due approcci differiscono: l'elefante richiede molto meno traffico tra i due punti finali. Coordinare gli sforzi di un milione di formiche richiede più tempo e sforzi anziché caricare e sollevare un singolo container su un elefante.

Il beneficio del metodo delle formiche è che non vengono richiesti contenitori aggiuntivi (o buffer) per spostare i materiali. Inoltre, quando devono essere spostati solo pochi granelli di sabbia, le formiche sono più efficienti e flessibili di un elefante. In breve, si ritorna sempre al tipo di attività e ai dati in considerazione per vedere quale dei due approcci è migliore. Ora, diamo uno sguardo al procedimento di creazione attraverso la GDI.

png

png

Appena devono essere renderizzati comandi di disegno più complessi, il metodo buffer lavora più rapidamente. Lo svantaggio è una forma d'archiviazione temporanea (chiamata device-independent bitmap [DIB]) che equivale in dimensione alla regione di display visibile che è stata richiesta.

png

Fortunatamente, il costo delle risorse è solitamente più che bilanciato dall'incremento nella velocità di rendering che offre questo approccio. Certamente, questo significa anche che quando vengono richiesti solo piccoli cambiamenti, l'intero buffer deve essere popolato e poi copiato verso la scheda grafica o il manager della finestra. Diamo uno sguardo a un caso particolare con un output diretto abilitato.