Koje su različite vrste OpenGL® proširenja?

Postoji niz različitih proširenja OpenGL®, koji se uglavnom koriste za pomoć pri upravljanju i održavanju uređene strukture OpenGL® knjižnica. Postoje četiri glavne vrste proširenja OpenGL®: dobavljač, odobren, generički i temeljni. Odobrena, generička i osnovna proširenja označavaju funkcije i knjižnice koje se, na neki način, kreću na putu prema uključivanju u opću distribuciju OpenGL® razvojnog kompleta. Proširenja dobavljača su prilagođene funkcije koje se primjenjuju na određena hardverska ili softverska okruženja. Postoji nekoliko drugih tipova, iako su više za podklasifikaciju mnogih proširenja koja postoje.

Jedan od razloga zašto postoje različite vrste proširenja OpenGL® je zbog raširene upotrebe osnovnih knjižnica i potencijalno zbunjujuće količine vlasničkog koda koji se stvara za njegovo proširenje. OpenGL® Architecture Review Board (ARB) pomaže u održavanju i provođenju OpenGL® standarda i upravljanju proširenjima. Mnoga proširenja započinju ili kao proširenja dobavljača ili sveprisutna proširenja i mogu ih, s vremenom, koristiti više dobavljača, zarađujući naslov generičkog proširenja. Generička proširenja tada može pregledati ARB i postati proširenja odobrena od strane ARB-a koja će se najvjerojatnije pridružiti osnovnim proširenjima.

Proširenja OpenGL® dobavljača su funkcije koje implementiraju proizvođači grafičkog hardvera ili operativnih sustava. Ove vrste proširenja omogućuju proizvođaču da poboljša ili uvede novu funkcionalnost u svoje grafičke performanse, a zatim ta poboljšanja učini dostupnima OpenGL® programima. Sva proširenja dobavljača počinju s kodom dodijeljenim ARB-u koji predstavlja naziv proizvođača, što ukazuje na okruženje u kojem bi funkcija mogla biti dostupna.

Generička proširenja OpenGL® su funkcije koje su koristili i implementirali više proizvođača i više ih nije potrebno označavati posebnim kodovima prefiksa dobavljača. Ne moraju se implementirati sva generička proširenja kako bi se održala usklađenost sa OpenGL® standardom. Generičko proširenje koristi prefiks GL_EXT ispred naziva funkcije ili konstante.

Odobrena proširenja OpenGL® su ona koja je usvojilo više od jednog proizvođača i koje je pregledao ARB, što im omogućuje da postanu dio normalne OpenGL® biblioteke. Funkcije ove vrste općenito implementiraju svi proizvođači, bez obzira na to koji je dobavljač zapravo izumio proširenje i bez obzira na to imaju li drugi dobavljači hardver koji može podržati tražene funkcije. Ova vrsta proširenja nosi prefiks GL_ARB.

Core OpenGL® proširenja su funkcije koje mogu nadograditi performanse starijih programa dopuštajući pozive prethodnim verzijama OpenGL® funkcije za izvršavanje najnovijeg koda. Kako nove verzije OpenGL® budu objavljene, nova proširenja jezgre mogu se bez problema pozvati iz starijeg programa bez potrebe za promjenom bilo kojeg izvornog koda. Unatoč pogodnostima poboljšanja kompatibilnosti unatrag, temeljna proširenja OpenGL® još uvijek se mogu amortizirati tijekom vremena.