Quelle est la différence entre OpenGL ES et OpenGL?

Réponses:

13

OpenGL ES (Embedded Systems) est une version allégée d'OpenGL. Il y a beaucoup de différences entre ces deux et si vous voulez entrer dans les détails, vous pouvez lire ce document de spécification 128. Mais ES est un sous-ensemble d'OpenGL, donc toutes les applications ES fonctionnent sur des systèmes non ES mais pas l'inverse.

Il n'y a pas un seul endroit où vous pouvez facilement définir ce qui est dans ES et ce qui ne l'est pas. Une seule définition est "OpenGL-ES est exactement comme OpenGL, mais sans beaucoup de choses. Par exemple, il n'y a pas de glBegin ou de glEnd."

Ólafur Waage
la source
5
ES n'est pas un sous-ensemble d'OpenGL, donc votre affirmation selon laquelle toutes les applications ES fonctionnent sur des systèmes non ES n'est pas vraie.
Jari Komppa
5
@JariKomppa - C'est à partir d'OpenGL 4.1.
DMan
Un bon résumé des changements / différences serait bien.
bobobobo
19

Hélas, aucune des réponses à ce jour n'est à la fois complète et parfaitement correcte. Vraiment, OpenGL-ES fait deux choses que OpenGL ne fait pas:

1) il supprime puis étend les API OpenGL pour le rendre adapté à une plate-forme mobile. En d'autres termes, ils suppriment les API et les fonctionnalités dont vous n'avez vraiment pas besoin et sont lourds pour les implémentations mobiles, telles que le rendu de polygones ou l'utilisation de listes d'affichage. Ensuite, il fait quelques extensions judicieuses pour le rendre plus utile pour la plate-forme mobile. Je ne me souviens même pas d'un exemple de cela, cependant.

2) il fournit l'interface au gestionnaire de fenêtres (et donc au matériel graphique natif) de la plateforme mobile. Cette partie d'OpenGL-ES, connue sous le nom d'EGL, ressemble beaucoup à GLUT sur le bureau. Sauf qu'il n'a aucune de ces méthodes pratiques qui ne sont pas strictement nécessaires pour cette interface. Il n'y a donc pas d'API pour dessiner des polyèdres ou des sphères (comme dans GLUT). Mais il existe, par exemple, des API qui correspondent aux init () de GLUT, et aux rappels DisplayFunc () et ReshapeFunc ().

user1800
la source
2
EGL ne fait pas partie d'OpenGL ES. C'est sa propre chose séparée. Voir les spécifications. Il ne fait pas partie de OpenGL ES et est à peine mentionné nécessaire , sauf pour dire qu'il pourrait existe sur votre système mais sinon la mise en place d' une fenêtre , etc. est en dehors de la portée de l'OpenGL ES de
gman
7

Il existe deux versions d'OpenGL ES disponibles sur Android:

  • OpenGL ES 1.x (1.0 ou 1.1): un sous-ensemble d'OpenGL 1.5 sans commandes immédiates
    • pas de glBegin / glEnd
    • pas de support Quad ou Polygon
  • OpenGL ES 2.0: un sous-ensemble d'OpenGL 3.X sans pipeline fixe
    • vertex shaders
    • shaders de fragments
    • les shaders de géométrie ne sont pas disponibles

Attention, OpenGL ES 2.0 n'est pas compatible avec OpenGL ES 1.X!

Presque tous les téléphones Android ont un GPU OpenGL 1.X et la plupart ont 2.0. OpenGL ES 2.0 n'est disponible qu'avec Android 2.x ou plus récent.

Ellis
la source