OpenGL ES kontra OpenGL

92

Jakie są różnice między OpenGL ES i OpenGL?

kml_ckr
źródło
13
Które wersje OpenGL i OpenGL ES porównujesz?
Firas Assaad
3
Jeśli używasz jakichkolwiek rzeczy GL2, zawsze opieraj je na GLES2. Istnieją różne sposoby robienia rzeczy w GL2, ale w większości przypadków jeden sposób w GLES2. Nie będziesz też mieć problemów z przenoszeniem rzeczy w ten sposób.
zezba9000
możliwy duplikat OpenGL lub OpenGL ES
Enamul Hassan
gamedev.stackexchange.com/questions/150/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Odpowiedzi:

55

Dwie bardziej znaczące różnice między OpenGL ES i OpenGL to usunięcie semantyki wywoływania glBegin ... glEnd dla renderowania prymitywnego (na korzyść tablic wierzchołków) oraz wprowadzenie typów danych o stałym punkcie dla współrzędnych wierzchołków i atrybutów, aby lepiej je obsługiwać możliwości obliczeniowe wbudowanych procesorów, którym często brakuje FPU

Zajrzyj tutaj: OpenGL_ES

kamaci
źródło
19
Te zostały również usunięte z ostatnich wersji OpenGL dla komputerów stacjonarnych / stacji roboczych.
Ben Voigt
2
Ciekawe porównanie dotyczy OGL 3 i GLES 2. W OGL 3 tryb natychmiastowy jest przestarzały (chociaż nadal jest obsługiwany). Wiele (choć nie wszystkie) funkcji OGL 3 jest dostępnych w GLES 2.
nullspace
50

OpenGL ES to interfejs API OpenGL dla systemów wbudowanych. Jest prostszy niż normalny opengl pod względem liczby funkcji api, ale może być trudniejszy w użyciu, ponieważ będziesz musiał używać buforów wierzchołków i pisać więcej shaderów.

Kiedy używasz normalnego opengl, możesz użyć glBegin i glEnd, aby zawrzeć prymitywy geometrii, które chcesz narysować, ale używając Opengl ES, będziesz musiał użyć buforów wierzchołków. Myślę, że dotyczy to wydajności.

Obecnie istnieją dwie wersje Opengl ES, wersja 1.1 może obsługiwać tylko stały potok renderowania, podczas gdy wersja 2.0 obsługuje shader GLSL. Jednak nie ma stałego potoku renderowania. Innymi słowy, będziesz musiał napisać własny moduł cieniujący dla wszystkiego.

Opengl ES jest używany głównie w telefonach komórkowych i Internecie (webgl). Zgodnie ze specyfikacją, twój sterownik OpenGL na pulpicie może obsługiwać wszystkie opengl es apis.

Bill Yan
źródło
3
Myślę, że nie musisz używać buforów wierzchołków. Możesz także użyć tablic wierzchołków trybu bezpośredniego. Czy się mylę?
Gravity
Tak, nie musisz używać buforów wierzchołków
Stanislav Ageev,
2
„Kiedy używasz normalnego opengl, możesz użyć glBegin i glEnd, aby zawrzeć prymitywy geometrii, które chcesz narysować”, nie jeśli chcesz, aby kod był zgodny z nowszymi wersjami, a także nie, jeśli używasz komputera Mac, co ja am;)
Jerfov2
39

Chciałbym tylko dodać, że OpenGL 3.3 i OpenGL ES 2.0 są w większości interoperacyjne, wykorzystując podzbiór funkcji OpenGL 3.3. Mój niestandardowy silnik C ++ używa tych samych wywołań API, z kilkoma definicjami, dla Androida / IOS / Windows / OSX / Linux.

Wśród kluczowych różnic są:

  • brak wsparcia dla Geometry Shader
  • brak miksowania min / max (może to być przedłużenie)
  • brak prymitywów Quad List
  • bardziej ograniczone formaty tekstur (szczególnie dotyczące zmiennoprzecinkowych)
  • Funkcja glGetTexImage jest niedostępna
  • nie ma opcji Transform Feedback, tak samo jak kilka innych zaawansowanych funkcji

Istnieje również wiele innych różnic, ale obejmuje to kilka ważnych.

nullspace
źródło
7
Myślę, że możemy powoli edytować ten post, aby uwzględnić wszystkie brakujące wywołania funkcji. Wersje do porównania powinny nadal mieć wersję 3.3 i ES 2.0, ponieważ zostały wydane w tym samym roku
CoffeDeveloper
8

OpenGL ES oznacza Open Graphics Library for Embedded Systems (OpenGL ES lub GLES) jest podzbiorem interfejsu programowania aplikacji (API) do renderowania grafiki komputerowej OpenGL do renderowania grafiki komputerowej 2D i 3D, takiej jak te używane w grach wideo, zwykle przyspieszane sprzętowo przy użyciu procesor graficzny (GPU). Jest przeznaczony do systemów wbudowanych, takich jak smartfony, tablety komputerowe, konsole do gier wideo i PDA.

Oficjalna strona OpenGL | ES: http://www.opengl.org/

możesz również uzyskać więcej informacji z wiki: http://en.wikipedia.org/wiki/OpenGL_ES

罗 大 柚
źródło
6

Przejrzyj przegląd OpenGL ES tutaj: http://www.khronos.org/opengles/

Krótko mówiąc, ES jest podzbiorem Open GL dla „systemów wbudowanych”. Konkretne różnice będą zależeć od wersji i zestawów funkcji, które porównujesz.

holtavolt
źródło
4

Myślę, że uzyskasz lepszą odpowiedź, jeśli zapytasz „jakie są różnice między OpenGL i OpenGL ES”.

Istnieją głębokie różnice między OpenGL ES 1.1 i ES 2.0, OpenGL 1.5 i 2.0 oraz OpenGL 3.0 i 4.0.

Jak opisali inni, ES został napisany dla systemów wbudowanych. Stanowi również pierwsze „sprzątanie domu” według specyfikacji GL od jej powstania. OpenGL miał a) wiele sposobów na zrobienie tego samego (np. Można narysować kwadrat / prostokąt na dwa różne sposoby, a obraz pikselowy na dwa różne sposoby itp.). ES jest prostszy niż OpenGL i ma mniej funkcji jako ogólne stwierdzenie, ponieważ jest przeznaczony dla mniej wyrafinowanego sprzętu.

Nalegam, abyście nie patrzyli na OpenGL ES 1.1, ponieważ jest to przeszłość i nie reprezentuje sposobu, w jaki OpenGL czy OpenGL ES zmienia się architektonicznie w przyszłości.

user501138
źródło
4

Terminologia i wersje są dość mylące (szczególnie dla początkujących). Aby uzyskać bardziej całościowe spojrzenie na OpenGL i OpenGL-ES (GLES), zobacz OpenGL - wtedy i teraz .

ap-osd
źródło
1
Łącze zawiera również świetny samouczek z przykładami, dobrze wyjaśniony, jak działa potok renderowania OpenGL.
JustWe
Oto link do samouczka.
ap-osd
3

Główna różnica między nimi polega na tym, że OpenGL ES jest przeznaczony dla systemów wbudowanych, takich jak smartfony, podczas gdy OpenGL jest przeznaczony dla komputerów stacjonarnych. Na poziomie kodowania OpenGL ES nie obsługuje funkcji o ustalonych funkcjach, takich jak glBegin / glEnd itp ... OpenGL może obsługiwać potok funkcji o ustalonych funkcjach (przy użyciu profilu zgodności).

Matth
źródło
2

Współczesna odpowiedź, dla ES 3.0 w porównaniu z OpenGL 4.6, różni się znacznie od akceptowanej odpowiedzi. Teraz wszystkie rzeczy związane ze stałym rurociągiem zniknęły.

ES, dla SYSTEMÓW WBUDOWANYCH, jest znacznie mniej wytrzymały.

Steve Wyatt
źródło
1

OpenGL ES to po prostu interfejs API OpenGL dla systemów wbudowanych (OpenGL ES oznacza systemy wbudowane OpenGL). więc jest to podzbiór OpenGL i jest szeroko stosowany w telefonach komórkowych i niektórych systemach VR, jest przeznaczony dla mniej wyrafinowanego sprzętu. OpenGL ES ma mniej terminów i funkcji niż OpenGL, pomyśl o tym jako: bierzesz tylko to, czego potrzebujesz do tego systemu, ponieważ jeśli nie potrzebujemy funkcji w całej naszej pracy lub sprzęt nie może sobie z nią poradzić, więc nie ma sensu dodawać ta funkcja, ale w tym przypadku utrudnia korzystanie z tego interfejsu API ze względu na potrzebę pisania większej liczby shaderów i skomplikowanych kodów, aby uczynić coś prostym, ponieważ OpenGL ES nie dostarcza shaderów w potoku graficznym jako OpenGL. ostatnia wersja OpenGL ES to 3.2, może teraz zapewniać obsługę teselacji dla dodatkowych szczegółów geometrii, nowych shaderów geometrii. więc radzę rozpocząć naukę lub używanie OpenGL ES 3.0+ (jeśli jest to twój język docelowy), ponieważ teraz i następne pokolenie nie będzie używać starych wersji z mocniejszym sprzętem i kartami graficznymi, a jeśli twoim celem jest OpenGL, zacznij od v3. 3+ lub 4.0+. jeśli masz więcej czasu, nie ma problemu, aby szybko przejrzeć stare wersje, aby lepiej zrozumieć, jak zostały opracowane i dlaczego. możesz sprawdzić ten link, aby uzyskać więcej informacji:https://en.wikipedia.org/wiki/OpenGL_ES

Omar Ghannou
źródło
0

Mówiąc prosto, opengl jest wersją dla komputerów stacjonarnych, a opengl es jest przeznaczone dla systemów wbudowanych, takich jak telefony komórkowe, w których istnieją większe ograniczenia dotyczące pamięci i wydajności niż w przypadku komputerów. Opengl es byłyby trudniejsze w użyciu.

pratik_z
źródło
0

OpenGL to API grafiki 2D i 3D, które przenosi tysiące aplikacji na różnorodne platformy komputerowe.

OpenGL ES to dobrze zdefiniowane podzbiory OpenGL dla komputerów stacjonarnych.

OpenGL® ES to wolne od tantiem, międzyplatformowe API dla w pełni funkcjonalnej grafiki 2D i 3D w systemach wbudowanych - w tym na konsolach, telefonach, urządzeniach i pojazdach. Składa się z dobrze zdefiniowanych podzbiorów OpenGL dla komputerów stacjonarnych, ...

Zobacz ten link .

PS

WebGL ma taką samą specyfikację jak OpenGL ES, tzn. Jeśli nauczyłeś się OpenGL na komputery stacjonarne, łatwo jest nauczyć się innych (OpenGL ES, WebGL).

Jafffy
źródło