Kehittäjä | Silicon Graphics ja Khronos Group |
---|---|
Ensimmäinen versio | Tammikuu 1994 |
Viimeinen versio | 4,6 (31. heinäkuuta 2017) |
Kirjoitettu | VS |
Tyyppi |
Ohjelmointirajapinta Ohjelmistokirjaston määrittely |
Verkkosivusto | www.opengl.org |
Versioiden aikajärjestys
OpenGL ( Open G raphics L ibrary ) on standardoitu joukon toimintoja varten laskemiseksi 2D tai 3D- kuvien käynnistämän Silicon Graphics vuonna 1992. Tämä ohjelmointirajapinta on saatavilla useissa käyttöympäristöissä, missä sitä käytetään sovelluksia aina pelaamista videon CAD mallintamalla.
OpenGL sallii ohjelman ilmoittaa kohteiden geometrian pisteinä, vektoreina, monikulmioina, bittikartoina ja tekstuureina. Tämän jälkeen OpenGL suorittaa heijastuslaskelmia näyttökuvan määrittämiseksi ottaen huomioon etäisyyden, suunnan, varjot, läpinäkyvyyden ja kehystyksen.
Käyttöliittymässä on noin 250 erilaista toimintoa, joita voidaan käyttää monimutkaisten kolmiulotteisten kohtausten näyttämiseen yksinkertaisista geometrisista primitiivistä. Avoimuuden, käytön joustavuuden ja saatavuuden ansiosta kaikilla alustoilla sitä käyttää suurin osa tieteellisistä, teollisista tai taiteellisista 3D-sovelluksista ja tietyistä 2D-vektorisovelluksista . Tätä kirjastoa käytetään myös videopeliteollisuudessa, jossa se kilpailee usein Microsoftin kirjaston : Direct3D: n kanssa . OpenGL ES -versio on suunniteltu erityisesti laivalla käytettäviin sovelluksiin (matkapuhelimet, taskupäiväkirjat, pelikonsolit jne.).
OpenGL on Silicon Graphics (SGI): n kehittämä IrisGL, 3D-sovellusliittymä . Jälkimmäistä on vaikea kehittää ja laajentaa, ja Silicon Graphics päätti, että OpenGL voidaan rinnastaa IrisGL: n supersetiin. Perustiedot ja kehityksen suoritti Silicon Graphics -tiimi. Fahrenheit- projekti , Microsoftin ja Silicon Graphicsin aloite, yritti yhtenäistää OpenGL- ja Direct3D- rajapinnat . Alun perin tämä toi toivoa järjestyksen luomisesta 3D-sovellusliittymien maailmaan, mutta Silicon Graphicsin taloudellisten rajoitusten vuoksi projekti oli hylättävä.
OpenGL-määritystä valvoo tällä hetkellä vuonna 1992 perustettu ARB ( Architecture Review Board ) . ARB koostuu yrityksistä, jotka ovat erittäin kiinnostuneita rakentamaan yhtenäisen ja laajalti saatavilla olevan sovellusliittymän. Virallisen OpenGL-verkkosivuston mukaan AMD / ATI , Apple , Dell , Evans & Sutherland , Hewlett-Packard , IBM , Intel , Matrox , Nvidia , SGI ja Sun ovat äänestäneiden jäsenten joukossa (kesäkuu 2002). Yksi perustajajäsenistä Microsoft vetäytyiMaaliskuu 2003.
29. heinäkuuta 2003julkistetaan OpenGL 1.5. Samanaikaisesti ARB julkistaa OpenGL- varjostuskielen ensimmäisen luonnoksen tekniset tiedot sekä kolme laajennusta ARB_shader_objects , ARB_vertex_shader ja ARB_fragment_shader .
7. syyskuuta 2004julkistetaan OpenGL 2.0. OpenGL varjostus Kieli ( GLSL , myös lempinimellä GLslang ) syntaksiprosessorin samanlainen C-kieli on sisällytetty lopulliseen versioon.
31. heinäkuuta 2006Siggraph- konferenssissa ARB ilmoitti päätöksestään siirtää OpenGL-määrityksen hallinta Khronos-konsernille , joka jo käsitteli useita OpenGL-määrityksiä sulautetuille järjestelmille ja videopelikonsoleille, mukaan lukien OpenGL ES . Arkkitehtuurin arviointilautakunta purettiin21. syyskuuta 2006, mutta historiallisista syistä lyhenne "ARB" on säilytetty.
Viralliset määritykset OpenGL 3.0: lle julkaistiin 11. elokuuta 2008. Alun perin OpenGL 3: n piti olla merkittävä muutos, jossa oli täydellinen API-uudistaminen, jotta se olisi kilpailukykyinen Direct3D: n kanssa . Erityisesti kyse oli vanhentuneiden toimintojen hylkäämisestä, joita oli siihen asti pidetty vain yhteensopivuuden vuoksi vanhojen versioiden kanssa, uuden, yhtenäisemmän objektien mallin käytöstä, joka kapseloi erityisesti tiloja jne. Kuitenkin vuoden viivästymisen ja Khronos-ryhmän täydellisen viestinnän puuttumisen jälkeen tämä täydellinen uudistaminen hylättiin vähitellen päivityksen tueksi yksinkertaisesti uusimpien grafiikatekniikoiden tukemiseksi . Tämä päätös johtuisi halusta rauhoittaa tiettyjä markkinoita, esimerkiksi CAD- markkinoilla , jotka eivät halunneet näiden vanhojen toimintojen katoavan. Vanhentuneet toiminnot merkitään uusissa määrityksissä " vanhentuneiksi ", ja ne voidaan poistaa tulevissa versioissa.
OpenGL 3.1: n tekniset tiedot julkaistiin 28. toukokuuta 2009. Se poistaa kaikki ominaisuudet, jotka julistettiin vanhentuneiksi OpenGL 3.0: ssa.
OpenGL 3.2: n tekniset tiedot julkaistiin 3. elokuuta 2009. Määritykset on jaettu kahteen osaan; pääprofiili ( ydinprofiili ) ja yhteensopiva profiili ( yhteensopivuusprofiili ).
Julkaisun ohella julkaistaan myös GLSL 1.50 -varjostimen kielimääritys.
OpenGL 3.3 -määritykset julkaistiin 11. maaliskuuta 2010, ja ne ovat 3.3-sarjan viimeisiä eritelmiä. Kuten OpenGL 3.2: lla, on olemassa pääprofiili ja yhteensopiva profiili .
Tätä versiota käytetään usein keskeisenä versiona ennen ohjelmiston siirtämistä OpenGL: stä Vulkaniin.
11. maaliskuuta 2010, OpenGL 4.0 on ilmoitettu, sen tavoitteena on hyödyntää DirectX 11: n kanssa yhteensopivaa laitteistoa täysimääräisesti .
Samalla ilmoitetaan myös OpenGL 3.3.
Aluksi ilmoitettiin nimellä OpenGL Next , Vulkan tarkastelee tärkeitä OpenGL-käsitteitä sopeutuakseen 3D-grafiikkaprosessorien 25 vuoden kehitykseen ensimmäisestä versiosta lähtien. Yhteensopivuutta vanhempien versioiden kanssa ei enää taata.
Merkittävimmät muutokset ovat:
OpenGL-standardin avulla eri valmistajat voivat lisätä uusia toimintoja laajennusten muodossa . Laajennus jaetaan kahteen osaan: otsikkotiedosto, joka sisältää laajennuksen prototyyppitoiminnot ja valmistajan ohjaimet. Jokaisella niistä on lyhenne, jota käytetään nimeämään uudet toiminnot ja vakiot. Esimerkiksi nVidian ("NV") lyhennettä käytetään määrittelemään niiden oma funktio "glCombinerParameterfvNV ()" ja niiden vakio "GL_NORMAL_MAP_NV". Saattaa käydä niin, että useat valmistajat käyttävät samaa toimintoa. Tässä tapauksessa käytetään lyhennettä "EXT". Voi myös tapahtua, että ARB virittää jatkamisen. Tästä tulee standardi ja käytetään lyhennettä “ARB”. Ensimmäinen ARB-laajennus oli GL_ARB_multitexture.
OpenGL: stä on kehitetty useita kirjastoja tarjoamaan toimintoja, joita ei ole saatavana itse OpenGL-kirjastossa:
Huomaa erityisesti Silicon Graphicsin kehittämä OpenGL Performer -kirjasto , joka on saatavana IRIX: lle , Linuxille ja joillekin Windows- versioille , mikä mahdollistaa reaaliaikaisten renderointisovellusten luomisen.
Tässä on yksinkertainen 2D-ohjelma, joka piirtää kolmion ja sallii sen värin muokkaamisen välittömästi painamalla yhtä näppäimistä r, g, b ja alaosassa olevaa näppäintä R, G, B. q-näppäin sulkee ohjelman. Tämän, joka käyttää GLUT: ta ohjelmoinnin yksinkertaistamiseen (ajattele sen asentamista Synapticin tai muun) avulla, on kääntänyt ja suorittanut Linux tai WSL Windows 10 : ssä cc colorswap.c -lglut -lGL -lGLU && ./a.out. OpenGL-kirjastot asennetaan tietyn jakelusi arkistoista. Koodin tavoite on luettavuus eikä suorituskyky.
/* * colorswap.c - Options -lglut -lGL -lGLU : * cc colorswap.c -lglut -lGL -lGLU && ./a.out * * Donnez le focus à la fenêtre, puis pressez : * R G B ou Y pour couleur du fond * r g b ou y pour celle de l'encre * q pour quitter. * * Programme écrit sous OpenSuSE avec Geany sous * Sony Satellite G50 bootant Linux d'un SSD USB3 * en inhibant le secure boot et en donnant la * priorité de boot à l'USB. */ #include <GL/glut.h> int firstPass = 1; // simule le « once » d'Eiffel // Fonction associée (« callback ») à la fenêtre. // Elle redessine tout quand on redimensionne. void Rafraichir(void) { glClear(GL_COLOR_BUFFER_BIT); // Effacer la surface graphique if (firstPass) { glColor3f(0, 0, 1.0); // Encre bleue au départ firstPass = 0; } // Dessiner un triangle glBegin(GL_POLYGON); // Commencer un polygone glVertex2i(100, 100); // Coordonnées des trois points glVertex2i(400, 100); glVertex2i(250, 400); glEnd(); // Fermer le polygone glFlush(); // Dessiner le polygone } // Action sur frappe d'une touche au clavier void Clavier(unsigned char key, int x, int y) { switch(key) { case 'q' : exit(0); // q => « quitter » case 'R' : glClearColor(1, 0, 0, 0); break; // R G B : couleur fond case 'G' : glClearColor(0, 1, 0, 0); break; case 'B' : glClearColor(0, 0, 1, 0); break; case 'Y' : glClearColor(1, 1, 0, 0); break; // Y : jaune case 'r' : glColor3f(1, 0, 0); break; // r g b : couleur encre case 'g' : glColor3f(0, 1, 0); break; case 'b' : glColor3f(0, 0, 1); break; case 'y' : glColor3f(1, 1, 0); break; // y ; jaune } Rafraichir(); // Affichage } int main(int argc, char *argv[]) { int win; // Identificateur de fenêtre (une seule) glutInit(&argc, argv); // initialise GLUT glutInitDisplayMode(GLUT_RGB); // On travaille en RGB glutInitWindowSize(500,400); // 500px large, 400px haut win = glutCreateWindow("Pressez r/g/b/y/R/G/B/Y/q"); // Ordres maintenant exécutés dans la fenêtre « win » glClearColor(0.9, 0.9, 0.2, 0); // Jaune gluOrtho2D(0,600,0,600); // On garde ces coordonnées glutDisplayFunc(Rafraichir); // Callback de la fenêtre glutKeyboardFunc(Clavier); // Callback du clavier glutMainLoop(); // Boucle infinie /* Le programme n'atteint jamais ce point */ return 0; }Windowsissa, monissa Unix- asemissa ja Mac OS: ssä on useita OpenGL-toteutuksia (hyödyntämällä laitteiston tarjoamaa 3D-kiihtyvyyttä) . Nämä toteutukset ovat yleensä grafiikkalaitteiden valmistajien tarjoamia, ja ne liittyvät läheisesti niihin. Tätä kirjastoa, nimeltään Mesa , on ilmainen toteutus, jonka Brian Paul loi vuonna 1993 ja käyttää samaa API: ta, joka mahdollisti:
Silicon Graphicsin käytäntö on julkaista GL: n, GL: n graafisen kirjaston, viimeinen versio joka kerta julkiseen verkkoon . Tämä lähestymistapa:
Jotkut ohjelmisto käyttää OpenGL kokonaisvaltaisen hallinnan käyttöliittymä, jopa 2D, kuten Blender , Google Earth (OpenGL-versio), GLtron, XBMC , tai SGI versio on X11 .
Rich Geldreich ja Joshua Barczak kritisoivat henkilökohtaisissa blogeissaan OpenGL: ää. Heidän valituksensa viittaavat toisaalta tarpeeseen tehdä perusteellisia muutoksia saatujen kokemusten valossa ja toisaalta tarve hallita paremmin portaalien leviämistä. Nämä ovat kuitenkin korkean teknologian käyttäjiä, joiden on käytettävä vuoden 2014 näytönohjainten edistyneimpiä ominaisuuksia.