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.
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.
OpenGL ES a connu quatre révisions principales :
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.
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].
Il existe plusieurs processeurs graphiques possédant des pilotes OpenGL ES.
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 :