OpenGL ES

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

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 multiplate-forme 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 jeux vidéo portables, les lecteurs multimédia de poche ou de salon... La console de jeux vidéo 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, avec 2 buts : une API plus légère en termes de mémoire et de coût processeur, et une simplification plus poussée.

Plus légère car ces plates-formes sont généralement peu puissantes et peu fournies en mémoire vive. De nombreuses fonctionnalités ont donc été délaissées. Certaines extensions ont été intégrées voire ajoutées dans le profil par défaut car indispensable dans des environnements tels que ceux-ci, certaines autres conservées, la plupart éliminées. Les calculs se font volontiers en virgule fixe, pour des processeurs qui ne disposent que rarement de capacité de calculs en virgule flottante.

Une simplification notamment au niveau des spécificités des plates-formes, pour faciliter le travail des développeurs. En effet, un développeur 3D classique doit gérer 1 ou 2 consoles ou un ensemble de carte graphique émanant de 2 ou 3 constructeurs principaux. Un programmeur de plateformes embarquées doit adresser des centaines de mobiles différents, pour une dizaine de marque, tournant sous 3 ou 4 systèmes d'exploitation (Windows Mobile, Symbian, Android, Brew, Linux, WIPI...), avec des cartes graphiques en provenance de 3 grands fournisseurs principaux (ATI, NVidia, Imagination Technologies) et des écrans de résolution très différentes, en orientation portrait ou paysage. Il est donc nécessaire 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 nativement du contenu 3d en OpenGL ES. Cela ouvre des perspectives pour le développement de jeux 3d en ligne.

Différentes normes[modifier | modifier le code]

OpenGL ES a connu 4 révisions principales :

  • 1.0, dérivée d'OpenGL 1.3, fut conçu pour le rendu 3D logiciel. Il s'agit donc en fait d'une spécification de moteur de rendu 3D logiciel multiplate-forme.
  • 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 plates-formes 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, présentée le lundi 6 août 2012 au salon Siggraph[1],[2].

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'aviations civiles ou autres activités ne tolérant pas de défaillances. 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 Open GL ES Next[3]

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 [4]
  • Android 4.3 prend en charge OpenGL ES 3.0 si les pilotes des puces sont compatibles[5]

Support matériel[modifier | modifier le code]

Il existe plusieurs processeurs graphiques possédant des pilotes OpenGL ES. Ces processeurs font souvent d'autres tâches auxiliaires tels que le contrôle d'appareils photo ou la décompression vidéo[réf. nécessaire].

  • 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).
  • Vivante Corporation (OpenGL ES 1.1 et 2.0) [6]
  • 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[7]
  • Nvidia Tegra K1 supporte OpenGL ES 3.0.
  • Intel HD Graphics 2000 et 3000, inclus dans la série Sandy Bridge et ses successeurs de la série Ivy Bridge à 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 plates-formes mobiles ont souvent un cycle de vie très court, les pilotes sont souvent écrits rapidement et les implémentations sont souvent pauvres, laissant de côté la plupart des extensions (tel que maillage (skinning), le cube environment mapping ou certaines extensions propriétaires comme la compression de texture PVRTC du MBX), mais aussi parfois certaines fonctions standards trop complexes, telles que les Vertex Buffer Objects.

De nombreuses applications sont développées pour OpenGL, qui a un jeu d'instruction plus étendu. Certaines tentatives existent permettant de faire fonctionner des applications OpenGL sur OpenGL ES :

Liens externes[modifier | modifier le code]


Notes et références[modifier | modifier le code]