OpenGL

Specifikācija

Pašos pamatos, OpenGL — tā ir tikai specifikācija, proti, dokuments, kas apraksta funkciju kopumu un to darbību precīzu aprakstu, ko šīm funkcijām ir jāveic. Aparatūras ražotāji uz šīs specifikācijas pamata rada "realizācijas" — funkciju bibliotēkas, kas atbilst specifikācijas funkciju kopumam. Realizācija izmanto aparatūras iespējas, kur vien tas ir pieejams. Ja aparatūra neatbalsta to vai citu iespēju, tad šī iespēja tiek emulēta programmas līmenī. Ražotāju aparatūrai, pirms tās izziņošanas par OpenGL saderīgu, ir nepieciešams iziet specifiskus standartsaderības testus.
Efektīva OpenGL realizācija ir gan Windows, MacOS, Linux un Unix platformās, PlayStation 3 un pat TI-89 grafiskajā platformā. Pastāv daudzi OpenGL funkciju īstenojumi, kas ļauj OpenGL darboties uz dažādām platformām, uz kurām pārdevējs nav paredzējis šādu atbalstu. Zīmīgi, ka brīvās programmatūras/atklātā pirmkoda bibliotēka Mesa 3D ir OpenGL funkciju programmrealizācija. Pateicoties licences specifikai, Mesa ir "neoficiāla" OpenGL realizācija, kaut arī tā koda līmenī ir pilnībā ir savietojama ar OpenGL.
OpenGL specifikāciju uzrada OpenGL Architecture Review Board (ARB), kuru šī mērķa īstenošanai nodibināja 1992. gadā. Konsorciju veido kompānijas, kas ir ieinteresētas plaši izplatītas un izmantojamas lietojumprogrammatūras saskarnes radīšanā. Atbilstoši OpenGL mājaslapā sniegtajai informācijai, 2004. gadā ARB biedru ar izšķirošām balsstiesībām vidū bija: profesionālās grafiskās aparatūras ražotāji SGI, 3Dlabs, Matrox un Evans & Sutherland (militārā aparatūra), plaša patēriņa grafiskās aparatūras ražotāji ATI un NVIDIA, procesoru ražotājs Intel, kā arī datoru un datoraparatūras ražotāji IBM, Apple, Dell, Hewlett-Packard un Sun Microsystems. Tāpat ARB biedru ar izšķirošām balsstiesībām ir arī viens no datorspēļu industrijas līderiem id Software. Microsoft, kas bija viens no konsorcija dibinātājiem, 2003. gadā izstājās no ARB. Pateicoties politikai — ik gadu aicināt daudzas kompānijas viena gada garumā ņemt līdzdalību OpenGL ARB darbībā — ir ļāvis OpenGL kļūt par plaša pielietojuma lietojumprogrammatūras saskarni ar plašām iespējām.
2006. gada 21. septembrī OpenGL uzraudzība tika nodota Khronos Group.[3] Tas tika darīts ar mērķi optimizēt OpenGL mārketingu un novērst šķēršļus, ko bija radījuši OpenGL un OpenGL ES dažādā attīstība. Khronos apakšstruktūra, ka vada OpenGL, vēsturisku iemeslu dēļ tika nosaukta OpenGL ARB Working Group.
Kurts Ekelejs (Kurt Akeley) un Marks Sīgals (Mark Segal) ir OpenGL sākotnējās specifikācijas autori. Kriss Freizers (Chris Frazier) ir 1.1 versijas redaktors. Jons Ličs ir bijis redaktors visām turpmākajām OpenGL versijām, sākot no 1.2 līdz 2.1.

Paplašinājumi

OpenGL standarti ļauj individuāliem pārdevējiem (vendors) nodrošināt papildusfunkcionalitāti ar paplašinājumu (extensions) palīdz;ibu, kolīdz ir radīta jauna tehnoloģija. Ar paplašinājumu palīdzību var ieviest jaunas funkcijas un konstantes, kā arī atvieglot vai noņemt ierobežojumus esošās OpenGL funkcijās. Katrs pārdevējs lieto alfabētisku saīsinājumu, kas tiek izmantots pārdevēja jauno funkciju un konstanšu apzīmēšanai. Piemēram, saīsinājums (NV) tiek lietots NVIDIA patentēto funkciju glCombinerParameterfvNV() un konstanšu GL_NORMAL_MAP_NV apzīmēšanai.
Pastāv iespēja, ka kāds cits pārdevējs piekrīt implementēt otra pārdevēja paplašināto funkcionalitāti. Tādā gadījumā šādas funkcionalitātes apzīmēšanai tiek lietots saīsinājums EXT. Pēcāk pastāv iespēja, ka Architecture Review Board (ARB), OpenGL konsorcijs, "svēta" šo paplašinājumu. Tādā gadījumā tas vēlāk kļūst par standarta paplašinājumu, un tā apzīmēšanai tiek lietos saīsinājums ARB. Pats pirmais ARB paplašinājums bija GL_ARB_multitexture, ko ieviesa OpenGL 1.2.1. versijā. Savukārt faktūrkartēšana(multitexturing), atbilstoši oficiālajai paplašinājumu veicināšanas politikai, tika nevis implementēta kā brīvizvēles ARB paplašinājums, bet gan iekļauta kā OpenGL lietojumprogrammas kodola saskarnē, sākot ar 1.3 versiju.
Lai paplašinājumu varētu izmantot, programmai no sākuma vajag noteikt tā pieejamību un darbgatavību, un tad iegūt norādes (pointers) uz jaunajām funkcijām, kuras sniedz paplašinājums. Šīs darbības mehānisms ir katrai platformai atšķirīgs un tādas bibliotēkas kā GLEW un GLEE visupirms ir radītas šī procesa vienkāršošanai.
Teju vai visu paplašinājumu specifikācijas var aplūkot oficiālajā paplašinājumu reģistrā .

Saistītās rīku bibliotēkas

Atsevišķas bibliotēkas ir "iebūvētas" OpenGL bāzē vai ārpus tās, lai nodrošinātu iespējas, kas pašā OpenGL nav pieejams. Tādas bibliotēkas kā GLU var atrast OpenGL implementācijās, kamēr citas kā, piemēram, GLUT un SDL ir attīstījušas laika gaitā un nodrošinājušas rudimentāru vairākplatformu logošanas (windowing) un peles funkcionalitāti, un, ja tā nav bijusi pieejama, tad šīs bibliotēkas bija ērti lejupielādējamas un pievienojamas izstrādes videi. Vienkāršas grafiskā lietotāja saskarnes (GUI) funkcionalitāte ir pieejama tādās bibliotēkās kā GLUI vai FLTK. Citas bibliotēkas kā, piemēram, AUX ir "atmestas" (deprecated) un aizstātas ar funkcionalitāti, kas ir plaši pieejama daudz populārākās bibliotēkās, tomēr AUX kods, ko tās lieto, aizvien ir pieejams vienkāršās pamācībās. Vēl citas bibliotēkas ir radītas, lai nodrošinātu OpenGL programmu izstrādātājus ar vienkāršiem OpenGL paplašinājumu un versiju pārvaldības līdzekļiem. Pie šādām bibliotēkām pieskaitāmas GLEW (the OpenGL Extension Wrangler Library) un GLEE (the OpenGL Easy Extension Library).
Līdztekus iepriekšminētajām vienkāršajām bibliotēkām, ir arī augstākā līmeņa objektorientētu ainu grafu paturošā režīma (retained mode) bibliotēkas, un tās būtu PLIB, OpenSG, OpenSceneGraph un OpenGL Performer bibliotēkas. Tās ir pieejamas kā vairākplatformu atklātā pirmkoda programmatūras vai kā īpašniekprogrammatūras saskarnes, kas ir iekļautas OpenGL bāzē vai sistēmas bibliotēkās un ir paredzētas reāllaika skaitļošanas iespējošanai vizuālās simulācijas lietotņu darbā. Citi risinājumi atbalsta OpenGL virtuālā realitātes programmu, mērogojamības un grafisko klastera pielietojamības paralēldarbību, kā piemēram, caurspīdīgi kā Chromium vai caur programmas saskarni — Equalizer gadījumā.
Mesa 3D ir atklātā pirmkoda OpenGL implementācija. Mesa 3D nodrošina OpenGL programmatūras līmeņa renderēšanu, kā arī aparatūras paātrināšanu Linux sistēmā vairākām 3D videokartēm. Sākot ar 2007. gada 22. jūniju Mesa 3D īsteno 2.1 versiju un izplata atsevišķus savus paplašinājumus dažādām platformām.

Vēsture

1980. gados tādas programmatūras izstrādes, kas spētu mijiedarboties ar plaša diapazonu grafisko aparatūru, bija īsts izaicinājums. Programmatūras izstrādātāji veidojas maināmas (custom) saskarnes un dziņus priekš katra aparatūras modeļa. Tas bija dārgi un dubulti darbietilpīgi.
90. gadu sākumā Silicon Graphics (SGI) bija vadošā kompānija, kas nodrošināja 3D grafiku darbstacijām. Tās veidotā IRIS GL lietojumprogrammas saskarne bija iecerēta kā "mākslas darbs" un kļuva par de facto industrijas standartu, aptumšojot atvērtos standartos bāzēto PHIGS. Tas izdevās pateicoties tam, ka IRIS GL bija vieglāk lietot, un arī tāpēc ka tā atbalstīja tūlītējā režīma (immediate mode) renderēšanu. Salīdzinājumam PHIGS bija grūti lietojams un no funkcionalitātes viedokļa novecojis.
SGI konkurenti (ieskaitot Sun Microsystems, Hewlett-Packard un IBM) arī bija spējīgi tirgū piedāvāt 3D aparatūru, kurā bija atbalstīti ar PHIGS standartu savietojami standarti. Tas vājināja SGI tirgus daļu, kolīdz citi 3D aparatūras ražotāji ienāca tirgū. Cenšoties mainīt tirgu sev par labu, SGI pieņēma lēmumu IrisGL API izplatīt kā atvērto standartu.
SGI secināja, ka IrisGL API nav piemērots atklātības principiem dažādu licenču un īpašniektiesību dēļ. Tāpat IrisGL nebija pilnība apmierinošs 3D grafikas vajadzībām. Un, proti, tajā bija tikai daļēji realizētas logošanas, tastatūras un peles lietojumprogrammu saskarnes, jo tās bija izstrādātas pirms parādījās pirmās X Window System un Sun NeWS izstrādes šajā virzienā.
Piedevām, tā kā SGI bija ievērojams programmatūras klientu skaits, ar OpenGL lietojumprogrammatūras saskarnes piedāvāšanu tiem, bija iecerēts tos saglabāt kā SGI (un arī IBM) aparatūras lietotājus, līdz OpenGL lietojumprogrammatūras atbalsts nobriestu plašam tirgum. Un pa tam, SGI censtos noturēt savas aparatūras patērētājus, piedāvājot tiem modernās un patentētās Iris Inventor un Iris Performer programmējamās lietojumprogrammatūras saskarnes.
Šo notikumu rezultātā, tapa SGI piedāvātais OpenGL standarts.
OpenGL standartizēja piekļuvi pie aparatūras un aparatūras ražotāju, kā arī aizsāka aparatūras izstrādātāju vidū aparatūras saskarņu programmu izstrādes atbildības politiku, kā redzamākais ieguvums mūsdienās ir ierīces dzinis (device driver). Tāpat OpenGL deliģēja logošanas funkcijas operētājsistēmai. Spēja mijiedarboties ar tik plašu aparatūras klāstu, liekot tai visai "runāt vienā valodā", dāvāja programmatūras izstrādātājiem augstākā līmeņa platformu 3D programmatūras izstrādei.
1992. gadā, SGI nodibināja OpenGL architectural review board (OpenGL ARB) — kompāniju, kas nākamajos gados uzturēja un popularizēja OpenGL specifikācijas, grupas — izveides iniciators. OpenGL izveidojās (un būtībā bija ļoti tuvs) SGI agrākajai 3D saskarnei IrisGL. Viens no IrisGL ierobežojumiem bija, ka tas piedāvāji piekļuvi tikai pie tām iespējām, kas bija uzturētas aparatūrā. Ja grafikas aparatūra neatbalstīja iespēja, tad programma nespēja to izmantot. OpenGL atrisināja šo problēmu, piedāvājot iespējas, ko aparatūra neuzturēja, sniedzot iespēju programmai lietot modernas grafikas uz relatīvi zemas jaudas sistēmām.
1994 SGI nodevās iecerei par "OpenGL++", kurā bija iekļauti tādi elementi kā ainu grafu (scene-graph) saskarnes (jādomā veidotas uz viņu Performer tehnoloģijas bāzes). Specifikācijas tika prezentētas pāris izstrādātāju salidojumus, taču tā arī neguva plašāku popularitāti, tā arī nekļūstot par produktu.
Microsoft prezentēja Direct3D 1995. gadā, un tas kļuva par galveno OpenGL konkurentu. 1997. gada 17. decembrī  Microsoft un SGI aizsāka Fahrenheit projektu, kura mērķis bija apvienot OpenGL un Direct3D saskarnes. 1998. gadā projektā iesaistījās Hewlett-Packard. Projekts sākotnēji radīja cerību, ka 3D datorgrafikas saskarņu pasaulē būs kārtība, bet sakarā ar SGI finansiālām grūtībām, Microsoft stratēģiju, un vispārēju industrijas ignoranci, šis projekts tikai pārtraukts 1999. gadā.

OpenGL 2.0

Salīdzinājumā ar DirectX, OpenGL tika kritizēts par apgrūtinošu Konsorcija darbību. Kritiķi uzsvēra, ka tajā ietilpstošais lielais uzņēmumu ar dažādām interesēm skaits noved pie ilgstoša jaunas versijas specifikācijas apstiprinājumu. OpenGL prezentēja 3Dlabs kā atbilde uztraukumam par lēnu izstrādi un nenoteiktu OpenGL nākotni. 3Dlabs piedāvāja vairākus būtiskus papildinājumus standartam, no kuriem ievērojamākais bija [GLSL] (OpenGL Shading Language). Tas programmētājam ļāva aizvietot fiksēto OpenGL konveijeri ar nelielām GLSL valodā rakstītām programmām, un tas ļāva realizēt tādus efektus kā, piemēram, reljefās tekstūras (bump mapping), viļņus un ūdens ņirbēšanu. OpenGL 2 fināla versijas specifikācija ietvēra GLSL atbalstu. Tomēr arī pirms GLSL iekļaušanas OpenGL standartā bija iespēja izveidot specifektus dažādās programmēšanas valodās: : assembler (paplašinājumi vertex_program, fragment_program) un Cg (NVidia C for Graphics). Diemžēl daudzi ierosinājumu aizvien nav realizēti OpenGL 2.0 versijā, lai gan daudzi no tiem ir pieejami kā paplašinājumi.

Plāni pēc OpenGL 3.0

Jau tagad tiek spriests, kādu jaunu papildusfunkcionalitāti varētu pievienot nākamajām pēc OpenGL 3.0 versijām.
Šis ir visticamākais scenārijs, jo tik ilgu laiku atliktajā OpenGL 3.0 laidienā visticamākais tiks iekļautas arī papildiespējas un atjauninājumi "Longs Peak reloaded" un "Mt Evans".

Longs Peak atjauninājumi

Šis atjauninājums, ko iecerēts prezentēt 2-3 mēnešus pēc OpenGL 3.0 laidiena, būs saistīts ar to nenozīmīgu iespēju pievienojumu, kuras nebija izšķirošas OpenGL 3.0 laidienam. Šīs iespējas galvenokārt fokusēsies uz lietošanas ērtumu, tādējādi padarot lietojumprogrammas saskarnes izmantošanu komfortablāku, lai arī galvenajā laidienā dažas veiktspēju uzlabojošās iespējas jau būs iekļautas.

Mt Evans (Ivansa kalns)

Šis atjauninājums, ko prezentēs 3-5 mēnešus pēc OpenGL 3.0 laidiena, primāri būs atjauninājums, kurā būs ietverts modernas aparatūras iespējas atbalsts. Un tas sevī iekļaus ģeometrijas šeiderus, veselos skaitļus šeideros (integers in shaders), tekstūru masīvus un tūlītēju renderēšanu (instanced rendering).