OpenGL

OpenGL Tiedot
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.).

Historia

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.

OpenGL 1.5

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 .

OpenGL 2.0

7. syyskuuta 2004julkistetaan OpenGL 2.0. OpenGL varjostus Kieli ( GLSL , myös lempinimellä GLslang ) syntaksiprosessorin samanlainen C-kieli on sisällytetty lopulliseen versioon.

OpenGL ES

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.

OpenGL 3.0

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

OpenGL 3.1: n tekniset tiedot julkaistiin 28. toukokuuta 2009. Se poistaa kaikki ominaisuudet, jotka julistettiin vanhentuneiksi OpenGL 3.0: ssa.

OpenGL 3.2

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

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.

OpenGL 4.0

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.

Vulkan

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:

Laajennukset

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.

Kirjastot

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.

Yksinkertainen OpenGL-ohjelmaesimerkki

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; }

Toteutukset

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:

  • luopua OpenGL-lisenssistä useimmissa tapauksissa, koska SGI-toteutus on lisensoitu, mutta itse sovellusliittymää ei voida lisensoida;
  • ajaa OpenGL-sovelluksia sille sopimattomilla X-päätelaitteilla (suorituskyvyt ovat silloin mielivaltaisia ​​laitteistokiihdytyksen puutteen vuoksi, mutta tämä on usein parempi kuin ei lainkaan suoritusta ja on hyväksyttävää, jos ei tarvitse reaaliaikaista animaatiota) . Koska näillä asemilla ei yleensä ole laitteiston 3D-kiihtyvyyttä, niitä voidaan käyttää vain yksinkertaisissa malleissa, joissa on suhteellisen vähän polygoneja: muutamasta kymmenestä muutamaan tuhanteen.

OpenGL: n kiinnostus piigrafiikkaan

Silicon Graphicsin käytäntö on julkaista GL: n, GL: n graafisen kirjaston, viimeinen versio joka kerta julkiseen verkkoon . Tämä lähestymistapa:

  • vältti kilpailua (OpenGL on vapaa ja avoin, miksi keksiä se uudelleen?);
  • varoittanut OpenGL: n muokkaamisesta, koska kaikki lisäykset olisi kopioitava seuraavasta versiosta;
  • antoi Silicon Graphics -työasemille merkittävän edun, kun GL oli aina askeleen edellä OpenGL: ää;
  • oli eräänlainen suojelumuoto hyväksi  yhteiskunnan "  karmalle " avoimen lähdekoodin piireissä

Käyttää

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 .

Arvostelut

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.

Huomautuksia ja viitteitä

  1. "  https://www.khronos.org/news/press/khronos-releases-opengl-4.6-with-spir-v-support  "
  2. (sisään) Dave Astle ja Kevin H.Hawkins Beginning OpenGL Game Programming , Cengage Learning - 2004 ( ISBN  9781592003693 ) .
  3. (in) Paul Martz, OpenGL tislattu , Addison-Wesley Professional - 2006 ( ISBN  9780132701785 ) .
  4. (sisään) PJ Cabrera, Peter Bakhirev, Ian Marsh, Ben Smith, Eric Wing, Scott Penberthy, Aloittava iPhone- pelikehitys , Apress - 2010 ( ISBN  9781430226000 ) .
  5. (sisään) The OpenGL Pipeline Newsletter - Volume 002  " , Siirtymät , marraskuu 2006.
  6. Long Peaks  : esitys Icare3D-verkkosivustolla .
  7. http://www.presence-pc.com/tests/Opengl-DirectX-guerre-22813/ .
  8. (en) http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=243307&#Post243307 .
  9. (in) Mark Segal ja Kurt Akeley, OpenGL®- Grafiikkajärjestelmän olevaa erittelyä (versio 3.1 - Toukokuu 28, 2009) , Khronos Group,28. toukokuuta 2009( lue verkossa ) , s.  294 (Liite E)
  10. Nÿco, “  OpenGL 3.1 Specifications  ” , Linuxfr.org-sivustossa ,25. maaliskuuta 2009
  11. (in) John Kessenich, OpenGL varjostus Language - Kieli Versio: 1.50 (Revision 11) , Khronos,4. joulukuuta 2009( lue verkossa )
  12. (sisään) "  OpenGL 3.3 (ydinprofiili) - 11. maaliskuuta 2010  " , Khronos,11. maaliskuuta 2010
  13. PDF OpenGL 3.3 (yhteensopivuusprofiili) - 11. maaliskuuta 2010 , Khronos ( lue verkossa )
  14. Ohjelman johdannainen on jaettu myös sen kirjoittajalle Githubin julkisessa kirjastossa: https://github.com/fdarmingaud/colorswap/blob/master/colorswap.c
  15. Esimerkiksisudo apt install freeglut3-dev
  16. http://fi.swpat.org/wiki/OpenGL
  17. (en) Rich Geldreich, Asiat, jotka ajavat minua OpenGL: stä  " , Rich Geldreichin tekninen blogi , 11. toukokuuta 2014.
  18. (in) Michael Larabel, Train AMD Kehittäjä: OpenGL on rikki  " , Phoronix 31. toukokuuta 2014.

Katso myös

Aiheeseen liittyvät artikkelit

Bibliografia

  • Open GL 2.0: virallinen opas , Jackie Neider, Mason Woo, Tom Davis, Dave Shreiner, Véronique Campillo, 2006, CampusPress ( ISBN  978-2-7440-2086-5 )
  • (fi) OpenGL-ohjelmointiopas: Virallinen opas OpenGL-oppimiseen, versio 2 , Dave Shreiner, Mason Woo, Jackie Neider, 2005, Addison-Wesley ( ISBN  978-0-321-33573-9 )
  • (en) OpenGL Reference Manual: The Official Reference Document to Open Gl, versio 1.4 , Dave Shreiner, 2004, Addison-Wesley ( ISBN  978-0-321-17383-6 )
  • (en) OpenGL-varjostuskieli , Randi J.Rost , 2005, Addison-Wesley ( ISBN  978-0-321-33489-3 )
  • OpenGL Superbible , Richard S., Jr. Wright, Benjamin Lipchak, 2004, Sams ( ISBN  978-0-672-32601-1 )
  • (en) Opengl-pelin ohjelmoinnin alku , Dave Astle, Kevin Hawkins, 2004, kurssitekniikka ( ISBN  1-59200-369-9 )

Erittely

Ulkoiset linkit