Android verwendet OpenGL ES. Worin besteht der Unterschied zu OpenGL?
Android verwendet OpenGL ES. Worin besteht der Unterschied zu OpenGL?
Antworten:
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."
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.
Es gibt zwei OpenGL ES-Versionen für Android:
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.