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.
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.
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 .
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.
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.
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.
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.
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.
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.
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.
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:
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.
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é.
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; }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:
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 :
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 .
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.