OpenGL - OpenGL

OpenGL
Logo OpenGL (2D) .svg
Linuxové jádro a OpenGL video hry.svg
Videohry zadávají výpočty vykreslování v reálném čase na GPU přes OpenGL. Vykreslené výsledky se neposílají zpět do hlavní paměti, ale do framebufferu video paměti. Řadič displeje poté odešle tato data do zobrazovacího zařízení.
Původní autoři Silikonová grafika
Vývojáři Khronos Group
(dříve ARB )
První vydání 30. června 1992 ; Před 29 lety ( 1992-06-30 )
Stabilní uvolnění
4.6 / 31. července 2017 ; Před 4 lety ( 2017-07-31 )
Napsáno C
Typ 3D grafika API
Licence
  • Open source licence pro použití SI: Toto je Licence na svobodný software B úzce založená na licencích BSD, X a Mozilla.
  • Licence ochranné známky pro nové držitele licence, kteří chtějí používat ochrannou známku a logo OpenGL a požadovat shodu.
webová stránka opengl .org

OpenGL ( Open Graphics Library ) je cross-language , cross-platform application programming interface (API) for rendering 2D and 3D vector graphics . API se obvykle používá k interakci s grafickou procesorovou jednotkou (GPU) k dosažení hardwarově akcelerovaného vykreslování .

Společnost Silicon Graphics, Inc. (SGI) začala vyvíjet OpenGL v roce 1991 a vydala jej 30. června 1992; aplikace jej hojně využívají v oblasti počítačem podporovaného designu (CAD), virtuální reality , vědecké vizualizace , vizualizace informací, simulace letu a videoher . Od roku 2006 je OpenGL spravováno neziskovým technologickým konsorciem Khronos Group .

Design

Ilustrace procesu grafického potrubí

Specifikace OpenGL popisuje abstraktní API pro kreslení 2D a 3D grafiky. Ačkoli je možné, že API bude implementováno zcela v softwaru, je navrženo tak, aby bylo implementováno převážně nebo zcela v hardwaru .

API je definováno jako sada funkcí, které může klientský program volat, vedle sady pojmenovaných celočíselných konstant (například konstanta GL_TEXTURE_2D, která odpovídá desetinnému číslu 3553). Ačkoli jsou definice funkcí povrchně podobné těm z programovacího jazyka C , jsou jazykově nezávislé. OpenGL jako takový má mnoho jazykových vazeb , z nichž nejvýznamnější je vazba JavaScript WebGL (API, založené na OpenGL ES 2.0 , pro 3D vykreslování z webového prohlížeče ); C vazby WGL , GLX a CGL ; vazba C poskytovaná systémem iOS ; a vazby Java a C poskytované Androidem .

Kromě toho, že je OpenGL nezávislý na jazyce, je také multiplatformní. Specifikace neříká nic o získávání a správě kontextu OpenGL, ponechává to jako detail základního systému oken . Ze stejného důvodu se OpenGL zabývá čistě vykreslováním a neposkytuje žádná rozhraní API týkající se vstupu, zvuku nebo oken.

Rozvoj

OpenGL je aktivně vyvíjené API. Skupina Khronos Group pravidelně vydává nové verze specifikací OpenGL , z nichž každá rozšiřuje rozhraní API o podporu různých nových funkcí. O podrobnostech každé verze rozhoduje konsenzus mezi členy skupiny, včetně výrobců grafických karet, návrhářů operačních systémů a obecných technologických společností, jako jsou Mozilla a Google .

Kromě funkcí vyžadovaných jádrem API mohou prodejci grafické jednotky (GPU) poskytovat další funkce ve formě rozšíření . Rozšíření mohou zavádět nové funkce a nové konstanty a mohou uvolnit nebo odstranit omezení stávajících funkcí OpenGL. Prodejci mohou pomocí rozšíření vystavovat vlastní rozhraní API, aniž by potřebovali podporu od jiných dodavatelů nebo skupiny Khronos jako celku, což výrazně zvyšuje flexibilitu OpenGL. Všechna rozšíření jsou shromažďována a definována v registru OpenGL.

Každé rozšíření je spojeno s krátkým identifikátorem na základě názvu společnosti, která jej vyvinula. Například identifikátor Nvidia je NV, který je součástí názvu rozšíření GL_NV_half_float, konstanty GL_HALF_FLOAT_NVa funkce glVertex2hNV(). Pokud více dodavatelů souhlasí s implementací stejné funkce pomocí stejného API, může být vydáno sdílené rozšíření pomocí identifikátoru EXT. V takových případech se také může stát, že rada pro kontrolu architektury skupiny Khronos udělí rozšíření výslovné schválení, v takovém případě se použije identifikátor ARB.

Funkce zavedené každou novou verzí OpenGL jsou obvykle tvořeny kombinovanými funkcemi několika široce implementovaných rozšíření, zejména rozšíření typu ARB nebo EXT.

Dokumentace

OpenGL Architecture Review Board vydal řadu manuálů spolu se specifikací, které byly aktualizovány za účelem sledování změn v API. Ty se běžně označují barvami jejich obalů:

Červená kniha
OpenGL Programming Guide, 9. vydání. ISBN  978-0-134-49549-1
Oficiální průvodce výukou OpenGL, verze 4.5 se SPIR-V
Oranžová kniha
OpenGL Shading Language, 3. vydání. ISBN  0-321-63763-1
Návod a příručka pro GLSL .

Historické knihy (před OpenGL 2.0):

Zelená kniha
Programování OpenGL pro systém X Window. ISBN  978-0-201-48359-8
Kniha o rozhraní X11 a sadě nástrojů OpenGL Utility Toolkit (GLUT).
Modrá kniha
OpenGL Reference manual, 4. vydání. ISBN  0-321-17383-X
V podstatě tištěný výtisk unixových manuálních (man) stránek pro OpenGL.
Obsahuje rozkládací diagram velikosti plakátu ukazující strukturu idealizované implementace OpenGL.
Kniha Alpha (bílý obal)
Programování OpenGL pro Windows 95 a Windows NT. ISBN  0-201-40709-4
Kniha o propojení OpenGL s Microsoft Windows.

Dokumentace OpenGL je také přístupná prostřednictvím její oficiální webové stránky.

Přidružené knihovny

Nejstarší verze OpenGL byly vydány s doprovodnou knihovnou nazvanou OpenGL Utility Library (GLU). Poskytoval jednoduché, užitečné funkce, které by v současném hardwaru pravděpodobně nebyly podporovány, jako je tessellating a generování mipmap a primitivních tvarů . Specifikace GLU byla naposledy aktualizována v roce 1998 a závisí na funkcích OpenGL, které jsou nyní zastaralé .

Soubory nástrojů pro kontext a okno

Vzhledem k tomu, že vytvoření kontextu OpenGL je poměrně složitý proces, a vzhledem k tomu, že se pohybuje mezi operačními systémy , tvorba automatická OpenGL kontext se stal společným rysem několika herní rozvoje a uživatelského rozhraní knihoven , včetně SDL , Allegro , SFML , FLTK , a Qt . Několik knihoven bylo navrženo výhradně k vytvoření okna podporujícího OpenGL. První takovou knihovnou byl OpenGL Utility Toolkit (GLUT), později nahrazený freeglut . GLFW je novější alternativou.

  • Tyto sady nástrojů jsou navrženy tak, aby vytvářely a spravovaly okna OpenGL a spravovaly vstup, ale jen málo.
  • GLFW -obslužný program pro ovládání oken na různých platformách a klávesnice, myši a joysticku; je více zaměřená na hru
  • freeglut - obslužný program pro práci s okny a klávesnice s myší; jeho API je nadmnožinou GLUT API a je stabilnější a aktuálnější než GLUT
  • OpenGL Utility Toolkit (GLUT) - Starý obslužný program oken, již není udržován.
  • Několik „multimediálních knihoven“ může vytvářet okna OpenGL, kromě vstupních, zvukových a dalších úkolů užitečných pro herní aplikace
  • Allegro 5 -multiplatformní multimediální knihovna s C API zaměřená na vývoj her
  • Simple DirectMedia Layer (SDL) -multiplatformní multimediální knihovna s C API
  • SFML -multiplatformní multimediální knihovna s C ++ API a několika dalšími vazbami na jazyky jako C#, Java, Haskell a Go
  • Widget sady nástrojů
  • FLTK -malá multiplatformní knihovna widgetů C ++
  • Qt -Sada nástrojů widgetu pro různé platformy C ++. Poskytuje mnoho pomocných objektů OpenGL, které dokonce odstraňují rozdíl mezi desktopovým GL a OpenGL ES
  • wxWidgets -Sada nástrojů widgetu pro různé platformy C ++

Knihovny načítání rozšíření

Vzhledem k vysoké pracovní zátěži spojené s identifikací a načítáním rozšíření OpenGL bylo navrženo několik knihoven, které automaticky načítají všechna dostupná rozšíření a funkce. Mezi příklady patří GLEE , GLEW a glbinding . Rozšíření jsou také automaticky načítána většinou jazykových vazeb, jako je JOGL a PyOpenGL .

Implementace

Mesa 3D je open-source implementace OpenGL. Může využívat čisté vykreslování softwaru a může také využívat hardwarovou akceleraci na platformách BSD , Linux a dalších pomocí využití infrastruktury Direct Rendering Infrastructure . Od verze 20.0 implementuje verzi 4.6 standardu OpenGL.

Dějiny

V osmdesátých letech byl vývoj softwaru, který by fungoval se širokou škálou grafického hardwaru, skutečnou výzvou. Vývojáři softwaru napsali vlastní rozhraní a ovladače pro každý kus hardwaru. To bylo drahé a mělo to za následek znásobení úsilí.

Počátkem 90. let byla společnost Silicon Graphics (SGI) lídrem v oblasti 3D grafiky pro pracovní stanice. Jejich IRIS GL API se stalo průmyslovým standardem, který se používá více než PHIGS založené na otevřených standardech . Důvodem bylo to, že IRIS GL byl považován za jednodušší na používání a protože podporoval vykreslování okamžitého režimu . Naproti tomu PHIGS byl považován za obtížně použitelný a zastaralý z hlediska funkčnosti.

Konkurenti SGI (včetně Sun Microsystems , Hewlett-Packard a IBM ) byli také schopni uvést na trh 3D hardware podporovaný rozšířeními standardu PHIGS, který tlačil SGI na open source verzi IrisGL jako veřejného standardu s názvem OpenGL .

SGI však měla mnoho zákazníků, pro které by změna z IrisGL na OpenGL vyžadovala značné investice. Kromě toho měl IrisGL funkce API, které byly pro 3D grafiku irelevantní. Například zahrnovalo API pro okna, klávesnice a myši, částečně proto, že bylo vyvinuto před X Window System a Sun's NeWS . A knihovny IrisGL nebyly vhodné k otevření kvůli problémům s licencemi a patentem. Tyto faktory vyžadovaly, aby SGI nadále podporovala pokročilá a proprietární programovací API Iris Inventor a Iris Performer, zatímco podpora trhu pro OpenGL dozrávala.

Jedním z omezení IrisGL bylo, že poskytoval pouze přístup k funkcím podporovaným základním hardwarem. Pokud grafický hardware funkci nativně nepodporoval, aplikace ji nemohla použít. OpenGL tento problém překonal poskytnutím softwarových implementací funkcí nepodporovaných hardwarem, což umožňuje aplikacím používat pokročilou grafiku v systémech s relativně malým výkonem. OpenGL standardizoval přístup k hardwaru, přenesl odpovědnost za vývoj programů hardwarových rozhraní ( ovladačů zařízení ) na výrobce hardwaru a delegoval funkce oken na základní operační systém. S tolika různými druhy grafického hardwaru mělo to, že je všechny takto mluví stejným jazykem, pozoruhodný dopad tím, že vývojářům softwaru poskytla platformu pro vývoj 3D softwaru na vyšší úrovni.

V roce 1992 vedl SGI vytvoření OpenGL Architecture Review Board (OpenGL ARB), skupiny společností, které by v budoucnu udržovaly a rozšiřovaly specifikaci OpenGL.

V roce 1994 si SGI pohrával s myšlenkou vydat něco s názvem „ OpenGL ++ “, které obsahovalo prvky, jako je API pro grafy scén (pravděpodobně na základě jejich technologie Performer ). Specifikace byla rozeslána mezi několik zúčastněných stran - ale nikdy z ní nebyl produkt.

Microsoft vydal Direct3D v roce 1995, který se nakonec stal hlavním konkurentem OpenGL. Více než 50 vývojářů her podepsalo otevřený dopis společnosti Microsoft vydaný 12. června 1997 a vyzval společnost k aktivní podpoře Open GL. 17. prosince 1997 zahájily společnosti Microsoft a SGI projekt Fahrenheit , což bylo společné úsilí s cílem sjednotit rozhraní OpenGL a Direct3D (a také přidat rozhraní API pro grafy scén). V roce 1998 se k projektu připojila společnost Hewlett-Packard. Zpočátku to ukazovalo určitý příslib vnést do světa interaktivních 3D počítačových grafických rozhraní API pořádek, ale kvůli finančním omezením v SGI, strategickým důvodům v Microsoftu a obecnému nedostatku průmyslové podpory se od toho v roce 1999 upustilo.

V červenci 2006 OpenGL Architecture Review Board hlasovala pro přenos kontroly nad standardem OpenGL API na Khronos Group.

Historie verzí

První verze OpenGL, verze 1.0, byla vydána 30. června 1992 Markem Segalem a Kurtem Akeleyem . Od té doby byla OpenGL příležitostně rozšířena vydáním nové verze specifikace. Tato vydání definují základní sadu funkcí, které musí podporovat všechny vyhovující grafické karty a proti nimž lze snáze zapisovat nová rozšíření. Každá nová verze OpenGL má tendenci zahrnovat několik rozšíření, která mají širokou podporu mezi dodavateli grafických karet, i když detaily těchto rozšíření mohou být změněny.

Historie verzí OpenGL
Verze Datum vydání Funkce
1.1 04.03.1997 Objekty textury, vrcholová pole
1.2 16. března 1998 3D textury, BGRA a balené pixelové formáty, představení obrazové podmnožiny užitečné pro aplikace pro zpracování obrazu
1.2.1 14. října 1998 Koncept rozšíření ARB
1.3 14. srpna 2001 Multitexturing , multisampling, komprese textur
1.4 24. července 2002 Hloubkové textury, GLSlang
1.5 29. července 2003 Vertex Buffer Object (VBO), Occlusion Queries
2.0 7. září 2004 GLSL 1.1, MRT , bez síly dvou textur, Point Sprites, oboustranná šablona
2.1 2. července 2006 GLSL 1.2, objekt Pixel Buffer Object (PBO), sRGB textury
3,0 11. srpna 2008 GLSL 1.3, texturní pole, podmíněné vykreslování, objekt vyrovnávací paměti rámců (FBO)
3.1 24. března 2009 GLSL 1.4, Instancing, Texture Buffer Object, Uniform Buffer Object, Primitive restart
3.2 3. srpna 2009 GLSL 1.5, Geometry Shader, textury s více vzorky
3.3 11. března 2010 GLSL 3.30, backportuje co nejvíce funkcí ze specifikace OpenGL 4.0
4,0 11. března 2010 GLSL 4.00, Teselace na GPU, shadery se 64bitovou přesností
4.1 26. července 2010 GLSL 4.10, ladicí výstupy vhodné pro vývojáře, kompatibilita s OpenGL ES 2.0
4.2 08.08.2011 GLSL 4.20, shadery s atomovými čítači, instanční zpětnovazební transformační kresba, shaderové balení, vylepšení výkonu
4.3 06.08.2012 GLSL 4.30, výpočetní shadery využívající paralelismus GPU, objekty vyrovnávací paměti shaderu, vysoce kvalitní komprese textur ETC2/EAC, zvýšené zabezpečení paměti, rozšíření robustnosti více aplikací, kompatibilita s OpenGL ES 3.0
4.4 22. července 2013 GLSL 4.40, Řízení umístění vyrovnávací paměti, Efektivní asynchronní dotazy, Proměnné rozvržení shaderu, Efektivní vazba více objektů, Zjednodušené portování aplikací Direct3D, Rozšíření textury bez vazby, Rozšíření řídké textury
4.5 11. srpna 2014 GLSL 4.50, Direct State Access (DSA), Flush Control, Robustnost, OpenGL ES 3.1 API a shader kompatibilita, funkce emulace DX11
4.6 31. července 2017 GLSL 4.60, Efektivnější zpracování geometrie a provádění shaderů, více informací, bez chybového kontextu, polygonová ofsetová svorka, SPIR-V, anizotropní filtrování

OpenGL 2.0

Datum vydání : 7. září 2004

OpenGL 2.0 byl původně koncipován 3Dlabs, aby vyřešil obavy, že OpenGL stagnuje a postrádá silný směr. 3Dlabs navrhla řadu zásadních dodatků ke standardu. Většina z nich byla v té době odmítnuta ARB nebo se jinak nikdy neuskutečnila ve formě, kterou navrhovaly 3Dlabs. Jejich návrh stínovacího jazyka ve stylu C byl nakonec dokončen, což vedlo k současné formulaci OpenGL Shading Language ( GLSL nebo GLslang). Stejně jako stínovací jazyky podobné sestavení, které nahrazoval, umožňovalo nahrazení vrcholu a fragmentové trubky s pevnou funkcí shadery , i když tentokrát bylo napsáno v jazyce C na vysoké úrovni.

Konstrukce GLSL byla pozoruhodná tím, že udělala relativně málo ústupků limitům hardwaru, který byl tehdy k dispozici. To se vrátilo k dřívější tradici OpenGL, která stanovovala ambiciózní, do budoucnosti zaměřený cíl pro 3D akcelerátory, místo aby pouze sledovala stav aktuálně dostupného hardwaru. Konečná specifikace OpenGL 2.0 zahrnuje podporu pro GLSL.

Longs Peak a OpenGL 3.0

Před vydáním OpenGL 3.0 měla nová revize kódové označení Longs Peak . V době svého původního oznámení byl Longs Peak představen jako první hlavní revize API v životě OpenGL. Skládal se z přepracování způsobu, jakým OpenGL funguje, a vyžadoval zásadní změny v API.

Předloha zavedla změnu správy objektů. Objektový model GL 2.1 byl postaven na stavovém návrhu OpenGL. To znamená, že k úpravě objektu nebo k jeho použití je třeba objekt svázat se stavovým systémem, poté provést úpravy stavu nebo provést volání funkcí, která používají vázaný objekt.

Vzhledem k tomu, že OpenGL používá státní systém, musí být objekty měnitelné. To znamená, že základní struktura objektu se může kdykoli změnit, i když vykreslovací kanál používá tento objekt asynchronně. Objekt textury lze předefinovat z 2D na 3D. To vyžaduje, aby jakékoli implementace OpenGL přidaly stupeň interní správy objektů.

V rámci API Longs Peak by se vytváření objektů stalo atomickým , pomocí šablon by se definovaly vlastnosti objektu, který by byl vytvořen jedním voláním funkce. Objekt pak mohl být okamžitě použit ve více vláknech. Objekty by byly také neměnné; jejich obsah však mohl být změněn a aktualizován. Například textura může změnit svůj obrázek, ale její velikost a formát nelze změnit.

Aby byla zajištěna zpětná kompatibilita, staré API založené na stavu by bylo stále k dispozici, ale v novějších verzích OpenGL by prostřednictvím starého API nebyla zveřejněna žádná nová funkce. To by umožnilo starším kódovým základnám, jako je většina CAD produktů, pokračovat v běhu, zatímco jiný software by mohl být zapsán proti novému API nebo by mohl být portován.

Longs Peak měl být původně dokončen v září 2007 pod názvem OpenGL 3.0, ale skupina Khronos 30. října oznámila, že narazila na několik problémů, které chtěla před vydáním specifikace vyřešit. V důsledku toho došlo ke zpoždění specifikace a skupina Khronos přešla do výpadku médií až do vydání finální specifikace OpenGL 3.0.

Konečná specifikace se ukázala mnohem méně revoluční než návrh Longs Peak. Namísto odebrání všech okamžitých režimů a opravených funkcí (režim bez shaderu) je specifikace zahrnovala jako zastaralé funkce. Navrhovaný objektový model nebyl zahrnut a nebyly oznámeny žádné plány, které by jej zahrnovaly do budoucích revizí. Výsledkem je, že API zůstalo do značné míry stejné, přičemž několik stávajících rozšíření bylo povýšeno na základní funkce.

U některých vývojářských skupin toto rozhodnutí vyvolalo rozruch, přičemž mnoho vývojářů tvrdilo, že na protest přejdou na DirectX . Většina stížností se točila kolem nedostatečné komunikace Khronos s vývojovou komunitou a vyřazování více funkcí, které mnozí vnímali příznivě. Mezi další frustrace patřil požadavek hardwaru na úrovni DirectX 10 na použití OpenGL 3.0 a absence shaderů geometrie a instančního vykreslování jako základních funkcí.

Jiné zdroje uvádějí, že reakce komunity nebyla tak závažná, jak se původně uvádělo, přičemž mnoho prodejců tuto aktualizaci podporovalo.

OpenGL 3.0

Datum vydání : 11. srpna 2008

OpenGL 3.0 zavedl mechanismus ukončení podpory pro zjednodušení budoucích revizí API. Některé funkce, označené jako zastaralé, by bylo možné zcela zakázat tím, že z okenního systému vyžádáte kontext kompatibilní s dopřednými operacemi. K funkcím OpenGL 3.0 bylo stále možné přistupovat společně s těmito zastaralými funkcemi, ale na základě požadavku na úplný kontext .

Zastaralé funkce zahrnují:

  • Všechny zpracování vrcholů a fragmentů s pevnou funkcí
  • Vykreslování v přímém režimu pomocí glBegin a glEnd
  • Zobrazit seznamy
  • Cíle vykreslování indexovaných barev
  • OpenGL Shading Language verze 1.10 a 1.20

OpenGL 3.1

Datum vydání : 24. března 2009

OpenGL 3.1 zcela odstranil všechny funkce, které byly ve verzi 3.0 zastaralé, s výjimkou širokých čar. Od této verze již není možné přistupovat k novým funkcím pomocí úplného kontextu nebo přistupovat k zastaralým funkcím pomocí dopředu kompatibilního kontextu . Pokud implementace podporuje rozšíření ARB_compatibility , je výjimka z dřívějšího pravidla , ale není to zaručeno.

Hardware: Mesa podporuje ARM Panfrost s verzí 21.0.

OpenGL 3.2

Datum vydání : 3. srpna 2009

OpenGL 3.2 dále staví na mechanismech ukončování podpory zavedených OpenGL 3.0 rozdělením specifikace na základní profil a profil kompatibility . Mezi kontexty kompatibility patří dříve odebraná API s pevnými funkcemi, což je ekvivalent rozšíření ARB_compatibility vydaného společně s OpenGL 3.1, zatímco základní kontexty nikoli. OpenGL 3.2 také zahrnoval upgrade na GLSL verze 1.50.

OpenGL 3.3

Datum vydání: 11. března 2010

Mesa podporuje softwarový ovladač SWR, softpipe a pro starší karty Nvidia s NV50. D3D12 je nová emulace pro rozšíření Microsoft WSL pro použití Direct 12.

OpenGL 4.0

Datum vydání : 11. března 2010

OpenGL 4.0 byl vydán společně s verzí 3.3. Byl navržen pro hardware schopný podporovat Direct3D 11.

Stejně jako v OpenGL 3.0, tato verze OpenGL obsahuje vysoký počet docela bezvýznamných rozšíření, navržených tak, aby důkladně odhalily schopnosti hardwaru třídy Direct3D 11. Níže jsou uvedena pouze nejvlivnější rozšíření.

Hardwarová podpora: řada Nvidia GeForce 400 a novější, AMD Radeon HD 5000 Series a novější (shadery FP64 implementované emulací na některých GPU TeraScale), grafika Intel HD v procesorech Intel Ivy Bridge a novějších.

OpenGL 4.1

Datum vydání : 26. července 2010

Hardwarová podpora: řada Nvidia GeForce 400 a novější, AMD Radeon HD 5000 Series a novější (shadery FP64 implementované emulací na některých GPU TeraScale), grafika Intel HD v procesorech Intel Ivy Bridge a novějších.

  • Minimální „maximální velikost textury“ je 16 384 × 16 384 pro implementaci této specifikace GPU.

OpenGL 4.2

Datum vydání: 8. srpna 2011

  • Podpora shaderů s atomovými čítači a operacemi načítání-ukládání-atomové čtení-úpravy-zápis na jednu úroveň textury
  • Kreslení více instancí dat zachycených zpracováním vrcholů GPU (včetně mozaikování), aby bylo možné efektivně přemístit a replikovat složité objekty
  • Podpora pro úpravu libovolné podmnožiny komprimované textury, aniž by bylo nutné znovu stahovat celou texturu do GPU pro výrazné zlepšení výkonu

Hardwarová podpora: řada Nvidia GeForce 400 a novější, AMD Radeon HD 5000 Series a novější (shadery FP64 implementované emulací na některých GPU TeraScale) a grafika Intel HD v procesorech Intel Haswell a novějších. (Linux Mesa: Ivy Bridge a novější)

OpenGL 4.3

Datum vydání: 6. srpna 2012

  • Vypočítejte shadery využívající paralelnosti GPU v kontextu grafického kanálu
  • Objekty vyrovnávací paměti úložiště shaderu, které umožňují shaderům číst a zapisovat objekty vyrovnávací paměti, jako je načítání/ukládání obrázků, od verze 4.2, ale nikoli prostřednictvím volání funkcí, ale prostřednictvím jazyka.
  • Dotazy na parametry formátu obrázku
  • Komprese textur ETC2/EAC jako standardní funkce
  • Plná kompatibilita s API OpenGL ES 3.0
  • Ladění schopností přijímat zprávy o ladění během vývoje aplikace
  • Zobrazení textur k interpretaci textur různými způsoby bez replikace dat
  • Vyšší zabezpečení paměti a robustnost více aplikací

Hardwarová podpora: AMD Radeon HD 5000 Series a novější (shadery FP64 implementované emulací na některých GPU TeraScale), Intel HD Graphics v procesorech Intel Haswell a novějších. (Linux Mesa: Ivy Bridge bez texturování šablony, Haswell a novější), řada Nvidia GeForce 400 a novější. Emulace VIRGL pro virtuální počítače podporuje 4.3+ s Mesa 20.

OpenGL 4.4

Datum vydání: 22. července 2013

  • Vynucené ovládací prvky využití objektu vyrovnávací paměti
  • Asynchronní dotazy na objekty vyrovnávací paměti
  • Vyjádření více ovládacích prvků rozložení proměnných rozhraní v shaderech
  • Efektivní vazba více objektů současně

Hardwarová podpora: AMD Radeon HD 5000 Series a novější (shadery FP64 implementované emulací na některých GPU TeraScale), Intel HD Graphics v procesorech Intel Broadwell a novějších (Linux Mesa: Haswell a novější), řada Nvidia GeForce 400 a novější, Tegra K1 .

OpenGL 4.5

Datum vydání: 11. srpna 2014

  • Direct State Access (DSA) - objektové přístupové objekty umožňují dotazovat a upravovat stav bez vazby objektů na kontexty, což zvyšuje efektivitu a flexibilitu aplikací a middlewaru.
  • Flush Control-aplikace mohou ovládat vyprázdnění čekajících příkazů před přepínáním kontextu-umožňuje vysoce výkonné vícevláknové aplikace;
  • Robustnost - poskytuje zabezpečenou platformu pro aplikace, jako jsou prohlížeče WebGL, včetně zabránění resetování GPU, které ovlivňuje jakékoli jiné spuštěné aplikace;
  • Kompatibilita API OpenGL ES 3.1 a shaderu - umožňuje snadný vývoj a spouštění nejnovějších aplikací OpenGL ES na stolních počítačích.

Hardwarová podpora: AMD Radeon HD řady 5000 a novější (shadery FP64 implementované emulací na některých GPU TeraScale), grafika Intel HD v procesorech Intel Broadwell a novějších (Linux Mesa: Haswell a novější), řada Nvidia GeForce 400 a novější, Tegra K1 , a Tegra X1.

OpenGL 4.6

Datum vydání: 31. července 2017

Hardwarová podpora: AMD Radeon HD 7000 Series a novější (shadery FP64 implementované emulací na některých GPU TeraScale), Intel Haswell a novější, řada Nvidia GeForce 400 a novější.

Podpora ovladačů:

  • Mesa 19.2 na Linuxu podporuje OpenGL 4.6 pro Intel Broadwell a novější. Mesa 20.0 podporuje GPU AMD Radeon, zatímco podpora pro Nvidia Kepler+ probíhá. Zink as Emulation Driver with 21.1 and software driver LLVMpipe also support with Mesa 21.0.
  • Ovladač grafické karty AMD Adrenalin 18.4.1 pro Windows 7 SP1 , 10 verze 1803 (aktualizace z dubna 2018) pro AMD Radeon ™ HD 7700+, HD 8500+ a novější. Vydáno v dubnu 2018.
  • Ovladač grafiky Intel 26.20.100.6861 pro Windows 10 . Vydáno v květnu 2019.
  • Ovladač grafické karty NVIDIA GeForce 397.31 pouze pro Windows 7 , 8 , 10 x86-64 bitů, bez 32bitové podpory. Vydáno v dubnu 2018

Alternativní implementace

Apple zavrhl OpenGL v iOS 12 a macOS 10.14 Mojave ve prospěch Metal , ale stále je k dispozici od macOS 11 Big Sur (včetně zařízení Apple Silicon ). Poslední verze podporovaná pro OpenGL je 4.1 z roku 2011. Proprietární knihovna od Molten - autoři MoltenVK - zvaná MoltenGL, umí překládat volání OpenGL do Metal.

Existuje několik projektů, které se pokoušejí implementovat OpenGL na Vulkan. Vulkanský backend pro Google ANGLE dosáhl v červenci 2020 shody OpenGL ES 3.1. Projekt Mesa3D také obsahuje takový ovladač, zvaný Zink .

Budoucnost OpenGL

V červnu 2018 společnost Apple přestala používat rozhraní OpenGL API na všech svých platformách ( iOS , macOS a tvOS ), což vývojáře důrazně vybízelo , aby používali své proprietární rozhraní Metal API , které bylo představeno v roce 2014.

Operační systémy Fuchsia a Stadia podporují pouze Vulkan

17. září 2021 Valve odstranilo OpenGL z Dota 2

Všechny nové hry z roku 2016 založené na herním enginu ID Tech 6 používají Vulkan

Herní engine ID Tech 7 podporuje pouze Vulkan

Atypical Games s podporou Samsungu si vzali za úkol implementovat podporu Vulkan do svého enginu. Nakonec vyšlo najevo, že implementace Vulkanu skutečně nahradí OpenGL na všech platformách kromě Apple.

Vulkan

Vulkan, dříve nazývaný „Next Generation OpenGL Initiative“ (glNext), je snahou přepracovat sjednocení OpenGL a OpenGL ES do jednoho společného API, které nebude zpětně kompatibilní se stávajícími verzemi OpenGL.

Počáteční verze Vulkan API byla vydána 16. února 2016.

Viz také

Reference

Další čtení

externí odkazy