OpenGL ES 3 | ||
---|---|---|
Generell informasjon | ||
programtype | api | |
Forfatter | Silisium grafikk | |
utvikler | Kronos Group | |
Første utgivelse | 01 i 1992 | |
Tillatelse | Diverse | |
Teknisk informasjon | ||
Planlagt inn | C | |
Versjoner | ||
Siste stabile versjon | 4.6 [ 1 ] ( 31. juli 2017 (5 år, 2 måneder og 17 dager)) | |
Utgivelser | ||
IRISGL og PHIGS | OpenGL ES 3 | vulkan |
Linker | ||
Offesiell nettside | ||
OpenGL ( Open Graphics Library) er en standardspesifikasjon som definerer en flerspråklig plattform - API for skriving av applikasjoner som produserer 2D- og 3D-grafikk . Grensesnittet består av over 250 forskjellige funksjoner som kan brukes til å tegne komplekse 3D-scener fra enkle geometriske primitiver som punkter, linjer og trekanter. Den ble opprinnelig utviklet av Silicon Graphics Inc. ( SGI ) i 1992 [ 2 ] og er mye brukt i CAD , virtuell virkelighet , vitenskapelig gjengivelse, informasjonsvisualisering og flysimulering . Det brukes også i videospillutvikling , hvor det konkurrerer med Direct3D på Microsoft Windows -plattformer .
I utgangspunktet er OpenGL en spesifikasjon, det vil si et dokument som beskriver et sett med funksjoner og den nøyaktige oppførselen de må ha. Med utgangspunkt i det , lager maskinvareprodusenter implementeringer , som er biblioteker med funksjoner som samsvarer med kravene i spesifikasjonen, og bruker maskinvareakselerasjon når det er mulig. Slike implementeringer må bestå samsvarstester for at produsentene skal kvalifisere implementeringen som OpenGL-kompatibel og bruke den offisielle OpenGL-logoen.
Det er effektive implementeringer av OpenGL for Mac OS , Microsoft Windows , GNU/Linux , forskjellige Unix -plattformer og PlayStation 4 . Det er også flere programvareimplementeringer som lar OpenGL-avhengige applikasjoner kjøre uten støtte for maskinvareakselerasjon. Bemerkelsesverdig er den gratis programvaren / åpen kildekode Mesa 3D - biblioteket , et fullt OpenGL-kompatibelt, ikke-maskinvareakselerert grafikk-API. For å unngå lisenskostnadene som kreves for å bli formelt kalt en implementering av OpenGL, hevder det imidlertid å være et veldig likt API .
OpenGL-spesifikasjonen ble gjennomgått av OpenGL Architecture Review Board ( ARB ), grunnlagt i 1992 . ARB var sammensatt av en gruppe selskaper som var interessert i å lage en konsistent og allment tilgjengelig API. Microsoft , et av grunnleggerne, forlot prosjektet i 2003 .
21. september 2006 ble det kunngjort at kontrollen over OpenGL ville gå fra ARB til Khronos Group . [ 3 ] Dette var ment å forbedre markedsføringen av OpenGL og fjerne barrierene mellom OpenGL-utvikling og OpenGL ES . [ 4 ] ARB ble i Khronos OpenGL ARB Working Group . [ 5 ] Khronos-undergruppen som administrerer OpenGL-spesifikasjonen kalles OpenGL ARB Working Group . [ 6 ] For en liste over medlemmene som utgjør OpenGL ARB-arbeidsgruppen, se delen Medlemmer av Khronos-gruppen . Det store antallet selskaper med ulike interesser som har gått gjennom både det gamle ARB og det nåværende konsernet har gjort OpenGL til en generell API med et bredt spekter av muligheter.
Mark Segal og Kurt Akeley var forfatterne av den originale OpenGL-spesifikasjonen. Chris Frazier var redaktør for versjon 1.1. Jon Leech har redigert versjoner fra 1.2 til nåværende 3.0. [ 7 ]
OpenGL har to viktige formål:
Den grunnleggende operasjonen til OpenGL er å akseptere primitiver som punkter, linjer og polygoner, og konvertere dem til piksler. Denne prosessen utføres av en grafisk rørledning kjent som OpenGL State Machine . [ 8 ] De fleste OpenGL-kommandoer gir enten primitiver til grafikkpipelinen eller konfigurerer hvordan pipelinen behandler disse primitivene. Inntil versjon 2.0 dukket opp, utførte hvert trinn i rørledningen en forhåndsbestemt funksjon, noe som resulterte i liten konfigurerbarhet. Fra og med versjon 2.0 er noen trinn programmerbare ved hjelp av et programmeringsspråk kalt GLSL .
OpenGL er et lavt nivå, prosedyrebasert API som krever at programmereren dikterer de nøyaktige trinnene som kreves for å gjengi en scene. Dette er i motsetning til beskrivende APIer, der en programmerer bare skal beskrive scenen og kan la biblioteket kontrollere detaljene for å gjengi den. OpenGLs lavnivådesign krever at programmerere har en dyp forståelse av grafikkpipelinen, i retur for å gi dem friheten til å implementere nye grafikkalgoritmer.
OpenGL har påvirket utviklingen av grafikkort, og fremmet et grunnleggende funksjonalitetsnivå som nå er vanlig i kommersiell maskinvare; Noen av disse bidragene er:
En kort beskrivelse av prosessen i den grafiske pipeline kan være: [ 9 ]
Mange nåværende grafikkort gir mer funksjonalitet enn det grunnleggende som er diskutert her, men de nye funksjonene er generelt forbedringer av denne grunnleggende rørledningen i stedet for revolusjonerende endringer i den.
Merk: Pass på, dette eksemplet er kun gyldig med OpenGL 2.1 og tidligere versjoner. Den gjør mye bruk av for tiden utdaterte funksjoner.
Først tømmer vi fargebufferen for å starte på et svart lerret :
glClear ( GL_COLOR_BUFFER_BIT );Modelview- arrayen er satt , som kontrollerer posisjonen til kameraet i forhold til primitivene vi gjengir. Vi setter den tilbake 3 enheter på Z -aksen , og lar den peke mot opprinnelsen:
glMatrixMode ( GL_MODELVIEW ); /* Array-kommandoer vil endre ''modelview'' */ glLoadIdentity (); /* Initialiser ''modelview'' */ glTranslatef ( 0 , 0 , -3 ); /* Flytt 3 enheter i Z-aksen */Projeksjonsmatrisen styrer perspektivet brukt på primitivene ; brukes på lignende måte som ovenfor:
glMatrixMode ( GL_PROJECTION ); /* Matrisekommandoer vil endre ''projeksjon'' */ glLoadIdentity (); /* Initialiser ''projeksjon'' */ glFrustum ( -1 , 1 , -1 , 1 , 1 , 1000 ); /* Bruk en perspektivprojeksjon */Til slutt tegnes en polygon (en grønn firkant orientert i XY -planet):
glBegin ( GL_POLYGON ); /* Start av polygon */ glColor3f ( 0 , 1 , 0 ); /* Sett gjeldende farge til grønn */ glVertex3f ( -1 , -1 , 0 ); /* Sett et toppunkt */ glVertex3f ( -1 , 1 , 0 ); /* Sett et toppunkt */ glVertex3f ( 1 , 1 , 0 ); /* Sett et toppunkt */ glVertex3f ( 1 , -1 , 0 ); /* Sett et toppunkt */ glEnd (); /* Slutt på polygon */På 1980 -tallet var det en reell utfordring for utviklere å utvikle programvare som var kompatibel med et bredt spekter av grafisk maskinvare. Du måtte forholde deg til svært forskjellige grensesnitt og skrive spesifikke drivere for hver type maskinvare, noe som var veldig dyrt; derfor ble team av programmerere satt ut for å få fart på utviklingen. Siden hvert team jobbet separat med sine grensesnitt, ble det produsert mye overflødig kode. I tillegg var det en kostbar prosess, så flere innovative grupper tok utfordringen med å finne en bedre metode.
På begynnelsen av 1990-tallet var SGI en referansegruppe innen 3D-grafikk for arbeidsstasjoner. Hans var IRIS GL API , [ 10 ] ansett for å være i forkant av feltet og de facto-standarden, formørkelse av PHIGS , basert på åpne standarder. IRIS GL ble ansett som enklere å bruke, og viktigst av alt, den støttet gjengivelse i umiddelbar modus . Videre ble PHIGS, bortsett fra den økte vanskelighetsgraden, ansett som dårligere enn IRIS GL når det gjelder funksjonalitet og kapasitet.
SGIs konkurranse ( Sun Microsystems , Hewlett-Packard og IBM , blant andre) var i stand til å bringe PHIGS standard-kompatibel 3D-maskinvare til markedet via utvidelser. Dette reduserte SGIs markedsandel ettersom ulike tilbydere kom inn på markedet. Derfor, i et forsøk på å styrke sin innflytelse i markedet, bestemte SGI seg for å gjøre IRIS GL-standarden til en åpen standard.
SGI bemerket at IRIS GL API ikke kunne være åpen kildekode på grunn av lisensiering og patentkonflikter; den inneholdt også funksjoner som ikke er relevante for 3D-grafikk, som APIer for vinduer, tastatur eller mus (delvis fordi den ble utviklet før X Window System eller Suns NeWS -systemer dukket opp). Etter hvert som markedsstøtten for den nye standarden ble modnet, var det ment å beholde de gamle klientene ved å legge til biblioteker som Iris Inventor eller Iris Performer.
Resultatet av alt det ovennevnte var utgivelsen av OpenGL-standarden.
Noen av prestasjonene som ble oppnådd var:
Med variasjonen av grafikkmaskinvare der ute, hadde det en stor effekt å få alle til å snakke samme språk, og ga programvareutviklere en plattform på høyt nivå å jobbe på.
I 1992 [ 11 ] ledet SGI opprettelsen av OpenGL Architecture Review Board ( OpenGL ARB ) , en gruppe selskaper som skulle opprettholde og utvide OpenGL-spesifikasjonen i årene som kommer. OpenGL utviklet seg fra IRIS GL, og overkom problemet med maskinvareavhengighet ved å tilby programvareemulering for funksjoner som ikke støttes av eksisterende maskinvare. Dermed kan applikasjoner bruke avansert grafikk på systemer med relativt lavt strømforbruk.
I 1994 vurderte SGI å gi ut et produkt kalt OpenGL++ , som inkluderte ting som en scene-graf API (antagelig basert på Performer-teknologi). Denne spesifikasjonen ble avslørt til noen få interesserte grupper, men dukket aldri til slutt opp som et produkt. [ 12 ]
I 1995 ga Microsoft ut Direct3D , som skulle bli OpenGLs hovedkonkurrent. Den 17. desember 1997 [ 13 ] startet Microsoft og SGI Fahrenheit -prosjektet , et samarbeid med mål om å forene OpenGL- og Direct3D-grensesnittene (og også legge til en scene-graf API ). I 1998 ville han bli med i Hewlett-Packard-prosjektet. [ 14 ] Til tross for å ha en lovende start med å standardisere 3D-grafikk-APIer, på grunn av økonomiske begrensninger på SGI og en generell mangel på industristøtte, ble den til slutt forlatt i 1999 . [ 15 ]
På GDC 2015 kunngjorde Khronos Group etterfølgeren API til OpenGL, kalt Vulkan . [ 16 ] [ 17 ] [ 18 ] Det ble opprinnelig introdusert av Khronos som " neste generasjons OpenGL -initiativ", men navnet ble senere droppet, noe som etterlot Vulkan som definitivt. [ 19 ] Vulkan er basert på Mantle , et annet AMD - selskaps API , hvis kode ble gitt til Khronos med den hensikt å generere en åpen standard som ligner på OpenGL, men på et lavt nivå. [ 16 ] [ 20 ] [ 21 ] [ 22 ] [ 23 ] [ 24 ]
Publisert januar 1992.
Den første OpenGL-spesifikasjonen ble publisert av Mark Segal og Kurt Akeley.
Utgitt januar 1997.
OpenGL 1.1 fokuserte på støtte for teksturer og teksturformater på GPU-maskinvare.
Støttede grafikkort: alle
Utvidelse | utvidelses-id | Funksjoner |
---|---|---|
Vertex Arrays | EXT_vertex_array | glVertexPointer, glColorPointer, glNormalPointer |
Polygonforskyvninger (dybdeforskyvning) | EXT_polygon_offset | glPolygonOffset |
RGBA logisk blanding | EXT_blend_logic_op | glBlendFunc |
Teksturkopi og underkopi | EXT_subtexture, EXT_copy_texture | glTexSubImage1D/2D/3D |
Teksturformater | EXT_tekstur | RGB, LUMINANS, ALFA, INTENSITET (i glTexImage2D) |
Teksturobjekter | EXT_tekstur_objekt | glGenTextures, glBindTextures |
Utgitt 16. mars 1998.
OpenGL 1.2 fokuserte på volumteksturstøtte, pakkede piksler, normal skalering, sampling av klemt/kanttekstur og bildebehandling.
Støttede grafikkort: Rage 128, Rage 128 GL, Rage XL/XC, Rage 128 Pro, Rage Fury MAXX og alle senere kort.
Utvidelse | utvidelses-id | Funksjoner |
---|---|---|
3D volumteksturer | GL_EXT_texture3D | glTexImage3DEXT |
BGRA teksturformat | GL_EXT_bgra | BGR_EXT, BGRA_EXT (i glTexImage2D) |
Pakkede piksler | GL_EXT_pakkede_piksler | |
Normal omskalering | GL_EXT_rescale_normal | |
Separat Specular Color | GL_EXT_separate_specular_color | |
Texture Coord Edge Clamping | SGIS_texture_edge_clamp | |
Tekstur LOD-kontroll | SGIS_texture_lod | |
Tegn rekkeviddeelementer | EXT_draw_range_elements | glDrawRangeElements |
Bildebehandlingsdelsett | EXT_color_table, EXT_convolution, SGI_color_matrix, EXT_histogram, EXT_blend_color, EXT_blend_minmax |
Utgitt 14. oktober 1998
OpenGL 1.2.1 var en mindre utgivelse utgitt etter OpenGL 1.2 (16. mars 1998) som la til flertekstur, eller teksturenheter, til gjengivelsesrørledningen. Dette gjorde det mulig å kombinere flere teksturer per piksel under rasterisering.
Støttede grafikkort: Radeon, Radeon Mobility, Radeon 7500 Mobility, Radeon 8500, Radeon 9000, Radeon 9200, Radeon 9600, Radeon 9800, GeForce 3, GeForce 4Ti, GeForce FX og alle senere kort
Utvidelse | utvidelses-id | Funksjoner |
---|---|---|
Multi-teksturering | SGIS_multitekstur | glActiveTextureARB, glClientActiveTextureARB |
Utgitt 14. august 2001.
OpenGL 1.3 la til støtte for teksturkubekart, flere teksturer, multi-sampling og teksturenhetskombinasjonsoperasjoner (legg til, bland, dot3, kantklemme).
Støttede grafikkort: Radeon 32/36, Radeon 64/7200, Radeon 7000, Radeo AIW, Radeon 7500, Radeon IGP 320M, Radeon IGP 345M, ES1000, Radeon 8500, Radeon/900, Radeon/90Pro, Radeon/900 & 9000/90Pro, Radeon/90Pro IGP), GeForce 3, GeForce 4Ti, GeForce FX og alle senere kort.
Utvidelse | utvidelses-id | Funksjoner |
---|---|---|
Komprimerte teksturer | GL_ARB_texture_compression | |
kubekart | GL_EXT_texture_cube_map | TEXTURE_CUBE_MAP_EXT |
Multi Sampling | GL_ARB_multisample | |
TeksturLegg til | GL_ARB_texture_env_add | |
Kombiner tekstur | GL_ARB_texture_env_combine | |
Teksturpunkt 3 | GL_ARB_texture_env_dot3 | |
Teksturkantklemming | GL_ARB_texture_border_clamp | |
Matrix Transponering | GL_ARB_transpose_matrix |
Utgitt 24. juli 2002.
OpenGL 1.4 har lagt til støtte for maskinvareskyggelegging, tåkekoordinater, automatisk generering av mipmap og ekstra teksturmoduser.
Støttede grafikkort: Quadro DCC, Quadro4 380 XGL, Quadro4 500XGL, 550XGL, Quadro4 700XGL, 750XGL, 900XGL, 980XGL og alle senere kort.
Utvidelse | utvidelses-id | Funksjoner |
---|---|---|
Automatiske Mipmaps | SGIS_generate_mipmap | |
Bland kvadreringsfunksjoner | GL_NV_blend_square | |
Dybde teksturer | GL_ARB_depth_texture | DEPTH_COMPONENT16/24/32_ARB |
Maskinvare Shadowing Z-dybde | GL_ARB_shadow | COMPARE_R_TO_TEXTURE |
Tåkekoordinater | GL_EXT_fog_coord | |
Flere Draw Arrays | GL_EXT_multi_draw_arrays | |
Punktparametere | GL_ARB_point_parameter | |
Sekundær farge | GL_EXT_sekundær_farge | |
Separate blandingsfunksjoner | GL_EXT_blend_func_separate | |
Sjablonger innpakning | GL_EXT_stencil_wrap | |
Tekstur Tverrstang miljømodus | GL_ARB_texture_env_crossbar | |
Tekstur LOD Bias | GL_EXT_texture_lod_bias | |
Tekstur speilet Gjenta | GL_ARB_texture_mirrored_repeat | |
Vindusrasterposisjon | GL_ARB_window_pos |
Utgitt 29. juli 2003.
OpenGL 1.5 la til støtte for Vertex Buffer Objects (VBO), okklusjonsspørringer og utvidede skyggefunksjoner.
Støttede grafikkort: Radeon X800, Radeon 9600, Radeon 9700, Radeon 9800, GeForce FX og alle senere kort.
Utvidelse | utvidelses-id | Funksjoner | Mer informasjon |
---|---|---|---|
VBOs Vertex Buffer Objects | GL_ARB_vertex_buffer_object | glBindBufferARB, glBufferDataARB, glGenBuffersARB | sonho |
Okklusjonsforespørsler | GL_ARB_occlusion_query | ||
Utvidede skyggefunksjoner | GL_EXT_shadow_funcs |
Utgitt 7. september 2004.
OpenGL 2.0 la til støtte for et ekte GPU-basert assemblerspråk kalt ARB (designet av Architecture Review Board), som skulle bli standarden for toppunkt- og fragmentskyggere. Kort utgitt med OpenGL 2.0 var de første som tilbyr brukerprogrammerbare shaders.
Støttede kort: Radeon 9650, Radeon 9500, Radeon 9500/9550/9600/9700/9800 (Pro, SE, XT), Radeon X1050, Radeon Xpress 200 / 1100, Radeon X300, Radeon X50, Radeon X0, Radeon X0, Radeon X0, Radeon X0, Radeon X0, Radeon X800 (VE, SE, GT, Pro), Radeon X850, Radeon Xpress 1250, Radeon X1200, Radeon X1250, Radeon 2100, Radeon X1300, X1550, X1600, X1650, X1900, X1, X1800, X1, X1, GeForce 6800, Quadro 600, Quadro FX 500, Quadro FX 700, Quadro FX 1000, FX 2000, FX 3000, Quadro FX 1400, Quadro FX 1500, Quadro FX 3450, Quadro FX 3450, Quadro 5 Quadro FX00, S50 Quadro 30X0, S4 Quadro FX00, S50 FX 4 FX00 påfølgende kort.
OpenGL 2.0 ble unnfanget av 3Dlabs for å adressere bekymringer om at OpenGL var stillestående og manglet sterk retning. 3Dlabs foreslo en rekke viktige tillegg til standarden. De fleste av disse ble på det tidspunktet avvist av ARB eller på annen måte ble aldri realisert på den måten som 3Dlabs foreslo. Forslaget hans om et skyggespråk i C -stil ble imidlertid til slutt fullført, noe som resulterte i at den nåværende formuleringen av GLSL (Open GL Shading Language , også sl ang ) prøvde å erstatte, lar programmereren erstatte toppunktet og fragmentet med fast funksjon. pipe med shaders, om enn denne gangen skrevet i et høyt nivå C-lignende språk.
Utformingen av GLSL var kjent for å gi relativt få innrømmelser til begrensningene til maskinvaren som da var tilgjengelig, noe som minnet om den tidligere tradisjonen med OpenGL å sette et ambisiøst, fremtidsrettet mål for 3D-akseleratorer i stedet for bare å følge maskinvarens tilstand. tilgjengelig for øyeblikket. Den siste OpenGL 2.0-spesifikasjonen [ 25 ] inkluderer støtte for GLSL.
Utvidelse | utvidelses-id | Funksjoner |
---|---|---|
Shader-objekter | GL_ARB_shader_objects | |
Vertex-programmer | GL_ARB_vertex_program | glBindProgramARB, glGenProgramsARB |
Vertex Shaders (VS) | GL_ARB_vertex_shader | |
Fragment Shaders (FS) | GL_ARB_fragment_shader | |
Flere gjengivelsesmål | GL_ARB_draw_buffers | glDrawBuffere |
Rektangulær tekstur | GL_ARB_tekstur_rektangel | GL_TEXTURE_RECTANGLE_ARB |
Point Sprites | GL_ARB_point_sprite | |
Separat blandingsligning | GL_EXT_blend_equation_separate | |
Separat sjablong | GL_EXT_stencil_two_side |
2. august 2006 ble OpenGL 2.1 utgitt. Siden den er fullstendig kompatibel med tidligere versjoner, tilbyr [ 26 ] også nye funksjoner som:
OpenGL 3.0-versjonen [ 27 ] ble utgitt 11. august 2008 .
Kompatible kort: GeForce 8-serien ATI HD Radeon 2000-serien . (Det vil si at bare Direct3D 10.0-kompatibel maskinvare er i stand til å kjøre OpenGL 3.0.)
Den er bakoverkompatibel med alle tidligere versjoner av OpenGL, selv om den introduserer en ny mekanisme for å avvikle utdatert funksjonalitet slik at API kan forenkles i fremtidige versjoner.
De viktigste nyhetene er:
Versjon 3.1 (Longs Peak Reloaded) ble utgitt 24. mars 2009, og introduserer en rekke funksjoner for å gjøre API mer praktisk å bruke, i tillegg til ytelsesorienterte funksjoner:
Med utgivelsen av OpenGL 3.1-spesifikasjonen ble det også utgitt en kompatibilitetsutvidelse som lar utviklere få tilgang til OpenGL 1.X/2.X-funksjonalitet fjernet i OpenGL 3.1. Spesielt opprettholdes eldre funksjonalitet for en bred støttelinje.
Fjernet eldre funksjonalitet inkluderer:
Versjon 3.2 ble utgitt 3. august 2009. Den inneholder følgende funksjoner:
Lagt ut 11. mars 2010
OpenGL 3.3, utgitt samtidig med OpenGL 4.0 og supplert med et sett med nye ARB -utvidelser , gir så mye funksjonalitet som mulig fra OpenGL 4.0-spesifikasjonen for bruk på forrige generasjons GPU- maskinvare . Inkluderer GLSL 3.30.
Utgitt 11. mars 2010
Støttede kort: Radeon HD 5000-serien , nVidia GTX 400-serien ;
Kjennetegn: [ 28 ]
Annonsert 26. juli 2010 [ 29 ]
Støttede kort Nvidia GeForce 400-serien , Nvidia GeForce 500-serien , ATI Radeon HD 5000-serien , AMD Radeon HD 6000-serien
Denne nye versjonen legger til disse tilleggsfunksjonene til spesifikasjonen, hvorav mange bidrar til å bringe den i tråd med Direct3D 11:
Utgitt 8. august 2011 [ 30 ]
Støttede kort Nvidia GeForce 400-serien , Nvidia GeForce 500-serien , ATI Radeon HD 5000-serien , AMD Radeon HD 6000-serien , ATI Radeon HD 7000-serien
Utgitt 6. august 2012 [ 31 ] Støttede kort: Nvidia GeForce 400-serien , Nvidia GeForce 500-serien , Nvidia GeForce 600-serien , ATI Radeon HD 8000-serien
Publisert 22. juli 2013 [ 32 ]
Publisert 11. august 2014 [ 33 ] [ 34 ]
Støttede kort: Nvidia GeForce 400-serien og nyere, også Tegra K1 og Tegra X1. [ 35 ] [ 36 ]
OpenGLs popularitet skyldes delvis den detaljerte offisielle dokumentasjonen. OpenGL ARB har publisert en serie oppdaterte manualer etter hvert som APIen har utviklet seg. De er lett gjenkjennelige (og kjente) av fargen på hettene deres:
For OpenGL 2.0 og nyere:
OpenGL-standarden lar produsenter legge til ny tilleggsfunksjonalitet gjennom utvidelser etter hvert som nye teknologier dukker opp. Slike utvidelser kan introdusere nye funksjoner og konstanter, og slappe av eller til og med fjerne restriksjoner på eksisterende funksjoner. Hver produsent har en forkortelse som identifiserer den i navnet til dens nye funksjoner eller konstanter. For eksempel vises forkortelsen for NVIDIA ( NV ) i definisjonen av funksjonen glCombinerParameterfvNV() og konstanten GL_NORMAL_MAP_NV .
Flere leverandører kan bli enige om å implementere den samme utvidede funksjonaliteten. I så fall brukes stenografien EXT . Det kan til og med skje at ARB tar i bruk utvidelsen, og dermed blir standard og bruker ARB -forkortelsen i deres navn. Den første ARB -utvidelsen var GL_ARB_multitexture , introdusert i versjon 1.2.1. Ved å følge banen markert av utvidelsen, er multitexturing ikke lenger en valgfri utvidelse, men ble en del av OpenGL-kjernen siden versjon 1.3.
Før du bruker en utvidelse, må programmer sjekke tilgjengeligheten og deretter få tilgang til de nye funksjonene som tilbys. Denne prosessen er plattformavhengig, men biblioteker som GLEW og GLEE forenkler den.
Spesifikasjoner for de fleste plugins finner du i det offisielle plugin-registeret. [ 38 ]
Det er skrevet flere eksterne biblioteker som legger til funksjoner som ikke er tilgjengelige i OpenGL selv. Noen av dem er:
For å understreke de flerspråklige og kryssplattformfunksjonene til OpenGL, er det utviklet ulike bindinger på mange språk. Noen av språkene som slike bindinger er tilgjengelige for er:
Fra og med 2008 er noen av medlemmene av Khronos Group:
For en fullstendig og oppdatert liste over prosjektmedlemmer, se Khronos-gruppens medlemmer, [ 55 ] bidragsytere [ 56 ] og lærde [ 57 ] lister. [ 58 ]