OpenGL ES
OpenGL ES software | |
---|---|
![]() | |
Genere | Libreria software (non in lista) Computer grafica |
Sviluppatore | Khronos Group |
Data prima versione | 28 luglio 2003 |
Ultima versione | 3.2 (17 marzo 2014) |
Sistema operativo | Multipiattaforma |
Linguaggio | OpenGL ES Shading Language |
Licenza | Varie (licenza libera) |
Sito web | www.khronos.org/opengles/ |
Modifica dati su Wikidata · Manuale |
OpenGL ES è un sottoinsieme delle librerie grafiche OpenGL pensato per dispositivi integrati (telefoni cellulari, PDA ecc. ma anche strumentazione scientifica e industriale). Viene gestito dal consorzio no-profit Khronos Group, che cura anche lo sviluppo della libreria madre OpenGL.
Versioni
Attualmente esistono molte versioni diverse delle specifiche OpenGL ES. La versione 1.0 venne ricalcata sulla versione 1.3 di OpenGL, mentre la versione 1.1 si basa su OpenGL 1.5 e la 2.0 è definita in relazione a OpenGL 2.0. Sia la versione 1.0 che la 1.1 supportano due profili, common e common-lite; il profilo lite supporta solo tipi di dato interi invece dei normali dati in virgola mobile, mentre il profilo common li supporta entrambi.
OpenGL ES prevede inoltre un altro profilo safety-critical pensato per sistemi critici e/o ad alta sicurezza come display avionici, strumentazione per aeromobili e applicazioni militari: caratteristiche principali di questo profilo sono la stabilità, la testabilità e l'intrinseca robustezza.
OpenGL ES 1.0
Contiene molte funzionalità delle OpenGL originali e ne aggiunge alcune. Le due differenze principali sono la rimozione della semantica di chiamata glBegin
... glEnd
per il rendering delle primitive (in favore dei vertex arrays) e l'introduzione dei dati in virgola fissa per le coordinate dei vertici delle primitive e degli attributi, per sfruttare meglio le capacità di calcolo dei processori embedded che spesso non hanno una FPU. Le altre differenze sono numerose ma di portata minore, quasi tutte semplificazioni per produrre un'interfaccia più semplice ed essenziale. Sono state tolte le primitive di rendering di quadrati e poligoni, i texgen, la modalità poligonale, le linee e i poligoni punteggiati, il rendering di poligoni antialiased (con frammenti bordo alfa, non multisampled), le funzioni ARB_Image
su classi di pixel, le bitmap, le texture 3D, il disegno sul frontbuffer, il buffer di accumulazione, la copia pixel, il push/pop degli attributi di stato, le display list, i valutatori, le selezioni, i feedback, l'illuminazione su due lati e i piani di clipping definiti dall'utente.
OpenGL ES 1.1
Aggiunge le funzionalità di supporto obbligatorio al multitexturing, normale e migliorato (con combinatori e operazioni di prodotto scalare fra texture), generazione automatica di mipmap, oggetti vertex buffer, query sullo stato e in generale un maggior controllo sul rendering di punti. Vengono introdotti i piani di clipping utente.
OpenGL ES 2.0
Vengono rilasciate nel Marzo 2007[1], ed eliminano la maggior parte della pipeline di rendering a funzioni fisse in favore di una programmabile: quasi tutte le funzioni di rendering della pipeline di transform & lighting, come il settaggio dei parametri di luci e materiali, vengono sostituite da vertex shaders e pixel shaders programmati separatamente. Per questo, OpenGL ES 2.0 non è retrocompatibile con le versioni 1.0 e 1.1.
OpenGL ES 3.0
Questa specifica è stato rilasciata pubblicamente nel mese di agosto 2012 ed è compatibile con OpenGL ES 2.0.
Nuove funzionalità nella ES OpenGL 3.0:
- Diversi miglioramenti alla pipeline di rendering per consentire l'accelerazione di effetti visivi avanzati, tra cui: le query di occlusione, feedback di trasformazione, istanze di rendering e il supporto per quattro o più target di rendering
- Alta qualità ETC2 / EAC compressione texture come caratteristica standard, eliminando la necessità di una diversa serie di strutture per ogni piattaforma
- Nuova versione del linguaggio di shading GLSL ES con il supporto completo per interi e 32 bit operazioni in virgola mobile;
- Notevolmente migliorata la funzionalità texturing tra cui il supporto garantito per le texture in virgola mobile, texture 3D, texture, texture vertice profondità, texture NPOT, R / RG texture, texture, texture immutabile matrice 2D, swizzles, LOD e morsetti MIP, mappe cubo senza soluzione di continuità e oggetti campionatore
- Un vasto insieme di richieste, la struttura richiede in modo esplicito le dimensioni e render-buffer formati, riducendo la variabilità e rendendo molto più facile la scrittura di applicazioni portatili.
OpenGL ES 3.1
La specifica OpenGL ES 3.1 è stata rilasciata al pubblico in marzo 2014. Le nuove funzionalità in OpenGL ES 3.1 include:
- Shaders Compute
- Vertex e fragment shader indipendenti
- Comandi di disegno indiretti
OpenGL ES 3.1 è compatibile con OpenGL ES 2.0 e 3.0, consentendo alle applicazioni di integrare gradualmente con le nuove funzionalità.
OpenGL ES 3.2
La specifica OpenGL ES 3.2[2] è stata rilasciata pubblicamente nell'agosto del 2015. Le nuove caratteristiche di OpenGL ES 3.2 includono:
- Shaders di geometria tassellamento per elaborare efficientemente scene complesse sulla GPU.
- Target di rendering in virgola mobile per aumentare la flessibilità nelle operazioni di calcolo in alta precisione.
- Compressione ASTC per ridurre l'uso della memoria e la banda usata per elaborare le texture.
- Blending avanzato per una gestione sofisticata di composizione e gestione di allegati di colore multipli.
- Obiettivi di texture avanzati come i buffer di texture, array multicampionamento 2D e array di mappe cubiche.
- Funzioni di debug e controllo robustezza per facilitare lo sviluppo del codice e l'esecuzione sicura.
Lo stato attuale della specifica 3.2 è del novembre 2016[3].
Uso delle OpenGL ES
OpenGL ES 1.0
- Sono le API 3D ufficiali sia in Symbian OS[4] sia sulla piattaforma Android[5]
- Supportate dalla PlayStation 3 come una delle API 3D ufficiali[6] (l'altra è la libreria a basso livello libgcm). La PlayStation 3 include anche molte caratteristiche delle OpenGL ES 2.0.
OpenGL ES 1.1
- Supportate da Android 1.6
- Supportate da iPhone, iPod touch e iPad
- Supportate dalla serie 5.0 del sistema operativo BlackBerry[7]. Tuttavia, solo i BlackBerry Storm 2, BlackBerry Curve 8530 e successivi modelli hanno l'hardware necessario[8]
BlackBerry PlayBook - Supportate da Palm webOS, usando il Plug-in Development Kit[9]
OpenGL ES 2.0
- Supportate da iPhone (3GS e successivi), iPod touch (terza serie e successivi) e iPad
- Supportate da Android dalla versione Android 2.2[10]
- Supportate dall'Android NDK dalla versione 2.0[11]
- Supportate dalla serie 7.0 del sistema operativo BlackBerry e BlackBerry PlayBook
- Libreria 3D della console Pandora
- Scelte per WebGL (OpenGL per browser)[12]
- Supportate da alcuni nuovi cellulari Nokia come il Nokia N900 basato su Maemo[13] e il Nokia N8 basato su Symbian^3.
- Supportate da vari cellulari Samsung, compreso il Galaxy S e il Wave
- Supportate da Palm webOS, con il Plug-in Development Kit[9]
- Supportate da AmigaOS4 su piattaforme AmigaOne X1000/X5000/1222, Sam440 e Sam460 tramite Warp3D Nova e schede grafiche RadeonHD e RX compatibili
OpenGL ES 3.0
- Supportate da Android dalla versione 4.3[14]
- Supportate da iPhone 5S
OpenGL ES 3.1
Supportato da Windows, Linux, Android (da Lollipop) sui dispositivi con hardware adeguato e driver, tra cui:
- Adreno serie 400 [26] [27]
- Intel HD Graphics per la serie Intel Atom Z3700 (Android)
- Intel HD Graphics per Intel Celeron N e Serie J (Android)
- Intel HD Graphics per Intel Pentium N e Serie J (Android)
- Mali T6xx (Midgard) serie in poi [28] (Android, Linux)
- Nvidia GeForce serie 400 in poi (Windows)
- Nvidia Tegra K1 (Android)
- Nvidia Tegra X1 (Android)
- PowerVR Series 6, 6XE, 6XT, 7XE e 7XT (Linux, Android)
- Serie Vivante GC2000 in poi (optional con GC800 e GC1000)
OpenGL ES 3.2
Supportate da Windows, Linux, Android (possibile dalla versione 6.0, dalla 7.0+ Vulkan 1.0 e OpenGL ES 3.2 sono necessari) su dispositivi con appropriato hardware e driver, inclusi:
- Adreno 420 e più recenti (Android, Linux)
- AMD GCN-architecture (Windows, Linux (Mesa 18.2))
- Intel HD Graphics Skylake e più recenti (Linux)[15]
- Mali-T760 e più recenti (Android, Linux)
- Nvidia serie GeForce 400 (Fermi) e successive (Windows, Linux)[16]
- VIRGL: driver virtuale per macchine virtuali nel 2018 con Mesa 18.1 (Vedere Mesamatrix.net)
Note
- ^ Khronos Group Prioritizes China's Participation in Creation of Key International Technology Standard - Khronos Group Press Release Archiviato il 28 dicembre 2010 in Internet Archive.
- ^ The OpenGL ES 3.2 specification, su khronos.org.
- ^ https://www.khronos.org/registry/OpenGL/specs/es/3.2/es_spec_3.2.pdf
- ^ Symbian OS v9.5 datasheet Archiviato il 27 marzo 2008 in Internet Archive., Symbian
- ^ Cos'è Android?, Google
- ^ Demo di OpenGL ES in formato PPT
- ^ New in this beta release, in Release Notes - BlackBerry Java Application, Research in Motion. URL consultato l'8 dicembre 2009 (archiviato dall'url originale il 2 dicembre 2009).
- ^ Damian Koh, What to expect for BlackBerry smartphones, in CNET Asia, 29 novembre 2009. URL consultato l'8 dicembre 2009 (archiviato dall'url originale il 13 dicembre 2009).
- ^ a b Developing PDK Apps and Plug-ins - HP webOS Developer Center Archiviato il 1º gennaio 2011 in Internet Archive.
- ^ Android 2.2 specifications, Google, 1º luglio 2010 (archiviato dall'url originale l'11 ottobre 2010).
- ^ Android NDK hits Release 3, brings OpenGL ES 2.0 access to devs, Engadget, 8 marzo 2010.
- ^ Khronos Details WebGL Initiative to Bring Hardware-Accelerated 3D Graphics to the Internet, su khronos.org. URL consultato il 3 maggio 2019 (archiviato dall'url originale il 19 aprile 2012).
- ^ Maemo software - Nokia > Nokia N900 mobile computer > Technical specifications, su maemo.nokia.com, Nokia Corporation. URL consultato il 12 gennaio 2010 (archiviato dall'url originale il 29 ottobre 2009).
- ^ Android 4.3 APIs, Google, 24 luglio 2013.
- ^ https://people.freedesktop.org/~imirkin/glxinfo/#p=es&v=Mesa%2017.2.0
- ^ NVIDIA Releases 358.50 Game Ready Drivers For Star Wars Battlefront, su anandtech.com, AnandTech. URL consultato il 7 ottobre 2015.
Bibliografia
- Kari Pulli, Tomi Aarnio, Ville Miettinen, Kimmo Roimela, and Jani Vaarala: Mobile 3D Graphics with OpenGL ES and M3G, Morgan Kaufmann, 2007, ISBN 0-12-373727-3
- Dave Astle and David Durnil: OpenGL ES Game Development, Course Technology PTR, ISBN 1-59200-370-2
- Kari Pulli, Tomi Aarnio, Kimmo Roimela, and Jani Vaarala Designing graphics programming interfaces for mobile devices, IEEE CG&A 2005
- Aaftab Munshi, Dan Ginsburg, Dave Shreiner : OpenGL(R) ES 2.0 Programming Guide, Addison-Wesley Professional, ISBN 978-0-321-50279-7
Collegamenti esterni
- Sito ufficiale, su khronos.org.
- (EN) Bug tracking pubblico, su khronos.org.
- (EN) Costruttori conformi a OpenGL ES, su khronos.org.
- (EN) Public forums, su khronos.org. URL consultato il 3 maggio 2019 (archiviato dall'url originale il 23 marzo 2015).
- (EN) Lista di dispositivi compatibili OpenGL ES, su glbenchmark.com.
- (EN) The Firefox effort to support 3D based on OpenGL ES with the <canvas> tag, su wiki.mozilla.org.
- (EN) gDEBugger ES - OpenGL ES Debugger and Profiler including an OpenGL ES implementation on a Windows PC operating system
- (EN) Free tools and resources for OpenGL ES development, su malideveloper.com. URL consultato il 5 novembre 2010 (archiviato dall'url originale il 9 agosto 2019).
- (EN) Free emulator for OpenGL ES 2.0 for Windows and Linux, su malideveloper.com. URL consultato il 5 novembre 2010 (archiviato dall'url originale il 9 marzo 2010).
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Nuvola_apps_emacs.svg/25px-Nuvola_apps_emacs.svg.png)