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.
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
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.
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.
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.
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.
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 .
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).
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.
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
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.
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, ...
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).
Odpowiedzi:
Zajrzyj tutaj: OpenGL_ES
źródło
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.
źródło
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ą:
Istnieje również wiele innych różnic, ale obejmuje to kilka ważnych.
źródło
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
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.
źródło
Rejestr OpenGL ES zawiera szczegółowe różnice API między OpenGL ES a odpowiadającą mu wersją OpenGL:
Jednak nie ma dokumentu zawierającego różnice w OpenGL ES 3.0.
źródło
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.
źródło
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 .
źródło
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).
źródło
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.
źródło
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
źródło
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.
źródło
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.
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).
źródło