OpenGL ES contre OpenGL

91

Quelles sont les différences entre OpenGL ES et OpenGL?

kml_ckr
la source
13
Quelles versions d'OpenGL et d'OpenGL ES comparez-vous?
Firas Assaad
3
Si vous utilisez des éléments GL2, basez-les toujours sur GLES2. Il existe différentes façons de faire les choses dans GL2, mais une façon dans GLES2 pour la plupart. De plus, vous ne rencontrerez pas de problèmes pour le portage de cette façon.
zezba9000
duplicata possible d' OpenGL ou d'OpenGL ES
Enamul Hassan
gamedev.stackexchange.com/questions/150/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Réponses:

54

Deux des différences les plus significatives entre OpenGL ES et OpenGL sont la suppression de la sémantique d'appel glBegin ... glEnd pour le rendu primitif (en faveur des tableaux de sommets) et l'introduction de types de données à virgule fixe pour les coordonnées de sommets et les attributs pour une meilleure prise en charge les capacités de calcul des processeurs embarqués, souvent dépourvus de FPU

Jetez un œil ici: OpenGL_ES

Kamaci
la source
19
Ceux-ci ont également été supprimés des versions récentes d'OpenGL de bureau / poste de travail.
Ben Voigt
2
Une comparaison intéressante est entre OGL 3 et GLES 2. En OGL 3, le mode immédiat est obsolète (bien que toujours supporté). Une grande partie (mais pas la totalité) des fonctionnalités de OGL 3 est disponible dans GLES 2.
nullspace
49

OpenGL ES est l'API opengl pour les systèmes embarqués. Il est plus simple que l'opengl normal en termes de nombre de fonctions api, mais peut être plus difficile à utiliser, car vous devrez utiliser des tampons de vertex et écrire plus de shaders.

Lorsque vous utilisez un opengl normal, vous pouvez utiliser glBegin et glEnd pour entourer les primitives géométriques que vous devez dessiner, mais lorsque vous utilisez Opengl ES, vous devrez utiliser des tampons de vertex. Je suppose que c'est pour des problèmes de performance.

Actuellement, il existe deux versions d'Opengl ES, la version 1.1 ne peut prendre en charge que le pipeline de rendu fixe, tandis que la version 2.0 prend en charge le shader glsl. Cependant, il n'a pas de pipeline de rendu fixe. En d'autres termes, vous devrez écrire votre propre shader pour tout.

Opengl ES est principalement utilisé sur les téléphones portables et sur le Web (webgl). Selon les spécifications, le pilote opengl de votre bureau peut prendre en charge toutes les apis opengl es.

Bill Yan
la source
3
Vous n'êtes pas obligé d'utiliser des tampons de vertex, je ne pense pas. Vous pouvez également utiliser des tableaux de sommets en mode immédiat. Ai-je tort?
Gravity
Ouais, vous n'avez pas à utiliser de tampons de vertex
Stanislav Ageev
2
"Lorsque vous utilisez un opengl normal, vous pouvez utiliser glBegin et glEnd pour enfermer les primitives de géométrie que vous devez dessiner", pas si vous voulez que votre code soit compatible en aval, et pas non plus si vous utilisez un Mac, ce que je am;)
Jerfov2
38

Je voudrais juste ajouter qu'OpenGL 3.3 et OpenGL ES 2.0 sont pour la plupart interopérables, en utilisant un sous-ensemble des fonctionnalités d'OpenGL 3.3. Mon moteur C ++ personnalisé utilise les mêmes appels d'API, avec quelques définitions, pour Android / IOS / Windows / OSX / Linux.

Parmi les principales différences figurent:

  • manque de prise en charge des shaders géométriques
  • pas de mélange min / max (il peut y avoir une extension pour cela)
  • pas de primitive Quad List
  • formats de texture plus restreints (notamment en virgule flottante)
  • glGetTexImage n'est pas disponible
  • il n'y a pas de retour de transformation, idem pour plusieurs autres fonctionnalités avancées

Il existe également de nombreuses autres différences, mais cela couvre plusieurs des plus importantes.

nullspace
la source
7
Je pense que nous pouvons lentement modifier ce message pour inclure tous les appels de fonction manquants. Et les versions à comparer devraient toujours être 3.3 et ES 2.0 puisqu'elles sont sorties la même année
CoffeDeveloper
8

OpenGL ES signifie Open Graphics Library for Embedded Systems (OpenGL ES ou GLES) est un sous-ensemble de l'interface de programmation d'application (API) de rendu d'infographie OpenGL pour le rendu d'infographie 2D et 3D tels que ceux utilisés par les jeux vidéo, généralement accélérés par le matériel en utilisant une unité de traitement graphique (GPU). Il est conçu pour les systèmes embarqués tels que les smartphones, les tablettes informatiques, les consoles de jeux vidéo et les PDA.

Le site officiel d'OpenGL | ES: http://www.opengl.org/

vous pouvez également obtenir plus d'informations sur le wiki: http://en.wikipedia.org/wiki/OpenGL_ES

罗 大 柚
la source
6

Consultez la présentation d'OpenGL ES ici: http://www.khronos.org/opengles/

En bref, ES est un sous-ensemble d'Open GL pour les «systèmes embarqués». Les différences spécifiques dépendront des versions et des ensembles de fonctionnalités que vous comparez.

Holtavolt
la source
5

Le registre OpenGL ES contient des différences d'API détaillées entre OpenGL ES et la version correspondante d'OpenGL:

Cependant, il n'y a pas de document contenant les différences pour OpenGL ES 3.0.

se tordre
la source
4

Je pense que vous obtiendrez une meilleure réponse si vous demandez "quelles sont les différences entre OpenGL et OpenGL ES".

Il existe de profondes différences entre OpenGL ES 1.1 et ES 2.0, OpenGL 1.5 et 2.0 et OpenGL 3.0 et 4.0.

Comme d'autres l'ont décrit, ES a été écrit pour les systèmes embarqués. Il représente également le premier «nettoyage domestique» de la spécification GL depuis sa création. OpenGL avait a) plusieurs façons de faire la même chose (par exemple, vous pouviez dessiner un quad / rect de deux façons différentes et blit une image pixel de deux façons différentes, etc.). ES est plus simple qu'OpenGL avec moins de fonctionnalités en général car il est conçu pour du matériel moins sophistiqué.

Je vous exhorte à ne pas regarder OpenGL ES 1.1 car il appartient au passé et ne représente pas la manière dont OpenGL ou OpenGL ES évolue sur le plan architectural dans le futur.

user501138
la source
4

La terminologie et les versions sont assez déroutantes (surtout pour les débutants). Pour une vue plus holistique sur OpenGL et OpenGL-ES (GLES), consultez OpenGL - Hier et aujourd'hui .

ap-osd
la source
1
Le lien contient également un excellent tutoriel avec des exemples, bien expliqué comment fonctionne le pipeline de rendu OpenGL.
JustWe
Voici le lien pour le tutoriel.
ap-osd
3

La principale différence entre les deux est qu'OpenGL ES est conçu pour les systèmes embarqués tels que les smartphones, tandis qu'OpenGL est celui des ordinateurs de bureau. Au niveau du codage, OpenGL ES ne prend pas en charge les fonctions à fonction fixe comme glBegin / glEnd etc ... OpenGL peut prendre en charge le pipeline à fonction fixe (en utilisant un profil de compatibilité).

Matth
la source
2

La réponse moderne, pour ES 3.0 par rapport à OpenGL 4.6, est bien différente de la réponse acceptée. Maintenant, tout le matériel de pipeline fixe a disparu.

ES, pour EMBEDDED SYSTEMS, est beaucoup moins robuste.

Steve Wyatt
la source
1

OpenGL ES est simplement l'API OpenGL pour les systèmes embarqués (OpenGL ES fait référence à OpenGL Embedded Systems). c'est donc un sous-ensemble d'OpenGL et largement utilisé dans les téléphones portables et certains systèmes de réalité virtuelle, il est conçu pour du matériel moins sophistiqué. OpenGL ES a moins de termes et de fonctions qu'OpenGL, pensez-y comme: vous prenez juste ce dont vous avez besoin pour ce système parce que si nous n'avons pas besoin d'une fonction dans son ensemble, notre travail ou le matériel ne peut pas le gérer, donc pas besoin d'ajouter cette fonction, mais en cela, rend l'utilisation de cette API plus difficile en raison de la nécessité d'écrire plus de shaders et de codes compliqués pour faire quelque chose de simple car OpenGL ES ne fournit pas de shaders dans le pipeline graphique en tant qu'OpenGL. la dernière version d'OpenGL ES est la 3.2, elle peut désormais fournir un support Tessellation pour des détails de géométrie supplémentaires, de nouveaux shaders de géométrie. Je vous conseille donc de commencer à apprendre ou à utiliser OpenGL ES 3.0+ (au cas où c'est votre langue cible) car maintenant et la prochaine génération n'utilisera pas les anciennes versions avec du matériel et des cartes graphiques plus puissants et si votre cible est OpenGL, commencez par la v3. 3+ ou 4.0+. si vous avez plus de temps pas de problème pour faire un aperçu rapide des anciennes versions pour mieux comprendre comment les choses ont été développées et pourquoi. vous pouvez consulter ce lien pour plus de détails:https://en.wikipedia.org/wiki/OpenGL_ES

Omar Ghannou
la source
0

simplement dire, opengl est la version de bureau et opengl es est pour les systèmes embarqués comme les téléphones portables où il y a plus de contraintes de mémoire et de performances que celles des ordinateurs. opengl es serait plus difficile à utiliser.

pratik_z
la source
0

OpenGL est une API graphique 2D et 3D apportant des milliers d'applications à une grande variété de plates-formes informatiques.

OpenGL ES est des sous - ensembles bien définis d'OpenGL de bureau.

OpenGL® ES est une API multiplateforme libre de droits pour les graphiques 2D et 3D complets sur les systèmes embarqués - y compris les consoles, les téléphones, les appareils et les véhicules. Il se compose de sous-ensembles bien définis d'OpenGL de bureau, ...

Voir ce lien .

PS

WebGL partage la spécification avec OpenGL ES, c'est-à-dire que si vous avez appris OpenGL de bureau, il est simple d'apprendre les autres (OpenGL ES, WebGL).

Jafffy
la source