Quali sono i diversi tipi di estensioni OpenGL®?

Esistono diverse estensioni OpenGL®, utilizzate principalmente per aiutare a gestire e mantenere la struttura ordinata delle librerie OpenGL®. Esistono quattro tipi principali di estensioni OpenGL®: vendor, approvato, generico e core. Le estensioni approvate, generiche e core denotano tutte funzioni e librerie che, in qualche modo, si stanno muovendo lungo un percorso verso l’inclusione nella distribuzione generale del kit di sviluppo OpenGL®. Le estensioni del fornitore sono funzioni personalizzate che si applicano a specifici ambienti hardware o software. Ci sono alcuni altri tipi, sebbene siano più per la sottoclassificazione delle molte estensioni esistenti.

Uno dei motivi per cui esistono diversi tipi di estensioni OpenGL® è l’uso diffuso delle librerie principali e la quantità potenzialmente confusa di codice proprietario creato per estenderlo. L’OpenGL® Architecture Review Board (ARB) aiuta a mantenere e applicare lo standard OpenGL® e a gestire le estensioni. Molte estensioni iniziano come estensioni del fornitore o estensioni onnipresenti e possono, nel tempo, essere utilizzate da più fornitori, guadagnandosi il titolo di un’estensione generica. Le estensioni generiche possono quindi essere riviste dall’ARB e diventare estensioni approvate dall’ARB che molto probabilmente si uniranno alle estensioni principali.

Le estensioni Vendor OpenGL® sono funzioni implementate dai produttori di hardware grafico o sistemi operativi. Questi tipi di estensioni consentono a un produttore di migliorare o introdurre nuove funzionalità per le proprie prestazioni grafiche e quindi rendere tali miglioramenti disponibili per i programmi OpenGL®. Tutte le estensioni del fornitore iniziano con un codice assegnato da ARB per rappresentare il nome del produttore, che indica l’ambiente in cui la funzione potrebbe essere disponibile.

Le estensioni OpenGL® generiche sono funzioni che sono state utilizzate e implementate da più produttori e non devono più essere designate con codici di prefisso fornitore speciali. Non tutte le estensioni generiche devono essere implementate per mantenere la conformità con lo standard OpenGL®. Un’estensione generica utilizza il prefisso GL_EXT prima del nome della funzione o della costante.

Le estensioni OpenGL® approvate sono quelle che sono state adottate da più di un produttore e sono state riviste dall’ARB, consentendo loro di diventare parte della normale libreria OpenGL®. Le funzioni di questo tipo vengono generalmente implementate da tutti i produttori, indipendentemente da quale fornitore abbia effettivamente inventato l’estensione e indipendentemente dal fatto che gli altri fornitori dispongano di hardware in grado di supportare le funzioni richieste. Questo tipo di estensione porta il prefisso GL_ARB.

Le estensioni Core OpenGL® sono funzioni in grado di aggiornare le prestazioni dei programmi meno recenti consentendo chiamate a versioni precedenti della funzione OpenGL® per eseguire il codice più recente. Quando vengono rilasciate nuove versioni di OpenGL®, le nuove estensioni di base possono essere richiamate senza problemi da un programma precedente senza la necessità di modificare il codice sorgente. Nonostante la comodità di migliorare la compatibilità con le versioni precedenti, le estensioni principali di OpenGL® possono ancora essere deprezzate nel tempo.