OpenGL, specifiche standard ed estensioni

La libreria grafica OpenGL e' in continuo sviluppo. Negli ultimi anni sono stati redatti diversi standard, l'ultima versione e' la 1.5 rilasciata nell'estate 2003. Oltre a queste specifiche adottate ufficialmente dall'ARB diverse aziende hanno sviluppato nuove funzioni non standard che hanno portato alla realizzazione di implementazioni diversificate tra loro, sia nella versione dello standard adottato sia nel numero e nel tipo delle estensioni non standard supportate. Questo modo di operare pur dando la massima liberta' di sviluppo ha avuto come conseguenza non poca confusione e disorientamento tra utenti e sviluppatori.

Una degli obiettivi progettuali di OpenGL, a partire dalla versione 1.1, era quello di garantire un meccanismo per la gestione delle estensioni attraverso il quale le nuove implementazioni potevano fornire features aggiornate e tenere il passo con le nuove tecnologie senza dover obbligare gli utenti con implementazioni piu' vecchie ad aggiornare l'hardware del proprio sistema. In sostanza questo meccanismo permette di controllare se il sistema fornisce una determinata estensione, se quest'ultima e' presente verra' utilizzata altrimenti l'applicazione puo' scegliere se adottare una tecnica piu' lenta per aggirare il problema oppure terminare con una segnalazione.

Nuovi standard ed estensioni

Dopo aver stabilito uno standard di riferimento, per mantenere vivo lo sviluppo della libreria e' stata lasciata la possibilita' alle aziende facenti parte dell'ARB di inserire delle funzioni personalizzate a fianco di quelle standard all'interno delle proprie implementazioni.
Ecco i tipi di estensioni OpenGL piu' comuni:

HP   – Hewlett-Packard
IBM  – International Business Machines
KTX  – Kinetix (3D Studio Max)
INTEL– Intel
NV   – NVIDIA Corporation
MESA – Implementazione software OpenGL di Brian Paul
SGI  – Silicon Graphics
SGIX – Silicon Graphics (sperimentale)
SUN  – Sun Microsystems
WIN  – Microsoft

Ad esempio NVIDA puo' fornire una propria estensione OpenGL che e' disponibile solo agli utenti dotati di una scheda NVIDA di ultima generazione.

Se una estensione si rivela particolarmente utile puo' essere che altre aziende comincino ad utilizzarla, in questo caso l'estensione perde il riferimento all'azienda che l'ha promossa e acquista il prefisso EXT. Infine se questa estensione e' molto diffusa dopo un certo periodo di tempo viene resa ufficiale dall'Architecure Review Board e assume il prefisso ARB.

Le estensioni ufficialmente riconosciute vengono prese in considerazione quando si tratta di definire un nuovo standard. Ad esempio le specifiche di OpenGL 1.2 sono composte dalle funzioni delle versioni precedenti piu' le estensioni EXT e ARB che si sviluppate dopo il rilascio del vecchio standard 1.1.

Come ottenere le nuove versioni di OpenGL

Naturalmente e' bene tenere aggiornato il proprio sistema in modo da poter godere a pieno delle nuove applicazioni che sfruttano OpenGL e il modo piu' semplice per farlo e' installare l'ultima versione di OpenGL.
In realta', pero', non c'e' un unico file binario che ci permetta di accedere all'ultima versione ma bisogna aggiornare il sistema indirettamente.
Dato che OpenGL fornisce lo standard ma non l'implementazione tocca alle case che forniscono le schede video cablare sulle proprie schede le ultime estensioni OpenGL. Inoltre sempre a loro tocca fornire il software da installare sulla macchina (i driver) che sia in grado di accedere a queste funzioni.
  
Sia su sistemi Windows che su sistemi Linux e' quindi necessario installare i driver aggiornati della propria scheda video. Senza l'aggiornamento una nuova applicazione che tenta di accedere alle estensioni si blocchera' oppure dovra' simulare lei stessa la funzione richiesta via software con evidente perdita di performance.

I driver aggiornano l'implementazione di OpenGL alla versione supportata della scheda. In questo modo l'applicazione puo' accedere alle estensioni che nel migliore di casi saranno implementate in hardware. Se invece l'estensione non e' cablata, ad esempio su una scheda superata, i driver simuleranno almeno in software le nuove funzioni che non sono implementate in hardware. Attenzione pero', le implementazioni delle estensioni fornite dai driver, pur non essendo all'altezza di quelle stampate direttamente sulla scheda saranno comunque molto piu' veloci di quelle che un eventuale applicazione potrebbe fornire poiche' chi ha scritto i driver conosce la scheda su cui si sta lavorando e puo' fare delle ottimizzazioni specifiche.

Solitamente in ambiente Linux le distribuzioni sono dotate della libreria Mesa. Mesa e' una implementazione software di OpenGL, la versione attuale e' la 6.0 e supporta pienamente le specifiche dello standard 1.5. Essendo Mesa una libreria software e' molto lenta ma fortunatamente essa non e' fornita stand-alone bensi' come parte dei driver XFree86/DRI (Direct Rendering Infrastructure) che permette di avere prestazioni accettabili.
In ogni caso e' bene utilizzarla solo nei seguenti casi:

- La scheda video non supporta OpenGL (ad esempio Matrox)
- Non sono disponibili driver aggiornati per la scheda
- La scheda video e' molto vecchia e supporta uno standard OpenGL superato

Per quanto riguarda la libreria GLU l'ultima versione disponibile e' la 1.3 che e' compresa nel codice sorgente di Mesa, anche se e' stata sviluppata dalla SGI, ed e' quindi gia' integrata in XFree86.

In ogni caso e' bene consultare il sito della casa madre della scheda video per avere maggiori informazioni.
Per quanto riguarda l'aggiornamento del proprio sistema Linux e' utile visitare i siti della libreria Mesa 3D, del  Direct Rendering Open Source Project  ed infine il sito del server grafico  XFree86 .

Privacy Policy