OpenGL

OpenGL Információ
Fejlesztette Silicon Graphics and Khronos Group
Az első verzió 1994. január
Utolsó verzió 4,6 (2017. július 31)
Beírva VS
típus Programozási felület
Szoftverkönyvtár
specifikáció
Weboldal www.opengl.org

A verziók időrendje

OpenGL ( Nyílt G raphics L ibrary ) egy szabványosított a funkciók számára kiszámításának 2D vagy 3D képek által indított Silicon Graphics 1992 Ez programozási felület elérhető a több platformon, ahol használják alkalmazások kezdve szerencsejáték videó CAD modellező.

Az OpenGL lehetővé teszi, hogy a program deklarálja az objektumok geometriáját pontként, vektorként, sokszögként, bitképként és textúraként. Az OpenGL ezután vetítési számításokat végez a képernyő képének meghatározásához, figyelembe véve a távolságot, a tájolást, az árnyékokat, az átlátszóságot és a keretezést.

Az interfész körülbelül 250 különböző funkcióval rendelkezik, amelyek egyszerű geometriai primitívekből álló komplex háromdimenziós jelenetek megjelenítésére használhatók. Nyitottsága, rugalmassága és minden platformon való elérhetősége miatt a tudományos, ipari vagy művészeti 3D alkalmazások és bizonyos 2D vektoros alkalmazások többsége használja . Ezt a könyvtárat a videojáték-iparban is használják, ahol gyakran versenyeznek a Microsoft könyvtárával  : a Direct3D-vel . Az OpenGL ES nevű verziót kifejezetten fedélzeti alkalmazásokhoz (mobiltelefonok, zsebnaplók, játékkonzolok stb.) Tervezték.

Történelem

Az OpenGL az IrisGL, 3D API fejlesztése, amelyet a Silicon Graphics (SGI) fejlesztett ki . Ez utóbbiak nehezen fejleszthetők és bővíthetők, a Silicon Graphicsnél úgy döntöttek, hogy az OpenGL az IrisGL szuperhalmazához asszimilálható. Az alapvető specifikációkat és fejlesztéseket a Silicon Graphics csapata hajtotta végre. A Fahrenheit projekt , a Microsoft és a Silicon Graphics kezdeményezése, megkísérelte egyesíteni az OpenGL és a Direct3D interfészeket . Ez kezdetben reményt adott arra, hogy rendet teremtsen a 3D API-k világában, de a Silicon Graphics pénzügyi korlátai miatt a projektet el kellett hagyni.

Az OpenGL specifikációt jelenleg az 1992-ben megalakult Architecture Review Board (ARB) felügyeli . Az ARB olyan vállalatokból áll, amelyek mélyen érdekeltek egy következetes és széles körben elérhető API felépítésében. Az OpenGL hivatalos honlapja szerint az AMD / ATI , az Apple , a Dell , az Evans & Sutherland , a Hewlett-Packard , az IBM , az Intel , a Matrox , az Nvidia , az SGI és a Sun a szavazó tagok között van (2002. június). A Microsoft , az egyik alapító tag, visszalépett 2003. március.

OpenGL 1.5

A 2003. július 29az OpenGL 1.5. Ugyanakkor az ARB meghirdeti az OpenGL árnyékoló nyelv első vázlatának specifikációit , valamint a három kiterjesztést: ARB_shader_objects , ARB_vertex_shader és ARB_fragment_shader .

OpenGL 2.0

A 2004. szeptember 7az OpenGL 2.0. Az OpenGL Shading Language ( GLSL , becenevén GLslang ) szintaktikai hasonló a C nyelv tartalmazza a végleges változat.

OpenGL ES

A 2006. július 31A Siggraph konferencián az ARB bejelentette döntését, hogy az OpenGL specifikáció irányítását átadja a Khronos csoportnak , amely már kezelte a beágyazott rendszerek és a videojáték-konzolok, köztük az OpenGL ES különféle OpenGL specifikációit . Az Építészeti Felülvizsgálati Testületet feloszlatták 2006. szeptember 21, de történelmi okokból megmaradt az „ARB” rövidítés.

OpenGL 3.0

Az OpenGL 3.0 hivatalos specifikációi 2008. augusztus 11-én jelentek meg. Eredetileg az OpenGL 3 állítólag jelentős változás volt, teljes API-átalakítással, hogy versenyképesebbé tegye a Direct3D-vel . Különösen az elavult funkciók feladásáról volt szó, amelyeket addig csak a régi verziókkal való kompatibilitás érdekében tartottak meg, egy új, koherensebb objektummodell használatát, amely jelentősen beágyazza az állapotokat stb. Egy év késés és a Khronos-csoport kommunikációjának teljes hiánya után azonban ezt a teljes átalakítást felhagyták egy fokozatos frissítés mellett, hogy egyszerűen támogassák a legújabb grafikai technológiákat . Ez a döntés annak a vágynak tudható be, hogy megnyugtasson bizonyos piacokat, például a CAD esetében , amelyek nem kívánták, hogy ezek a régi funkciók eltűnjenek. Az elavult funkciókat azonban " elavultnak  " jelölik  az új specifikációk, és a jövőbeni verziókban eltávolíthatják őket.

OpenGL 3.1

Az OpenGL 3.1 specifikációi 2009. május 28-án jelentek meg. Eltávolítja az OpenGL 3.0-ban elavultnak nyilvánított összes funkciót.

OpenGL 3.2

Az OpenGL 3.2 specifikációi 2009. augusztus 3-án jelentek meg. A specifikációk 2-re vannak osztva; fő profil ( törzsprofil ) és kompatibilis profil ( kompatibilitási profil ).

Kiadásával együtt megjelenik a GLSL 1.50 shader nyelvi specifikáció is.

OpenGL 3.3

Az OpenGL 3.3 specifikációk 2010. március 11-én jelentek meg, ezek a 3.3-as sorozat utolsó specifikációi. Az OpenGL 3.2-hez hasonlóan itt is van egy fő profil és egy kompatibilis profil .

Ezt a verziót gyakran használják kulcsfontosságú verzióként, mielőtt elérnék a szoftvert az OpenGL-től a Vulkanig.

OpenGL 4.0

A 2010. március 11, Bejelentették az OpenGL 4.0-t, célja a DirectX 11- gyel kompatibilis hardver teljes kihasználása .

Ezzel egyidejűleg az OpenGL 3.3 is bejelentésre kerül.

Vulkan

Kezdetben bejelentette néven OpenGL Következő , Vulkán van felülvizsgálata fontos fogalmak OpenGL érdekében, hogy alkalmazkodjanak a 25 éves evolúció 3D grafikus processzorok, mivel az első verzió. A régebbi verziókkal való kompatibilitás már nem garantált.

A legjelentősebb változások a következők:

Hosszabbítások

Az OpenGL szabvány lehetővé teszi a különböző gyártók, hogy új funkciókat formájában kiterjesztések . A kiterjesztés 2 részből áll: fejlécfájl, amely tartalmazza a kiterjesztés prototípus funkcióit és a gyártó illesztőprogramjait. Mindegyikük rendelkezik rövidítéssel, amelyet új függvényeik és állandóik megnevezésére használnak. Például, a rövidítése nVidia ( „NV”) használjuk, hogy meghatározzák a saját funkciója „glCombinerParameterfvNV ()” és folyamatos „GL_NORMAL_MAP_NV”. Előfordulhat, hogy több gyártó is alkalmazza ugyanazt a funkciót. Ebben az esetben az "EXT" rövidítést használják. Az is megtörténhet, hogy az ARB formalizálja a meghosszabbítást. Ez aztán szabványossá válik, és az „ARB” rövidítést használják. Az első ARB kiterjesztés a GL_ARB_multitexture volt.

Könyvtárak

Számos könyvtárat fejlesztettek az OpenGL-ből annak érdekében, hogy olyan funkciókat biztosítsanak, amelyek nem állnak rendelkezésre magában az OpenGL könyvtárban:

Különösen a Silicon Graphics által kifejlesztett, az IRIX , a Linux és a Windows egyes verziói számára elérhető OpenGL Performer könyvtárakat kell megemlíteni , amelyek valós idejű renderelési alkalmazások létrehozását teszik lehetővé.

Egyszerű OpenGL program példa

Itt van egy egyszerű, 2D-s program, amely háromszöget rajzol, és lehetővé teszi a színének azonnali módosítását az r, g, b és az alul lévő R, G, B gombok egyikének megnyomásával. A q gomb kilép a programból. Ez az egy, amely felhasználja GLUT , hogy egyszerűsítse a programozás (gondoljunk telepítése által Synaptic vagy más), összeállított és kivitelezett, a Linux alatt WSL Windows 10 , a cc colorswap.c -lglut -lGL -lGLU && ./a.out. Az OpenGL könyvtárakat az adott disztribúció tárházaiból kell telepíteni. A kód célja itt az olvashatóság és nem a teljesítmény.

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

Végrehajtások

Az OpenGL (a hardver által biztosított 3D-s gyorsítás kihasználásával) számos megvalósítása létezik a Windows, sok Unix állomás és Mac OS számára . Ezeket a megvalósításokat általában a grafikus hardverek gyártói biztosítják, és szorosan kapcsolódnak hozzájuk. Ennek a Mesa nevű könyvtárnak egy ingyenes megvalósítása van , amelyet 1993- ban Brian Paul hozott létre, és ugyanazt az API-t használta, amely lehetővé tette:

  • lemondani az OpenGL licencről a legtöbb esetben, mivel az SGI megvalósítás licencelt, de maga az API nem licencelhető;
  • futtatni az OpenGL alkalmazásokat olyan alap X terminálokon, amelyek alkalmatlanok voltak rá (akkor a teljesítmények tetszőlegesek a hardveres gyorsítás hiánya miatt, de ez gyakran jobb, mint egyáltalán nem végrehajtani, és elfogadható marad, ha nincs szükség valós idejű animációra) . Mivel ezek az állomások általában nem rendelkeznek hardveres 3D gyorsítással, csak egyszerű modellek esetén használhatók, amelyek viszonylag kevés sokszöget tartalmaznak: néhány tíztől néhány ezerig.

Az OpenGL érdeklődése a Silicon Graphics iránt

A Silicon Graphics házirendje az, hogy a GL utolsó grafikáját, a GL grafikus könyvtárát a nyilvánosság elé terjessze . Ez a megközelítés :

  • kerülte a versenyt (az OpenGL szabad és nyitott, miért találja újra?);
  • lebeszélte az OpenGL módosítását, mert minden kiegészítést át kell másolni a következő verzióból;
  • figyelemre méltó előnyt adott a Silicon Graphics munkaállomásoknak , mivel a GL mindig egy lépéssel megelőzte az OpenGL-t;
  • a pártfogás egyik formája jót tett a  társadalom "  karmájának " a nyílt forrású körökben

Használ

Néhány szoftver használ OpenGL irányítsák a teljes felület, még 2D, mint például a Blender , Google Earth (OpenGL), GLtron, XBMC , vagy az SGI változata az X11 .

Vélemények

Rich Geldreich és Joshua Barczak személyes blogjaikban kritizálják az OpenGL-t. Panaszaik egyrészt a teljes átdolgozás szükségességét sugallják a megszerzett tapasztalatok fényében, másrészt a portékák szétszórtságának jobb ellenőrzését. Ezek azonban csúcstechnológiai felhasználók, akiknek a 2014-es grafikus kártyák legfejlettebb funkcióit kell használniuk.

Megjegyzések és hivatkozások

  1. "  https://www.khronos.org/news/press/khronos-releases-opengl-4.6-with-spir-v-support  "
  2. (in) Dave Astle és Kevin H. Hawkins OpenGL játékprogramozás kezdete , Cengage Learning - 2004 ( ISBN  9781592003693 ) .
  3. (in) Paul Martz, OpenGL Desztillált , Addison-Wesley Professional - 2006 ( ISBN  9780132701785 ) .
  4. (in) PJ Cabrera, Peter Bakhirev, Ian Marsh, Ben Smith, Eric Wing, Scott Pentberthy Beginning iPhone játékok fejlesztése , Apress - 2010 ( ISBN  9781430226000 ) .
  5. (in) Az OpenGL Pipeline Hírlevél - Volume 002  " , Transitions , 2006.
  6. Long Peaks  : előadás az Icare3D weboldalán .
  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 és Kurt Akeley, The OpenGL grafikus rendszer: A specifikáció (Version 3.1 - május 28, 2009) , A Khronos Group,2009. május 28( online olvasható ) , p.  294 (E. függelék)
  10. Nÿco, „  OpenGL 3.1 Specifications  ” , a Linuxfr.org oldalon ,2009. március 25
  11. (in) John Kessenich, OpenGL Shading Language - Nyelv Verzió: 1.50 (Revision 11) , Khronos,2009. december 4( online olvasás )
  12. (in) "  OpenGL 3.3 (Core Profile) - március 11, 2010  " , Khronos,2010. március 11
  13. PDF OpenGL 3.3 (kompatibilitási profil) - 2010. március 11. , Khronos ( online olvasható )
  14. Ennek a programnak egy származékát a szerző is megosztja a Github nyilvános könyvtárában: https://github.com/fdarmingaud/colorswap/blob/master/colorswap.c
  15. Példáulsudo apt install freeglut3-dev
  16. http://en.swpat.org/wiki/OpenGL
  17. (en) Rich Geldreich, "Az  OpenGL-t érintő dolgok  " , Rich Geldreich Tech Blogja , 2014. május 11.
  18. (in) Michael Larabel, Train AMD Fejlesztő: OpenGL elromlott  " , Phoronix május 31., 2014-ben.

Lásd is

Kapcsolódó cikkek

Bibliográfia

  • Open GL 2.0: hivatalos útmutató , Jackie Neider, Mason Woo, Tom Davis, Dave Shreiner, Véronique Campillo, 2006, CampusPress ( ISBN  978-2-7440-2086-5 )
  • (en) OpenGL programozási útmutató: Az OpenGL tanulásának hivatalos útmutatója, 2. verzió , Dave Shreiner, Mason Woo, Jackie Neider, 2005, Addison-Wesley ( ISBN  978-0-321-33573-9 )
  • (en) OpenGL Reference Manual: Az Open Gl hivatalos referenciadokumentuma, 1.4 verzió , Dave Shreiner, 2004, Addison-Wesley ( ISBN  978-0-321-17383-6 )
  • (en) OpenGL árnyékoló nyelv , 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 játékprogramozás kezdete , Dave Astle, Kevin Hawkins, 2004, Tanfolyamtechnika ( ISBN  1-59200-369-9 )

Leírás

Külső linkek