Was sind die Unterschiede zwischen OpenGL ES und OpenGL?
Was sind die Unterschiede zwischen OpenGL ES und OpenGL?
Antworten:
Zwei der bedeutenderen Unterschiede zwischen OpenGL ES und OpenGL sind das Entfernen der glBegin ... glEnd-Aufrufsemantik für das primitive Rendern (zugunsten von Vertex-Arrays) und die Einführung von Festkomma-Datentypen für Vertex-Koordinaten und -Attribute zur besseren Unterstützung die Rechenfähigkeiten eingebetteter Prozessoren, denen häufig eine FPU fehlt
Schauen Sie hier: OpenGL_ES
OpenGL ES ist die OpenGL-API für eingebettete Systeme. Es ist in Bezug auf die Anzahl der API-Funktionen einfacher als das normale OpenGL, kann jedoch schwieriger zu verwenden sein, da Sie Vertex-Puffer verwenden und mehr Shader schreiben müssen.
Wenn Sie ein normales opengl verwenden, können Sie mit glBegin und glEnd die Geometrieprimitive einschließen, die Sie zeichnen müssen. Wenn Sie jedoch Opengl ES verwenden, müssen Sie Scheitelpunktpuffer verwenden. Ich denke, dies ist aus Gründen der Leistung.
Derzeit gibt es zwei Opengl ES-Versionen. Die Version 1.1 unterstützt nur die feste Rendering-Pipeline, während die Version 2.0 den glsl-Shader unterstützt. Es gibt jedoch keine feste Rendering-Pipeline. Mit anderen Worten, Sie müssen für alles Ihren eigenen Shader schreiben.
Opengl ES wird hauptsächlich auf Mobiltelefonen und im Internet (Webgl) verwendet. Entsprechend der Spezifikation kann Ihr Desktop-OpenGL-Treiber alle OpenGLIS-Apis unterstützen.
Ich möchte nur hinzufügen, dass OpenGL 3.3 und OpenGL ES 2.0 größtenteils interoperabel sind, indem eine Teilmenge der Funktionen von OpenGL 3.3 verwendet wird. Meine benutzerdefinierte C ++ - Engine verwendet dieselben API-Aufrufe mit einigen Definitionen für Android / IOS / Windows / OSX / Linux.
Zu den Hauptunterschieden gehören:
Es gibt auch viele andere Unterschiede, aber das deckt einige der wichtigsten ab.
OpenGL ES bedeutet Open Graphics Library für eingebettete Systeme (OpenGL ES oder GLES) ist eine Teilmenge der OpenGL-Programmierschnittstelle (API) für das Rendern von Computergrafiken, wie sie von Videospielen verwendet wird, die normalerweise hardwarebeschleunigt sind eine Grafikverarbeitungseinheit (GPU). Es wurde für eingebettete Systeme wie Smartphones, Computer-Tablets, Videospielkonsolen und PDAs entwickelt.
Die offizielle OpenGL | ES-Website: http://www.opengl.org/
Weitere Informationen erhalten Sie auch im Wiki: http://en.wikipedia.org/wiki/OpenGL_ES
Überprüfen Sie die OpenGL ES-Übersicht hier: http://www.khronos.org/opengles/
Kurz gesagt, ES ist eine Teilmenge von Open GL für "eingebettete Systeme". Spezifische Unterschiede hängen von den Versionen und Funktionssätzen ab, die Sie vergleichen.
Die OpenGL ES-Registrierung enthält detaillierte API-Unterschiede zwischen OpenGL ES und der entsprechenden Version von OpenGL:
Es gibt jedoch kein Dokument, das die Unterschiede für OpenGL ES 3.0 enthält.
Ich denke, Sie erhalten eine bessere Antwort, wenn Sie fragen, was die Unterschiede zwischen OpenGL und OpenGL ES sind.
Es gibt tiefgreifende Unterschiede zwischen OpenGL ES 1.1 und ES 2.0, OpenGL 1.5 und 2.0 sowie OpenGL 3.0 und 4.0.
Wie andere beschrieben haben, wurde ES für eingebettete Systeme geschrieben. Es ist auch die erste "Hausreinigung" der GL-Spezifikation seit ihrer Einführung. OpenGL hatte a) viele Möglichkeiten, dasselbe zu tun (z. B. konnte man ein Quad / Rect auf zwei verschiedene Arten zeichnen und ein Pixelbild auf zwei verschiedene Arten blenden usw.). ES ist einfacher als OpenGL und bietet generell weniger Funktionen, da es für weniger anspruchsvolle Hardware ausgelegt ist.
Ich fordere Sie dringend auf, OpenGL ES 1.1 nicht als Vergangenheit zu betrachten und nicht die Art und Weise darzustellen, wie sich OpenGL oder OpenGL ES in Zukunft architektonisch bewegen.
Die Terminologie und Versionen sind ziemlich verwirrend (besonders für Neulinge). Eine ganzheitlichere Sicht auf OpenGL und OpenGL-ES (GLES) finden Sie unter OpenGL - Damals und Heute .
Der Hauptunterschied zwischen beiden besteht darin, dass OpenGL ES für eingebettete Systeme wie Smartphones entwickelt wurde, während OpenGL auf Desktops verwendet wird. Auf der Codierungsebene unterstützt OpenGL ES keine Funktionen mit festen Funktionen wie glBegin / glEnd usw. OpenGL unterstützt Pipelines mit festen Funktionen (unter Verwendung eines Kompatibilitätsprofils).
Die moderne Antwort für ES 3.0 im Vergleich zu OpenGL 4.6 unterscheidet sich erheblich von der akzeptierten Antwort. Jetzt ist alles, was mit fester Pipeline zu tun hat, weg.
ES ist für EMBEDDED SYSTEMS weitaus weniger robust.
OpenGL ES ist einfach die OpenGL-API für eingebettete Systeme (OpenGL ES bezieht sich auf OpenGL Embedded Systems). Daher ist es eine Teilmenge von OpenGL und wird häufig in Mobiltelefonen und einigen VR-Systemen verwendet. Es wurde für weniger anspruchsvolle Hardware entwickelt. OpenGL ES hat weniger Begriffe und Funktionen als OpenGL. Stellen Sie sich Folgendes vor: Sie nehmen genau das, was Sie für dieses System benötigen, denn wenn wir in unserer gesamten Arbeit keine Funktion benötigen oder die Hardware nicht damit umgehen kann, müssen Sie nichts hinzufügen Diese Funktion erschwert jedoch die Verwendung dieser API, da mehr Shader und komplizierte Codes geschrieben werden müssen, um etwas zu vereinfachen, da OpenGL ES keine Shader in der Grafikpipeline als OpenGL bereitstellt. Die letzte Version von OpenGL ES ist 3.2 und bietet jetzt Unterstützung für Tessellation für zusätzliche Geometriedetails und neue Geometrie-Shader. Ich rate Ihnen daher, OpenGL ES 3.0+ zu lernen oder zu verwenden (falls es Ihre Zielsprache ist), da ab und zu die alten Versionen die alten Versionen nicht mit leistungsfähigerer Hardware und Grafikkarten verwenden und wenn Ihr Ziel OpenGL ist, beginnen Sie mit Version 3. 3+ oder 4.0+. Wenn Sie mehr Zeit haben, ist es kein Problem, einen schnellen Überblick über die alten Versionen zu erhalten, um besser zu verstehen, wie die Dinge entwickelt wurden und warum. Sie können diesen Link für weitere Details überprüfen:https://en.wikipedia.org/wiki/OpenGL_ES
OpenGL ist eine 2D- und 3D-Grafik-API, die Tausende von Anwendungen auf eine Vielzahl von Computerplattformen bringt.
OpenGL ES ist eine gut definierte Teilmenge von Desktop OpenGL.
OpenGL® ES ist eine lizenzgebührenfreie, plattformübergreifende API für voll funktionsfähige 2D- und 3D-Grafiken auf eingebetteten Systemen - einschließlich Konsolen, Telefonen, Geräten und Fahrzeugen. Es besteht aus genau definierten Teilmengen von Desktop OpenGL, ...
Siehe diesen Link .
PS
WebGL teilt die Spezifikation mit OpenGL ES, dh wenn Sie Desktop-OpenGL gelernt haben, ist es einfach, die anderen (OpenGL ES, WebGL) zu lernen.