Jaka jest różnica między OpenGL ES a OpenGL?

Odpowiedzi:

13

OpenGL ES (Embedded Systems) to uproszczona wersja OpenGL. Istnieje wiele różnic między tymi dwoma, a jeśli chcesz przejść do szczegółów, możesz przeczytać ten artykuł ze specyfikacją 128. Ale ES jest podzbiorem OpenGL, więc wszystkie aplikacje ES działają na systemach innych niż ES, ale nie odwrotnie.

Nie ma jednego miejsca, w którym można łatwo zdefiniować, co jest w ES, a co nie. Nawet jedna definicja brzmi: „OpenGL-ES jest podobny do OpenGL, ale bez wielu rzeczy. Na przykład nie ma glBegin ani glEnd”.

Lalafur Waage
źródło
5
ES nie jest prostym podzbiorem OpenGL, więc twoje twierdzenie, że wszystkie aplikacje ES działają na systemach innych niż ES, nie jest prawdziwe.
Jari Komppa
5
@JariKomppa - To jest od OpenGL 4.1.
DMan
Miłe byłoby podsumowanie zmian / różnic.
bobobobo,
19

Niestety, żadna z dotychczasowych odpowiedzi nie jest kompletna i całkowicie poprawna. Naprawdę, OpenGL-ES robi dwie rzeczy, których nie robi OpenGL:

1) rozbiera, a następnie rozszerza interfejsy API OpenGL, aby był odpowiedni dla platformy mobilnej. Oznacza to, że najpierw usuwają interfejsy API i funkcje, których naprawdę nie potrzebujesz, i są uciążliwe dla implementacji mobilnych, takich jak renderowanie wielokątów lub korzystanie z list wyświetlania. Następnie tworzy kilka rozsądnych rozszerzeń, aby uczynić go bardziej przydatnym dla platformy mobilnej. Jednak nie pamiętam nawet takiego przykładu.

2) zapewnia interfejs do menedżera okien (a zatem i natywnego sprzętu graficznego) platformy mobilnej. Ta część OpenGL-ES, znana jako EGL, przypomina GLUT na komputerze. Tyle że nie ma żadnej z tych wygodnych metod, które nie są absolutnie konieczne dla tego interfejsu. Więc nie ma API do rysowania wielościanów lub kulek (jak w GLUT). Ale są na przykład interfejsy API, które odpowiadają init () GLUT oraz wywołaniom zwrotnym DisplayFunc () i ReshapeFunc ().

użytkownik1800
źródło
2
EGL nie jest częścią OpenGL ES. To osobna rzecz. Zobacz specyfikację. Nie jest to wymagane część OpenGL ES i jest ledwo wspomniał chyba powiedzieć, że może istnieje w systemie, ale poza tym utworzenie okna itp jest poza zakresem OpenGL ES SPEC
G-Mana
7

W systemie Android dostępne są dwie wersje OpenGL ES:

  • OpenGL ES 1.x (1.0 lub 1.1): podzbiór OpenGL 1.5 bez natychmiastowych poleceń
    • bez glBegin / glEnd
    • brak obsługi Quad lub Polygon
  • OpenGL ES 2.0: podzbiór OpenGL 3.X bez ustalonego potoku
    • shadery wierzchołków
    • shadery fragmentów
    • shadery geometrii nie są dostępne

Ostrzeżenie, OpenGL ES 2.0 nie jest kompatybilny z OpenGL ES 1.X!

Prawie wszystkie telefony z Androidem mają procesor graficzny OpenGL 1.X, a większość ma 2.0. OpenGL ES 2.0 jest dostępny tylko z systemem Android 2.x lub nowszym.

Ellis
źródło