« OpenGL ES » : différence entre les versions
Aucun résumé des modifications Balises : Éditeur visuel gettingstarted edit |
Pld (discuter | contributions) →Support matériel : + lien |
||
(40 versions intermédiaires par 23 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
{{Infobox Logiciel |
|||
'''OpenGL ES''' (''' G เปิด raphics L ibrary S mbedded E เพื่อตั้งบางครั้งย่อว่า Ogles หรือกฎค่า) เป็นข้อกำหนดจากกลุ่มที่กำหนด Khronos API มิติที่ได้มาจากสเปค OpenGL (พีดีเอ) วิดีโอเกมคอนโซล ... PlayStation 3 ยังใช้มาจาก OpenGL ES ชื่อ PSGL '''. |
|||
| couleur boîte = ba2a8d |
|||
| texte blanc = oui |
|||
| nom = |
|||
| logo = |
|||
| alternative logo = |
|||
| image = |
|||
| légende = |
|||
| alternative = |
|||
| créateur = |
|||
| développeur = |
|||
| exécutable = |
|||
| date de première version = |
|||
| dernière version = |
|||
| date de dernière version = |
|||
| version avancée = |
|||
| date de version avancée = |
|||
| dépôt = |
|||
| état = |
|||
| langage de programmation = |
|||
| langages supportés = |
|||
| environnement = |
|||
| langues = |
|||
| type = |
|||
| politique de prix = |
|||
| licence = |
|||
| documentation = |
|||
| site web = |
|||
| version précédente = |
|||
| version suivante = |
|||
}} |
|||
'''OpenGL ES''' ('''Open''' '''G'''raphics '''L'''ibrary for '''E'''mbedded '''S'''ystem, parfois abrégé en '''OGLES''' ou '''GLES''') est une spécification du [[Khronos Group]] qui définit une [[interface de programmation|API]] [[multiplateforme]] pour la conception d'applications générant des images [[3D]] dérivée de la spécification [[OpenGL]], sous une forme adaptée aux plateformes mobiles ou embarquées telles que les [[Téléphone mobile|téléphones mobiles]], les [[Assistant personnel|assistants personnels]] (PDA), les [[Console de jeux vidéo|consoles de jeu vidéo]] portables, les lecteurs multimédia de poche ou de salon... La console [[PlayStation 3]] utilise également un dérivé d'OpenGL ES, nommé [[:en:PSGL|PSGL]]. |
|||
== Implications == |
== Implications == |
||
OpenGL ES est principalement une simplification d'OpenGL, |
OpenGL ES est principalement une simplification d'OpenGL, qui offre une API plus légère (économe en mémoire et coût processeur) et une simplification plus poussée. |
||
Une API plus légère est plus indiquée car elle devra se connecter à des plateformes généralement peu puissantes et peu fournies en mémoire vive. De nombreuses fonctionnalités d'OpenGL ont donc été volontairement laissées de côté pour créer OpenGL ES. Certaines extensions ont été intégrées voire ajoutées dans le ''profil'' par défaut, car indispensables dans ces environnements, d'autres ont été conservées, mais la plupart ont été éliminées. Les calculs se font préférentiellement en [[virgule fixe]], du fait que les processeurs concernés ne disposent que rarement de capacité de calcul en [[virgule flottante]]. |
|||
C'est une simplification appréciable au niveau des spécificités des plateformes, qui facilite le travail des développeurs. En effet, un développeur 3D classique doit gérer une ou deux consoles et/ou un ensemble de cartes graphiques émanant des deux ou trois principaux constructeurs. Un programmeur de plateformes embarquées doit adresser des centaines de mobiles différents, pour une dizaine de marques, tournant sous trois ou quatre systèmes d'exploitation ([[Windows Mobile]], [[Symbian OS|Symbian]], [[Android]], [[Binary Runtime Environment for Wireless|Brew]], [[Linux]], [[:en:WIPI_(platform)|WIPI]]...), avec des cartes graphiques en provenance des trois principaux fournisseurs ([[ATI]], [[NVidia]], [[Imagination Technologies]]) et des écrans de résolutions très différentes, en orientation portrait ou paysage. Il est donc nécessaire pour lui de pouvoir préciser ses besoins et de laisser ensuite OpenGL ES faire les choix internes, tout comme il est important que le rendu logiciel ou accéléré se contrôle de la même manière. |
|||
Certains navigateurs récents permettent, grâce à [[WebGL]] et [[JavaScript]], d’afficher |
Certains navigateurs récents permettent, grâce à [[WebGL]] et [[JavaScript]], d’afficher du contenu 3D en OpenGL ES de manière native. Cela ouvre des perspectives pour le développement de jeux 3D en ligne. |
||
== Différentes normes == |
== Différentes normes == |
||
OpenGL ES a connu |
OpenGL ES a connu quatre révisions principales : |
||
* 1.0, dérivée d'OpenGL 1.3, fut |
* 1.0, dérivée d'OpenGL 1.3, fut conçue pour le rendu 3D logiciel. Il s'agit donc en fait d'une spécification de moteur de rendu 3D logiciel [[multiplateforme]]. |
||
* 1.1, dérivée d'OpenGL 1.5, est sortie par la suite pour adapter la norme à l'arrivée de l'accélération matérielle sur ces |
* 1.1, dérivée d'OpenGL 1.5, est sortie par la suite pour adapter la norme à l'arrivée de l'accélération matérielle sur ces plateformes en ajoutant/étendant certaines fonctionnalités. Un ''Expansion Pack'' fournit la possibilité d'un niveau de fonctionnalités supérieur. |
||
* 2.0, dérivée d'OpenGL 2.0, est arrivée peu avant les prototypes de processeurs embarqués haut de gamme. Elle s'allège de la plupart de ses fonctions précédentes dont toute son API de rendu à cheminement (''pipeline'') fixe pour laisser la place à un système de shaders basé sur une variation de GLSL. |
* 2.0, dérivée d'OpenGL 2.0, est arrivée peu avant les prototypes de processeurs embarqués haut de gamme. Elle s'allège de la plupart de ses fonctions précédentes dont toute son API de rendu à cheminement (''pipeline'') fixe pour laisser la place à un système de shaders basé sur une variation de GLSL. |
||
* 3.0 (Haiti), dérivée d'OpenGL 3.3 et 4.2, présentée le lundi 6 août [[2012]] au salon [[Siggraph]]<ref>[http://www.khronos.org/developers/library/2012-siggraph-opengl-es-bof 2012 SIGGRAPH OpenGL ES BOF]</ref>{{,}}<ref>{{en}} [http://www.khronos.org/assets/uploads/developers/library/2012-siggraph-opengl-es-bof/OpenGL-ES-BOF-SIGGRAPH_Aug12.pdf OpenGL ES BOF Siggraph] (présentation PDF des nouveautés d'OpenGL ES 3.0)</ref>. |
* 3.0 (Haiti), dérivée d'OpenGL 3.3 et 4.2, a été présentée le lundi 6 août [[2012]] au salon [[Siggraph]]<ref>[http://www.khronos.org/developers/library/2012-siggraph-opengl-es-bof 2012 SIGGRAPH OpenGL ES BOF]</ref>{{,}}<ref>{{en}} [http://www.khronos.org/assets/uploads/developers/library/2012-siggraph-opengl-es-bof/OpenGL-ES-BOF-SIGGRAPH_Aug12.pdf OpenGL ES BOF Siggraph] (présentation PDF des nouveautés d'OpenGL ES 3.0)</ref>. |
||
* 3.1 dont les spécifications sont sorties le 4 juin 2014<ref>{{lien web|langue=en|url=https://www.khronos.org/registry/gles/specs/3.1/es_spec_3.1.pdf|titre=spécifications d'OpenGL ES 3.1|éditeur=khronos.org|en ligne le=4 juin 2014|consulté le=29 octobre 2014}}</ref>. |
|||
* 3.2, incorpore plusieurs fonctionnalités telles que les "{{Langue|en|geometry shaders}}" et "{{Langue|en|tessellation shaders}}" dérivée de OpenGL, présentée le [[Mercredi]] 10 août [[2015]] au salon Siggraph. |
|||
Une norme 1.2 était prévue mais ne fut jamais publiée. |
Une norme 1.2 était prévue mais ne fut jamais publiée. |
||
Il existe également OpenGL ES-SC 1.0 ('''OpenGL ES''' for '''S'''afety '''C'''ritical application), pour les applications militaires, d' |
Il existe également OpenGL ES-SC 1.0 ('''OpenGL ES''' for '''S'''afety '''C'''ritical application), pour les applications militaires, d'aviation civile ou autres activités ne tolérant pas de défaillance. Un retrait de fonctionnalités le rend plus léger et plus sûr. |
||
La spécification d'OpenGL ES ne bénéficie pas pour le moment d'un mécanisme de certification pour le matériel. Tout produit peut donc se prétendre compatible OpenGL ES sans que n'ait été vérifié son degré de conformité à la norme. Les implémentations doivent en revanche subir une batterie de tests pour être déclarées conformes ; dans les faits, peu tentent de la passer. |
La spécification d'OpenGL ES ne bénéficie pas pour le moment d'un mécanisme de certification pour le matériel. Tout produit peut donc se prétendre compatible OpenGL ES sans que n'ait été vérifié son degré de conformité à la norme. Les implémentations doivent en revanche subir une batterie de tests pour être déclarées conformes ; dans les faits, peu tentent de la passer. |
||
=== Vulkan === |
|||
Le 7 janvier 2014, le Khronos Group annonce Open GL ES Next<ref>{{en}} {{lien web|url=http://www.khronos.org/assets/uploads/news/news_graphics/OpenGL-ES-Next-Jan14.pdf|titre=OpenGL ES Next|en ligne le=2014-01-07|consulté le=2014-01-08}}</ref> |
|||
{{Article détaillé|Vulkan (API)}} |
|||
Le 7 janvier 2014, le Khronos Group annonce initialement [[Vulkan (API)|Vulkan]] sous le nom d'[[OpenGL ES Next]]<ref>{{en}} {{lien web|url=http://www.khronos.org/assets/uploads/news/news_graphics/OpenGL-ES-Next-Jan14.pdf|titre=OpenGL ES Next|en ligne le=2014-01-07|consulté le=2014-01-08}}</ref>{{,}}<ref name="anandtech">{{lien web|lang=en|url=http://www.anandtech.com/show/9038/next-generation-opengl-becomes-vulkan-additional-details-released|titre=Next Generation OpenGL Becomes Vulkan: Additional Details Released|auteur=Ryan Smith|en ligne le=3 mars 2015|périodique=[[AnandTech]]}}</ref> OpenGL ES Next est l'équivalent d'''OpenGL Next'' pour la série embarquée. Il reprend les avancées de [[Gallium3D]] dans l'implémentation libre [[Mesa 3D]] d'OpenGL, qui a démontré avec [[Gallium3D]], et en particulier [[LLVMpipe]], qu'il était possible d'avoir des performances relativement correctes avec un rendu 3d uniquement logiciel, à condition d'utiliser plus intelligemment les différentes ressources disponibles (cœurs, etc.), ces avancées ont également permis de réduire l'utilisation du CPU lorsque l'accélération matérielle était présente. Ces avancées ont d'abord inspiré la création de [[:en:Mantle_(API)|Mantle_(API)]] chez [[Advanced Micro Devices|AMD]], puis des modifications chez [[Microsoft]] avec [[Direct3D]] 12 et de nouveau Khronos avec OpenGL Next. Dans tous ces cas, l'API est remise à plat et les erreurs de conception des versions précédentes, inadaptées aux avancées techniques et technologiques du matériel, éliminées des spécifications. |
|||
Finalement, Vulkan unifie à la fois la version embarquée OpenGL ES et de bureau OpenGL<ref name="anandtech" />. |
|||
== Implémentation logicielle == |
== Implémentation logicielle == |
||
Ligne 31 : | Ligne 69 : | ||
* La [[bibliothèque logicielle]] [[logiciel libre|libre]] [[Mesa (OpenGL)|Mesa]], utilisée sous X.org, est compatible avec les versions 1.1 et 2.0 d'OpenGL ES |
* La [[bibliothèque logicielle]] [[logiciel libre|libre]] [[Mesa (OpenGL)|Mesa]], utilisée sous X.org, est compatible avec les versions 1.1 et 2.0 d'OpenGL ES |
||
* Android prend en charge OpenGL ES 2.0 depuis la version 2.0 d'Android <ref>{{en}} https://developer.android.com/about/versions/android-2.2.html</ref> |
* Android prend en charge OpenGL ES 2.0 depuis la version 2.0 d'Android <ref>{{en}} https://developer.android.com/about/versions/android-2.2.html</ref> |
||
* Android 4.3 prend en charge OpenGL ES 3.0 si les pilotes des puces sont compatibles<ref>http://www.pcinpact.com/news/81396-android-4-3-devoile-profils-restreints-opengl-es-3-0-et-drm-pour-netflix.htm</ref> |
* Android 4.3 prend en charge OpenGL ES 3.0 si les pilotes des puces sont compatibles<ref>{{lien web |auteur1=David Legrand |titre=Lors de sa conférence d'annonce de la nouvelle Nexus 7, Google en a profité pour commencer à évoquer... |url=http://www.pcinpact.com/news/81396-android-4-3-devoile-profils-restreints-opengl-es-3-0-et-drm-pour-netflix.htm |site=pcinpact.com |périodique=Next INpact |date=24-07-2013 |consulté le=23-08-2020}}.</ref> |
||
== Support matériel == |
== Support matériel == |
||
Il existe plusieurs processeurs graphiques possédant des pilotes OpenGL ES. |
Il existe plusieurs processeurs graphiques possédant des pilotes OpenGL ES. |
||
* ATI [[Imageon]] 2300 (OpenGL ES 1.0) racheté par [[Qualcomm]] puis renommé [[Adreno]] et utilisé dans ses SoC [[Snapdragon]]. |
* ATI [[:en:Imageon|Imageon]] 2300 (OpenGL ES 1.0) racheté par [[Qualcomm]] puis renommé [[Adreno]] et utilisé dans ses SoC [[Snapdragon]]. |
||
* Imagination Technologies [[PowerVR]] MBX (OpenGL ES 1.1) et [[PowerVR]] SGX (OpenGL ES 2.0), PowerVR serie 6 (OpenGL ES 3.0). |
* Imagination Technologies [[PowerVR]] MBX (OpenGL ES 1.1) et [[PowerVR]] SGX (OpenGL ES 2.0), PowerVR serie 6 (OpenGL ES 3.0), PowerVR serie 7 (OpenGL ES 3.1), PowerVR serie 7XT et 8XE (OpenGL ES 3.2) |
||
* [[Vivante Corporation]] (OpenGL ES 1.1 et 2.0) <ref>{{lien web |url=http://www.vivantecorp.com/p_mvr.html |titre={{lang|en|Vivante Graphics Processor IP}} |site= |consulté le=5 Août 2012}}</ref> |
* [[Vivante Corporation]] (OpenGL ES 1.1 et 2.0) <ref>{{lien web |url=http://www.vivantecorp.com/p_mvr.html |titre={{lang|en|Vivante Graphics Processor IP}} |site= |consulté le=5 Août 2012}}</ref> |
||
* [[ARM Mali]], séries 55 et 200 (OpenGL ES 1.1), série 400 (OpenGL ES 1.1 et 2.0), ainsi que les séries T600 et T700 (OpenGL ES 1.1, 2.0 et 3.0). ARM a également sorti, le 6 août 2012, un émulateur capable, pour faciliter le développement des applications, d'émuler l'API OpenGL ES 3.0 sur du matériel supportant OpenGL 3.3 et supérieur<ref>[http://www.malideveloper.com/developer-resources/tools/opengl-es-30-emulator.php OpenGL ES 3.0 emulator]</ref> |
* [[ARM Mali]], séries 55 et 200 (OpenGL ES 1.1), série 400 (OpenGL ES 1.1 et 2.0), ainsi que les séries T600 et T700 (OpenGL ES 1.1, 2.0 et 3.0), T800 (1.1, 2.0, 3.1 et 3.2), G-71 et G-51 (1.1, 2.0, 3.1 et 3.2). ARM a également sorti, le 6 août 2012, un émulateur capable, pour faciliter le développement des applications, d'émuler l'API OpenGL ES 3.0 sur du matériel supportant OpenGL 3.3 et supérieur<ref>[http://www.malideveloper.com/developer-resources/tools/opengl-es-30-emulator.php OpenGL ES 3.0 emulator]</ref> |
||
* Nvidia [[Fermi (microarchitecture)|Fermi]], [[Kepler (microarchitecture)|Kepler]], [[Maxwell (microarchitecture)|Maxwell]] ainsi que [[Pascal (microarchitecture)|Pascal]] supportent OpenGL ES 3.0 3.1 et 3.2. |
|||
* Nvidia [[Tegra#Tegra K1|Tegra K1]] supporte OpenGL ES 3.0. |
|||
* |
* [[Intel HD Graphics]] série 2000 – 6000 et HD/Iris 400, 500, 600, inclus dans la série [[Sandy Bridge]] et ses successeurs de la série [[Sandy Bridge#Famille Ivy Bridge|Ivy Bridge]], [[Haswell (microarchitecture)|Haswell]], [[Skylake]] , [[Goldmont]] et [[Kaby Lake]] à l'aide de la bibliothèque libre Mesa EGL (du projet Mesa). |
||
== Problèmes == |
== Problèmes == |
||
Un problème inattendu est souvent observé durant les développements. Comme les |
Un problème inattendu est souvent observé durant les développements. Comme les plateformes mobiles ont le plus souvent un cycle de vie très court, les pilotes sont également écrits rapidement, avec des implémentations pauvres, laissant de côté la plupart des extensions (telles que le [[skinning|maillage (''skinning'')]], le [[Placage d'environnement|cube environment mapping]] ou certaines extensions propriétaires comme la compression de texture [[:en:PVRTC|PVRTC]] du MBX), et même parfois certaines fonctions "standards mais trop complexes", telles que les Vertex Buffer Objects. |
||
De nombreuses applications sont développées pour OpenGL, qui a un jeu d' |
De nombreuses applications sont développées pour OpenGL, qui a un jeu d'instructions plus étendu. Certaines tentatives existent permettant de faire fonctionner des applications OpenGL sur OpenGL ES : |
||
* [[GLshim]] (https://github.com/lunixbochs/glshim) permet d’exécuter des applications OpenGL 1.0 sur une plateforme compatible OpenGL ES 1.0. |
* [[GLshim]] (https://github.com/lunixbochs/glshim) permet d’exécuter des applications OpenGL 1.0 sur une plateforme compatible OpenGL ES 1.0. |
||
== |
== Notes et références == |
||
⚫ | |||
==Voir aussi== |
|||
=== Liens externes === |
|||
* {{en}} [http://www.khronos.org/opengles/ Site officiel d'OpenGL ES] |
* {{en}} [http://www.khronos.org/opengles/ Site officiel d'OpenGL ES] |
||
* {{en}} [http://sourceforge.net/projects/ogl-es/ Site officiel de Vincent] |
* {{en}} [http://sourceforge.net/projects/ogl-es/ Site officiel de Vincent] |
||
* {{en}} [http://www.imgtec.com/powerVR/insider/sdkdownloads/index.asp Le SDK d'Imagination Technologies (OpenGL ES 2.0)] |
* {{en}} [http://www.imgtec.com/powerVR/insider/sdkdownloads/index.asp Le SDK d'Imagination Technologies (OpenGL ES 2.0)] |
||
* {{en}} [http://embedded.org.ua/opengles/lessons.html |
* {{en}} [http://embedded.org.ua/opengles/lessons.html Tutoriels OpenGL ES 1.1] |
||
* {{en}} [http://www.malideveloper.com/developer-resources/tools/opengl-es-20-emulator.php Emulateur OpenGL ES 2.0] (compatible 1.1 et 2.0) |
* {{en}} [http://www.malideveloper.com/developer-resources/tools/opengl-es-20-emulator.php Emulateur OpenGL ES 2.0] (compatible 1.1 et 2.0) |
||
* {{en}} [http://www.malideveloper.com/developer-resources/tools/opengl-es-30-emulator.php Emulateur OpenGL ES 3.0] |
* {{en}} [http://www.malideveloper.com/developer-resources/tools/opengl-es-30-emulator.php Emulateur OpenGL ES 3.0] |
||
== Notes et références == |
|||
⚫ | |||
{{Palette|Khronos Group}} |
{{Palette|Khronos Group}} |
Dernière version du 11 octobre 2024 à 18:52
Développé par | Khronos Group |
---|---|
Première version | |
Dernière version | 3.2 ()[1] |
Écrit en | OpenGL ES Shading Language (d) |
Environnement | Multiplateforme |
Type | Interface de programmation |
Site web | www.khronos.org/opengles |
OpenGL ES (Open Graphics Library for Embedded System, parfois abrégé en OGLES ou GLES) est une spécification du Khronos Group qui définit une API multiplateforme pour la conception d'applications générant des images 3D dérivée de la spécification OpenGL, sous une forme adaptée aux plateformes mobiles ou embarquées telles que les téléphones mobiles, les assistants personnels (PDA), les consoles de jeu vidéo portables, les lecteurs multimédia de poche ou de salon... La console PlayStation 3 utilise également un dérivé d'OpenGL ES, nommé PSGL.
Implications
[modifier | modifier le code]OpenGL ES est principalement une simplification d'OpenGL, qui offre une API plus légère (économe en mémoire et coût processeur) et une simplification plus poussée.
Une API plus légère est plus indiquée car elle devra se connecter à des plateformes généralement peu puissantes et peu fournies en mémoire vive. De nombreuses fonctionnalités d'OpenGL ont donc été volontairement laissées de côté pour créer OpenGL ES. Certaines extensions ont été intégrées voire ajoutées dans le profil par défaut, car indispensables dans ces environnements, d'autres ont été conservées, mais la plupart ont été éliminées. Les calculs se font préférentiellement en virgule fixe, du fait que les processeurs concernés ne disposent que rarement de capacité de calcul en virgule flottante.
C'est une simplification appréciable au niveau des spécificités des plateformes, qui facilite le travail des développeurs. En effet, un développeur 3D classique doit gérer une ou deux consoles et/ou un ensemble de cartes graphiques émanant des deux ou trois principaux constructeurs. Un programmeur de plateformes embarquées doit adresser des centaines de mobiles différents, pour une dizaine de marques, tournant sous trois ou quatre systèmes d'exploitation (Windows Mobile, Symbian, Android, Brew, Linux, WIPI...), avec des cartes graphiques en provenance des trois principaux fournisseurs (ATI, NVidia, Imagination Technologies) et des écrans de résolutions très différentes, en orientation portrait ou paysage. Il est donc nécessaire pour lui de pouvoir préciser ses besoins et de laisser ensuite OpenGL ES faire les choix internes, tout comme il est important que le rendu logiciel ou accéléré se contrôle de la même manière.
Certains navigateurs récents permettent, grâce à WebGL et JavaScript, d’afficher du contenu 3D en OpenGL ES de manière native. Cela ouvre des perspectives pour le développement de jeux 3D en ligne.
Différentes normes
[modifier | modifier le code]OpenGL ES a connu quatre révisions principales :
- 1.0, dérivée d'OpenGL 1.3, fut conçue pour le rendu 3D logiciel. Il s'agit donc en fait d'une spécification de moteur de rendu 3D logiciel multiplateforme.
- 1.1, dérivée d'OpenGL 1.5, est sortie par la suite pour adapter la norme à l'arrivée de l'accélération matérielle sur ces plateformes en ajoutant/étendant certaines fonctionnalités. Un Expansion Pack fournit la possibilité d'un niveau de fonctionnalités supérieur.
- 2.0, dérivée d'OpenGL 2.0, est arrivée peu avant les prototypes de processeurs embarqués haut de gamme. Elle s'allège de la plupart de ses fonctions précédentes dont toute son API de rendu à cheminement (pipeline) fixe pour laisser la place à un système de shaders basé sur une variation de GLSL.
- 3.0 (Haiti), dérivée d'OpenGL 3.3 et 4.2, a été présentée le lundi 6 août 2012 au salon Siggraph[2],[3].
- 3.1 dont les spécifications sont sorties le 4 juin 2014[4].
- 3.2, incorpore plusieurs fonctionnalités telles que les "geometry shaders" et "tessellation shaders" dérivée de OpenGL, présentée le Mercredi 10 août 2015 au salon Siggraph.
Une norme 1.2 était prévue mais ne fut jamais publiée.
Il existe également OpenGL ES-SC 1.0 (OpenGL ES for Safety Critical application), pour les applications militaires, d'aviation civile ou autres activités ne tolérant pas de défaillance. Un retrait de fonctionnalités le rend plus léger et plus sûr.
La spécification d'OpenGL ES ne bénéficie pas pour le moment d'un mécanisme de certification pour le matériel. Tout produit peut donc se prétendre compatible OpenGL ES sans que n'ait été vérifié son degré de conformité à la norme. Les implémentations doivent en revanche subir une batterie de tests pour être déclarées conformes ; dans les faits, peu tentent de la passer.
Vulkan
[modifier | modifier le code]Le 7 janvier 2014, le Khronos Group annonce initialement Vulkan sous le nom d'OpenGL ES Next[5],[6] OpenGL ES Next est l'équivalent d'OpenGL Next pour la série embarquée. Il reprend les avancées de Gallium3D dans l'implémentation libre Mesa 3D d'OpenGL, qui a démontré avec Gallium3D, et en particulier LLVMpipe, qu'il était possible d'avoir des performances relativement correctes avec un rendu 3d uniquement logiciel, à condition d'utiliser plus intelligemment les différentes ressources disponibles (cœurs, etc.), ces avancées ont également permis de réduire l'utilisation du CPU lorsque l'accélération matérielle était présente. Ces avancées ont d'abord inspiré la création de Mantle_(API) chez AMD, puis des modifications chez Microsoft avec Direct3D 12 et de nouveau Khronos avec OpenGL Next. Dans tous ces cas, l'API est remise à plat et les erreurs de conception des versions précédentes, inadaptées aux avancées techniques et technologiques du matériel, éliminées des spécifications.
Finalement, Vulkan unifie à la fois la version embarquée OpenGL ES et de bureau OpenGL[6].
Implémentation logicielle
[modifier | modifier le code]- Hybrid Mobile Framework a été l'une des premières solutions disponibles et reste l'une des plus connues,
- Vincent est une implémentation libre d'OpenGL ES 1.1, ayant passé les tests de conformité,
- Imagination Technologies propose une bibliothèque de développement émulant OpenGL ES au travers d'OpenGL.
- La bibliothèque logicielle libre Mesa, utilisée sous X.org, est compatible avec les versions 1.1 et 2.0 d'OpenGL ES
- Android prend en charge OpenGL ES 2.0 depuis la version 2.0 d'Android [7]
- Android 4.3 prend en charge OpenGL ES 3.0 si les pilotes des puces sont compatibles[8]
Support matériel
[modifier | modifier le code]Il existe plusieurs processeurs graphiques possédant des pilotes OpenGL ES.
- ATI Imageon 2300 (OpenGL ES 1.0) racheté par Qualcomm puis renommé Adreno et utilisé dans ses SoC Snapdragon.
- Imagination Technologies PowerVR MBX (OpenGL ES 1.1) et PowerVR SGX (OpenGL ES 2.0), PowerVR serie 6 (OpenGL ES 3.0), PowerVR serie 7 (OpenGL ES 3.1), PowerVR serie 7XT et 8XE (OpenGL ES 3.2)
- Vivante Corporation (OpenGL ES 1.1 et 2.0) [9]
- ARM Mali, séries 55 et 200 (OpenGL ES 1.1), série 400 (OpenGL ES 1.1 et 2.0), ainsi que les séries T600 et T700 (OpenGL ES 1.1, 2.0 et 3.0), T800 (1.1, 2.0, 3.1 et 3.2), G-71 et G-51 (1.1, 2.0, 3.1 et 3.2). ARM a également sorti, le 6 août 2012, un émulateur capable, pour faciliter le développement des applications, d'émuler l'API OpenGL ES 3.0 sur du matériel supportant OpenGL 3.3 et supérieur[10]
- Nvidia Fermi, Kepler, Maxwell ainsi que Pascal supportent OpenGL ES 3.0 3.1 et 3.2.
- Intel HD Graphics série 2000 – 6000 et HD/Iris 400, 500, 600, inclus dans la série Sandy Bridge et ses successeurs de la série Ivy Bridge, Haswell, Skylake , Goldmont et Kaby Lake à l'aide de la bibliothèque libre Mesa EGL (du projet Mesa).
Problèmes
[modifier | modifier le code]Un problème inattendu est souvent observé durant les développements. Comme les plateformes mobiles ont le plus souvent un cycle de vie très court, les pilotes sont également écrits rapidement, avec des implémentations pauvres, laissant de côté la plupart des extensions (telles que le maillage (skinning), le cube environment mapping ou certaines extensions propriétaires comme la compression de texture PVRTC du MBX), et même parfois certaines fonctions "standards mais trop complexes", telles que les Vertex Buffer Objects.
De nombreuses applications sont développées pour OpenGL, qui a un jeu d'instructions plus étendu. Certaines tentatives existent permettant de faire fonctionner des applications OpenGL sur OpenGL ES :
- GLshim (https://github.com/lunixbochs/glshim) permet d’exécuter des applications OpenGL 1.0 sur une plateforme compatible OpenGL ES 1.0.
Notes et références
[modifier | modifier le code]- « https://www.khronos.org/news/press/khronos-expands-scope-of-3d-open-standard-ecosystem »
- 2012 SIGGRAPH OpenGL ES BOF
- (en) OpenGL ES BOF Siggraph (présentation PDF des nouveautés d'OpenGL ES 3.0)
- (en) « spécifications d'OpenGL ES 3.1 », khronos.org, (consulté le )
- (en) « OpenGL ES Next », (consulté le )
- (en) Ryan Smith, « Next Generation OpenGL Becomes Vulkan: Additional Details Released », AnandTech,
- (en) https://developer.android.com/about/versions/android-2.2.html
- David Legrand, « Lors de sa conférence d'annonce de la nouvelle Nexus 7, Google en a profité pour commencer à évoquer... », sur pcinpact.com, Next INpact, (consulté le ).
- « Vivante Graphics Processor IP » (consulté le )
- OpenGL ES 3.0 emulator
Voir aussi
[modifier | modifier le code]Liens externes
[modifier | modifier le code]- (en) Site officiel d'OpenGL ES
- (en) Site officiel de Vincent
- (en) Le SDK d'Imagination Technologies (OpenGL ES 2.0)
- (en) Tutoriels OpenGL ES 1.1
- (en) Emulateur OpenGL ES 2.0 (compatible 1.1 et 2.0)
- (en) Emulateur OpenGL ES 3.0