OpenGL ES
OpenGL ES (z anglického OpenGL for Embedded Systems) je část OpenGL rozhraní (API) pro počítačové vykreslování 2D a 3D grafiky pro použití ve video hrách, typicky akcelerovaných za pomoci GPU. Je určen pro malé, vestavěné systémy, jako smartphony, tablety, herní konzole a osobní plánovače.
Vývojář | Khronos Group |
---|---|
Aktuální verze | 3.2 (10. červenec 2015[1]) |
Připravovaná verze | 3.3 |
Operační systém | multiplatformní |
Platforma | multiplatformní software |
Vyvíjeno v | OpenGL ES Shading Language |
Typ softwaru | API, framework |
Web | https://www.khronos.org/opengles/ |
Některá data mohou pocházet z datové položky. |
Toto API je použitelné v mnoha počítačových jazycích a na více platformách. Nepředstavuje ekvivalent k OpenGL API jako GLUT nebo GLU pro OpenGL ES. OpenGL ES je spravováno neziskovým technologickým konsorciem Khronos Group.
Verze
Existuje několik verzí specifikací OpenGL ES. OpenGL ES 1.0 je postavena na roveň specifikace OpenGL 1.3, OpenGL ES 1.1 je definována vztahem ke specifikaci OpenGL 1.5 a OpenGL ES 2.0 je definována relativně ke specifikaci OpenGL 2.0. Tím je myšleno, že například nějaká aplikace napsaná pro Open GL ES 1.0 může být snadno přenesena na desktopovou OpenGL 1.3. OpenGL ES je zjednodušená verze tohoto API, a obrácený postup může a nemusí být úspěšný, v závislosti na použitých rysech API.
Rozdíly ve verzích OpenGL a OpenGL ES jsou potom například v podpoře pohyblivé řádové čárky, kdy OpenGL ES podporuje pouze pevnou řádovou čárku (celá čísla).
OpenGL ES 1.0
OpenGL ES 1.0 obsahuje funkcionalitu hodně omezenou oproti originalnímu OpenGL API a jen trochu funkcionality je přidáno navíc. Jeden zřetelný rozdíl mezi OpenGL a OpenGL ES je ten, že OpenGL ES odstraňuje potřebu uzavírat volání OpenGL knihovny s glBegin
a glEnd
. Další výraznou změnou je, že sémantika základních vykreslovacích funkcí umožňuje volání s vertex poli a podporu pevné řádové čárky pro vertex souřadnice. Také byly přidány atributy pro podporu vestavěných (grafických) procesorů, které často postrádají FPU, jednotku pro počítání s desetinnými čísly. Mnoho dalších funkcí a vykreslovacích součástí bylo kvůli odlehčení ve verzi OpenGL ES odstraněno, včetně:
- čtyřúhelníkové a polygonální vykreslovací primitiva,
- polygonální a antialiased polygonál rendering není podporován, přestože vykreslování použitím multisamplingu je stále možné (raději než alpha border fragmenty),
ARB_Image
pixel class operace není podporována, ani bitmaps nebo 3D textures,- několik komplikovaných vykreslovacích módů je eliminováno, včetně frontbufferu akumulačního bufferu. Bitmapové operace, speciálně kopírování jednotlivých pixelů není možné, ani evaluatory, ani (uživatelem) vybrané operace,
- display listy a zpětná vazba je odebrána, jako jsou push a pop operace pro stavové attributy,
- některé materiálové parametry byly odstraněny, včetně back-face parametrů a uživatelsky definovaných ořezávacích rovin.
OpenGL ES 1.1
OpenGL ES 1.1 přidává například povinnou podporu pro multitexture, vylepšenou multitexturovou podporu (včetně slučovače a skalárního operace součinu textury), automatické generování mipmap, vertex buffer objects, stavové dotazy, uživatelských ořezávacích rovin, a větší možnosti co se týče vykreslování bodů.
OpenGL ES 2.0
OpenGL ES 2.0 bylo zveřejněno v březnu 2007.[2] Je zhruba na úrovni OpenGL 2.0, ale eliminuje většinu renderovacích pipeline s pevně nastavenou funkcí ve prospěch programovatelných funkcí podobně, jako v případě přechodu od OpenGL 3.0 to 3.1.[3] Řízení průchodu ve shaderech je obecně omezeno na dopředné skoky a cykly, kde maximální počet průchodů může být snadno určen při překladu.[4] Většina všech vykreslovaných vlastností transformační a osvětlovací fáze, jako je specifikace materiálu a světelných parametrů dříve stanovených pevnou funkce API, se nahrazují shadery napsaných grafickým programátorem. Výsledkem je, že OpenGL ES 2.0 není zpětně kompatibilní s OpenGL ES 1.1. Některé nekompatibility mezi desktopovou verzí OpenGL a OpenGL ES 2.0 zůstávají do OpenGL 4.1, kdy je přidáno rozšíření GL_ARB_ES2_compatibility.
[5]
OpenGL ES 3.0
Specifikace OpenGL ES 3.0[6] byla zveřejněna v srpnu 2012.[7] OpenGL ES 3.0 je zpětně kompatibilní s OpenGL ES 2.0, umožňuje aplikacím postupně přidávat nové vizuální vlastnosti do aplikací. OpenGL 4.3 poskytuje plnou kompatibilitu s OpenGL ES 3.0.
Nové funkce ve specifikaci OpenGL ES 3.0 zahrnují:
- několikanásobná rozšíření ve vykreslovací pipeline pro umožnění akcelerace pokročilých vizuálních efektů včetně: occlusion queries, transform feedback, instanced rendering a podpora pro čtyři nebo více vykreslovaných objektů,
- vysoce kvalitní ETC2 / EAC komprese textur jako standard, eliminující potřebu odlišného souboru textur for each platform,
- nová verze GLSL ES shader jazyka[8] s plnou podporou pro celočíselné a desetinné operace v jednoduché přesnosti (32 bit),
- velice rozšířené functionality pro texturování, včetně garantované podpory pro desetinné textury, 3D textury, depth textury, vertex textury, NPOT textury, R/RG textury, immutable textury, 2D pole textur, swizzles, LOD a mip level clamps, bezešvé cube maps a sampler objekty,
- rozšiřující soubor vyžadovaných, explicitně určené textury a render-buffer formáty, redukující implementační variabilitu a usnadňující psaní mobilních aplikací.
OpenGL ES 3.1
Specifikace OpenGL ES 3.1 byla zveřejněna v březnu 2014.[9][10] OpenGL ES 3.1 je zpětně kompatibilní s OpenGL ES 2.0 a OpenGL ES 3.0, poskytuje funkce odlehčeného Open GL 4.4 z desktopového prostředí.
Nové funkce ve specifikaci OpenGL ES 3.1 zahrnují:
- zavedení výpočetních shaderů – applikace mohou použít GPU k provádění výpočetních úloh, úzce spojených s grafickým vykreslováním. Výpočetní shadery jsou napsány v GLSL ES výpočetním jazyce, a mohou sdílet data s grafickou pipeline[11];
- oddělené objekty shaderů – applikace mohou programovat vertex a fragment shader stupně GPU nezávisle, a mohou střídat a srovnávat vertex a fragment programy bez explicitního spojovacího kroku;
- nepřímé vykreslovací příkazy – GPU může být zadáno zpracovat vykreslovací příkazy z jeho paměti raději, než čekat na příkazy z CPU. Toto umožňuje například výpočetní shader běžící na GPU k provádění fyzikální simulace a potom generování vykreslovacích příkazů nezbytných pro zobrazení jejich výsledků, bez intervence CPU;
- vylepšená texturovací funkcionalita – zahrnující multisample textury, stencil textury, a texture gather;
- vylepšení jazyka shaderů – nové aritmetické a bitové operace, a vlastnosti umožňující moderní styl programování shaderů;
- volitelná rozšíření – per-sample shading, pokročilé blending módy, a tak dále.
Použití platformy v systémech
OpenGL ES 1.0
OpenGL ES 1.0 přidal oficiální 3D grafické API do operačních systémů Android[12] a Symbian,[13] podobně jako do QNX[14] Je podporován i v PlayStation 3 jako jedno z oficiálních grafických rozhraní (API)[15] za použití Nvidia's Cg místo GLSL.[16] PlayStation 3 také podporuje několik vlastností z verze OpenGL ES 2.0.
OpenGL ES 1.1
Verze 1.1 OpenGL ES je podporována:
- Android 1.6
- Apple iOS pro iPad, iPhone, a iPod Touch
- RIM's BlackBerry 5.0 operační systém série[17] (pouze BlackBerry Storm 2, BlackBerry Curve 8530 a pozdější modely mající potřebný hardware[18])
- BlackBerry PlayBook
- BlackBerry BB10
- Palm webOS, za použití Plug-in Development Kit[19]
- Nintendo 3DS[20]
OpenGL ES 2.0
Verze 2.0 OpenGL ES je podporována:
- Platformou Android počínaje Androidem 2.0 za pomoci NDK a v Android 2.2 za pomoci Javy[21]
- Apple iOS 5 a pozdější v iPad, iPad Mini, iPhone 3GS a pozdějším, a iPod Touch 3. generace a pozdější
- BlackBerry zařízení s BlackBerry OS 7.0 a Blackberry 10, stejně jako BlackBerry PlayBook
- Google Native Client
- Různé Nokia telefony (jako jsou například na Symbian^3 založená Nokia N8 a na Maemo založená Nokia N900[22])
- Palm webOS, za použití Plug-in Development Kitu[19]
- Pandora console
- Raspberry Pi
- Různé Samsung mobilní telefony (jako například Wave)
- Web prohlížeče (WebGL)
- Ouya hrací konsole
- GCW-Zero konsole
OpenGL ES 3.0
Verze 3.0 OpenGL ES je podporována:
- Operačním systémem Android počínaje verzí 4.3, na zařízeních s příslušným hardwarem a jeho ovladači hardwaru, zahrnující:
- Nexus 7 (2013)
- Nexus 4
- Nexus 5
- Nexus 10
- HTC Butterfly S
- HTC One/One Max
- LG G2
- LG G Pad 8.3
- Samsung Galaxy S4 (Snapdragon verze)
- Samsung Galaxy Note 3
- Samsung Galaxy Note 10.1 (2014 Edition)
- Sony Xperia Z/Xperia Z Ultra
- Sony Xperia Z1
- Sony Xperia Tablet Z
- BlackBerry
- BlackBerry 10 OS verze 10.2 v BlackBerry Z30.
Podporováno některými posledními verzemi následujících GPU: Khronos Products
- Mali T6xx série (Android, Linux, Windows 7)
- Adreno 3xx a 4xx série (Android, Windows Phone 8, Windows RT)
- PowerVR Series6 (iOS, Linux)
- Vivante (Android, OS X 10.8.3, Windows 7)
- NVIDIA (Android, Linux, Windows 7)
- Intel (Linux)
OpenGL ES 3.1
Verze 3.1 OpenGL ES je podporována:
- Operačním systémem Linux, Windows, Android od verze 5.0[24] a vyšších, na zařízeních s příslušným hardwarem a jeho ovladači hardwaru, zahrnující:
- Samsung Galaxy S5 Broadband LTE-A[25][26]
Verzi 3.1 OpenGL ES jsou připravena podporovat poslední verze některých grafických procesorů ARM Mali.[27][28][29]
OpenGL ES 3.2
NVidia vydala ovladače k OpenGL ES 3.2.[30]
Odkazy
Reference
V tomto článku byl použit překlad textu z článku OpenGL ES na anglické Wikipedii.
- Khronos Debuts OpenGL ES 3.2 & New GL Extensions, But No Vulkan This Week
- Khronos Press Releases - OpenGL ES 2.0 [online]. Khronos.org, 2007-03-05 [cit. 2010-12-23]. Dostupné v archivu pořízeném dne 2010-12-28. (anglicky)
- Edward Angel, Dave Shreiner, Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL, 6th Edition, p. xxi-xxii, ISBN 978-0-13-254523-5
- The OpenGL® ES Shading Language [online]. Khronos.org [cit. 2013-02-16]. Dostupné online. (anglicky)
- http://www.opengl.org/registry/doc/glspec41.core.20100725.pdf
- The OpenGL ES 3.0 specification [online]. Dostupné online. (anglicky)
- Khronos Releases OpenGL ES 3.0 Specification to Bring Mobile 3D Graphics to the Next Level [online]. Khronos.org, 2012-08-06 [cit. 2012-08-06]. Dostupné online. (anglicky)
- The OpenGL ES 3.0 Shading Language Online Reference Pages [online]. Dostupné online. (anglicky)
- Khronos Releases OpenGL ES 3.1 Specification
- OpenGL ES 3.1 je hotové. Mobilním GPU dává compute shader a další nové funkce. extrahardware.cnews.cz [online]. [cit. 2014-03-18]. Dostupné v archivu pořízeném dne 2014-03-20.
- JAVŮREK, Karel. OpenGL ES 3.1 ve finální verzi, podporuje obecné výpočty přes grafiku. Živě.cz [online]. Dostupné online.
- What is Android?, Google
- Symbian OS v9.5 product sheet Archivováno 27. 3. 2008 na Wayback Machine, Symbian
- Using OpenGL ES [online]. QNX [cit. 2011-01-08]. Dostupné online. (anglicky)
- OpenGL ES demo in PPT format
- SONY/Khronos OpenGL ES/PSGL Presentation in PPT format
- New in this beta release [online]. Research in Motion [cit. 2009-12-08]. Dostupné v archivu pořízeném dne 2009-12-02. (anglicky)
- KOH, Damian. What to expect for BlackBerry smartphones. CNET Asia. 2009-11-29. Dostupné v archivu pořízeném z originálu. (anglicky)
- PDK - Overview [online]. HP Palm Developer Center [cit. 2010-12-23]. Dostupné v archivu pořízeném dne 2011-01-01. (anglicky)
- DMP announces OpenGL ES 1.1 conformant PICA 200 adopted by Nintendo [online]. 2010-06-21 [cit. 2013-06-02]. Dostupné online. (anglicky)
- Android 2.2 specifications. developer.android.com. Google, 2010-07-01. Dostupné v archivu pořízeném dne 2010-10-11. (anglicky)
- Maemo software - Nokia > Nokia N900 mobile computer > Technical specifications [online]. Nokia Corporation [cit. 2010-01-12]. Dostupné v archivu pořízeném dne 2009-10-29. (anglicky)
- iOS7. developer.apple.com [online]. [cit. 2014-02-08]. Dostupné v archivu pořízeném dne 2013-09-21.
- Support for OpenGL ES 3.1 [online]. https://developer.android.com/ [cit. 2015-04-04]. Dostupné online. (anglicky)
- BHATIA, Anuj. Samsung Galaxy S5 LTE-A Special Edition Goes Official in South Korea. Www.gizbot.com. www.gizbot.com [online]. 23.6.2014 [cit. 24.6.2014]. Dostupné online. (anglický)
- SMITH, Ryan. Google I/O: Qualcomm Celebrates Launch of Adreno 420 GPU for Android Gaming. Www.anandtech.com. AnandTech.com [online]. 23.6.2014 [cit. 24.6.2014]. Dostupné online. (anglický)
- LARABEL, Michael. ARM Mali GPUs Go For OpenGL ES 3.1 Compliance. Phoronix [online]. 2014-06-07 [cit. 2014-06-07]. Dostupné online. (angličtina)
- ARM. OpenGL ES 3.1 Compute Shaders [online]. [cit. 2014-06-09]. Dostupné v archivu pořízeném dne 2014-08-29.
- CRIJNS, Koen. ARM: 20 dollar and 64-bit Android smartphones to be expected. Http://uk.hardware.info/. http://uk.hardware.info/ [online]. 24.6.2014. Dostupné online.
- LARABEL, Michael. NVIDIA Releases "OpenGL 2015" + OpenGL ES 3.2 Linux Driver. Http://www.phoronix.com/. Phoronix.com [online]. 2015-08-10 [cit. 2015-08-10]. Dostupné online. (anglický)
Literatura
- PULLI, Kari; YES, Tomi; MIETTINEN, Ville; ROIMELA, Kimmo; VAARALA, Jani. Mobile 3D Graphics with OpenGL ES and M3G. [s.l.]: Morgan Kaufmann, 2007. ISBN 0-12-373727-3. (anglicky)
- ASTLE, Dave; YES, David. OpenGL ES Game Development. [s.l.]: Course Technology PTR Dostupné online. ISBN 1-59200-370-2. (anglicky)
- PULLI, Kari; YES, Tomi; ROIMELA, Kimmo; VAARALA, Jani. Designing graphics programming interfaces for mobile devices. [s.l.]: [s.n.] Dostupné online. (anglicky)
- MUNSHI, Aaftab; GINSBURG, Dan; SHREINER, Dave. OpenGL(R) ES 2.0 Programming Guide. [s.l.]: Addison-Wesley Professional ISBN 978-0-321-50279-7. (anglicky)
Související články
- OpenGL – průmyslový standard specifikující multiplatformní rozhraní (API) pro tvorbu aplikací počítačové grafiky,
- Vulkan - grafické multiplatformní rozhraní
- WebGL – jako OpenGL, pro JavaScript,
- OpenAL – je audio standard,
- OpenCL – průmyslový standard specifikující multiplatformní rozhraní (API) pro tvorbu výpočetně náročných aplikací,
- GLUT – OpenGL Utility Toolkit,
- ALUT – OpenAL Utility Toolkit,
- DirectX – grafické API pro Microsoft Windows,
- Direct3D – součást DirectX.
Externí odkazy
- Public bug tracking
- OpenGL ES Conformant companies
- Public forums
- List of OpenGL ES compatible devices
- The Firefox effort to support 3D based on OpenGL ES with the <canvas> tag
- ANGLE: OpenGL ES 2.0 implementation on top of Direct3D 9
- OpenGL ES 1.1 & 2.0 Emulator from ARM
- OpenGL ES 3.0 Emulator from ARM
- OpenGL ES 3.0 example programs