Che cos’è 2D OpenGL®?

La Open Graphics Library® (OpenGL®) è principalmente un’interfaccia di programmazione che consente alle applicazioni software di interagire con l’hardware grafico e creare scene tridimensionali (3D) in modo rapido ed efficiente. Utilizzando tecniche di programmazione OpenGL® bidimensionale (2D), l’accelerazione hardware fornita dalla libreria può migliorare le prestazioni e, a volte, la facilità di programmazione di software che non utilizzano necessariamente modelli o trasformazioni 3D. Il metodo più comune per utilizzare 2D OpenGL® consiste nel disegnare quadrilateri, o rettangoli, che sono strutturati con un’immagine, creando effettivamente un oggetto nello spazio 3D da un’immagine. Una volta stabiliti, questi quadrilateri possono essere manipolati, sia con metodi 2D rigorosi, sia trasformandoli con matrici 3D per effetti speciali che altrimenti sarebbero difficili da realizzare solo con la grafica raster 2D. Ci sono alcune complicazioni che l’utilizzo di una libreria 3D comporta quando la si utilizza solo per la grafica 2D, inclusa l’iper-precisione che può rendere complesso isolare le posizioni di un singolo pixel, oltre a richiedere supporto hardware 3D per un programma che potrebbe non richiedere esso.

Molti sviluppatori di hardware e software forniscono driver e interfacce di programmazione astratta (API) personalizzate che rendono i loro prodotti particolari completamente compatibili con la libreria OpenGL®. Questa diffusa accettazione di uno standard aperto offre ai programmatori un modo per accedere direttamente all’hardware su un’ampia varietà di sistemi. L’accelerazione hardware fornita quando si utilizza 2D OpenGL® può consentire a un programma di funzionare in modo più fluido di quanto sarebbe altrimenti possibile. Questa velocità è bilanciata dal fatto che l’utilizzo della pipeline OpenGL® per la grafica può essere molto diverso dall’utilizzo dei tradizionali metodi di programmazione 2D che generalmente non utilizzano un modello di macchina a stati come fa OpenGL®.

La maggior parte dei programmi 2D OpenGL® utilizza rettangoli piatti realizzati nelle stesse proporzioni di un’immagine di trama per ritrarre la grafica. Questo ha il vantaggio di essere molto veloce da rendere, oltre a semplificare la programmazione in modo da utilizzare parte della stessa logica della grafica bufferizzata basata su raster. Alcuni effetti, come il ridimensionamento di un’immagine, la rotazione di un’immagine o l’inversione di un’immagine, possono essere effettivamente eseguiti in modo molto più efficiente utilizzando OpenGL®.

Ci sono alcuni fattori che possono rendere i programmi 2D OpenGL® più complessi di quanto potrebbero essere normalmente altri programmi 2D. Uno di questi fattori è la precisione dei pixel sul display. OpenGL® non equipara una parte del sistema di coordinate virtuali a un pixel su uno schermo, come fa la grafica raster, quindi a volte è necessario utilizzare numeri in virgola mobile per le coordinate dello schermo per evitare spazi vuoti nel display o strani posizionamenti dei pixel.

Un altro problema è che OpenGL® richiede l’uso di una scheda grafica per aumentare la velocità di rendering. Se un’applicazione utilizza OpenGL® per la visualizzazione di un’interfaccia o di una finestra di sistema, i dispositivi che non dispongono di accelerazione grafica potrebbero subire una perdita di prestazioni per la grafica che potrebbe sembrare molto semplice per un utente finale. OpenGL inoltre non fornisce alcun supporto nativo per la visualizzazione del testo, il che significa che la visualizzazione di ampie aree di testo potrebbe richiedere una discreta quantità di codice personalizzato.