Was ist der Unterschied zwischen OpenGL ES und OpenGL?

Antworten:

13

OpenGL ES (Embedded Systems) ist eine abgespeckte Version von OpenGL. Es gibt eine Menge Unterschiede zwischen diesen beiden und wenn Sie in die Details gehen wollen, dann können Sie dieses 128 Spezifikationspapier lesen. ES ist jedoch eine Teilmenge von OpenGL, sodass alle ES-Apps auf Nicht-ES-Systemen funktionieren, nicht jedoch im Gegenteil.

Es gibt keinen Ort, an dem Sie einfach definieren können, was sich in ES befindet und was nicht. Sogar eine Definition lautet: "OpenGL-ES ist genau wie OpenGL, aber ohne viel Zeug. Zum Beispiel gibt es kein glBegin oder glEnd."

Ólafur Waage
quelle
5
ES ist keine reine Untermenge von OpenGL. Ihre Behauptung, dass alle ES-Apps auf Nicht-ES-Systemen funktionieren, ist also nicht wahr.
Jari Komppa
5
@JariKomppa - Es ist ab OpenGL 4.1.
31.
Eine schöne Zusammenfassung der Änderungen / Unterschiede wäre schön.
Bobobobo
19

Leider ist noch keine der Antworten vollständig und vollständig richtig. Wirklich, OpenGL-ES macht zwei Dinge, die OpenGL nicht macht:

1) Es reduziert OpenGL-APIs und erweitert sie, um sie für eine mobile Plattform geeignet zu machen. Das heißt, sie entfernen zuerst APIs und Features, die Sie wirklich nicht benötigen, und sind für mobile Implementierungen, wie das Rendern von Polygonen oder die Verwendung von Anzeigelisten, lästig. Dann macht es ein paar sinnvolle Erweiterungen, um es für die mobile Plattform nützlicher zu machen. Ich kann mich jedoch nicht einmal an ein Beispiel erinnern.

2) Es stellt die Schnittstelle zum Fenstermanager (und damit zur nativen Grafikhardware) der mobilen Plattform bereit. Dieser Teil von OpenGL-ES, bekannt als EGL, ähnelt weitgehend GLUT auf dem Desktop. Abgesehen davon, dass es keine dieser praktischen Methoden gibt, die für diese Schnittstelle nicht unbedingt erforderlich sind. Daher gibt es keine API zum Zeichnen von Polyedern oder Kugeln (wie in GLUT). Es gibt jedoch beispielsweise APIs, die den GLUT-Rückrufen init () sowie DisplayFunc () und ReshapeFunc () entsprechen.

user1800
quelle
2
EGL ist nicht Teil von OpenGL ES. Es ist eine eigene Sache. Siehe die Spezifikation. Es ist nicht ein erforderliches Teil von OpenGL ES und wird kaum erwähnt , außer zu sagen , dass es vielleicht auf Ihrem System vorhanden ist, aber sonst ein Fenster usw. ist nicht in dem Anwendungsbereich der OpenGL ES spec Einrichten
gman
7

Es gibt zwei OpenGL ES-Versionen für Android:

  • OpenGL ES 1.x (1.0 oder 1.1): Eine Teilmenge von OpenGL 1.5 ohne sofortige Befehle
    • kein glBegin / glEnd
    • Keine Quad- oder Polygon-Unterstützung
  • OpenGL ES 2.0: eine Teilmenge von OpenGL 3.X ohne feste Pipeline
    • Vertex-Shader
    • Fragment Shader
    • Geometrie-Shader sind nicht verfügbar

Achtung, OpenGL ES 2.0 ist nicht mit OpenGL ES 1.X kompatibel!

Fast alle Android-Handys haben OpenGL 1.X GPU und die meisten haben 2.0. OpenGL ES 2.0 ist nur mit Android 2.x oder neuer verfügbar.

Ellis
quelle