Care sunt diferitele tipuri de extensii OpenGL®?

Există o serie de extensii OpenGL® diferite, cele mai multe utilizate pentru a ajuta la gestionarea și menținerea structurii ordonate a bibliotecilor OpenGL®. Există patru tipuri principale de extensii OpenGL®: furnizor, aprobat, generic și de bază. Extensiile aprobate, generice și de bază denotă toate funcții și biblioteci care, într-un fel, merg pe o cale spre a fi incluse în distribuția generală a kitului de dezvoltare OpenGL®. Extensiile de furnizor sunt funcții personalizate care se aplică unor medii hardware sau software specifice. Există alte câteva tipuri, deși sunt mai multe pentru subclasificarea numeroaselor extensii care există.

Unul dintre motivele pentru care există diferite tipuri de extensii OpenGL® este din cauza utilizării pe scară largă a bibliotecilor de bază și a cantității potențial confuze de cod proprietar creat pentru a-l extinde. OpenGL® Architecture Review Board (ARB) ajută la menținerea și aplicarea standardului OpenGL® și la gestionarea extensiilor. Multe extensii încep fie ca extensii de furnizor, fie ca extensii omniprezente și, în timp, pot fi utilizate de mai mulți furnizori, câștigând titlul unei extensii generice. Extensiile generice pot fi apoi revizuite de ARB și pot deveni extensii aprobate de ARB, care cel mai probabil se vor alătura extensiilor de bază.

Extensiile de furnizor OpenGL® sunt funcții implementate de producătorii de hardware grafic sau de sisteme de operare. Aceste tipuri de extensii permit unui producător să îmbunătățească sau să introducă noi funcționalități în performanța grafică și apoi să pună acele îmbunătățiri disponibile pentru programele OpenGL®. Toate extensiile furnizorului încep cu un cod atribuit de ARB pentru a reprezenta numele producătorului, indicând mediul în care funcția ar putea fi disponibilă.

Extensiile generice OpenGL® sunt funcții care au fost utilizate și implementate de mai mulți producători și nu mai trebuie să fie desemnate cu coduri speciale de prefix de furnizor. Nu toate extensiile generice trebuie implementate pentru a menține conformitatea cu standardul OpenGL®. O extensie generică folosește prefixul GL_EXT înaintea numelui funcției sau constantei.

Extensiile OpenGL® aprobate sunt cele care au fost adoptate de mai mulți producători și au fost revizuite de ARB, permițându-le să devină parte din biblioteca obișnuită OpenGL®. Funcțiile de acest tip devin în general implementate de toți producătorii, indiferent de furnizorul care a inventat de fapt extensia și indiferent dacă ceilalți vânzători au hardware care poate suporta funcțiile solicitate. Acest tip de extensie poartă prefixul GL_ARB.

Extensiile de bază OpenGL® sunt funcții care pot îmbunătăți performanța programelor mai vechi, permițând apelurilor către versiunile anterioare ale funcției OpenGL® pentru a executa cel mai recent cod. Pe măsură ce sunt lansate noi versiuni OpenGL®, noile extensii de bază pot fi apelate fără probleme dintr-un program mai vechi, fără a fi nevoie să schimbați codul sursă. În ciuda confortului îmbunătățirii compatibilității cu versiunea anterioară, extensiile de bază OpenGL® încă pot fi depreciate în timp.