OpenGL ES frente a OpenGL

91

¿Cuáles son las diferencias entre OpenGL ES y OpenGL?

kml_ckr
fuente
13
¿Qué versiones de OpenGL y OpenGL ES está comparando?
Firas Assaad
3
Si usa cualquier material GL2, siempre basarlo en GLES2. Hay diferentes formas de hacer las cosas en GL2, pero una forma en GLES2 en su mayor parte. Además, no tendrás problemas para portar cosas de esa manera.
zezba9000
posible duplicado de OpenGL u OpenGL ES
Enamul Hassan
gamedev.stackexchange.com/questions/150/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Respuestas:

54

Dos de las diferencias más significativas entre OpenGL ES y OpenGL son la eliminación de la semántica de llamada glBegin ... glEnd para la representación primitiva (a favor de las matrices de vértices) y la introducción de tipos de datos de punto fijo para coordenadas de vértice y atributos para un mejor soporte las capacidades computacionales de los procesadores integrados, que a menudo carecen de una FPU

Echa un vistazo aquí: OpenGL_ES

kamaci
fuente
19
También se eliminaron de las versiones recientes de OpenGL de escritorio / estación de trabajo.
Ben Voigt
2
Una comparación interesante es entre OGL 3 y GLES 2. En OGL 3, el modo inmediato está en desuso (aunque todavía es compatible). La mayor parte (aunque no todos) de la funcionalidad en OGL 3 está disponible en GLES 2.
espacio nulo
49

OpenGL ES es la API de opengl para sistemas integrados. Es más simple que el opengl normal en términos del número de funciones api, pero puede ser más difícil de usar, ya que tendrá que usar búferes de vértices y escribir más sombreadores.

Cuando usa un opengl normal, puede usar glBegin y glEnd para encerrar las primitivas de geometría que necesita dibujar, pero cuando use Opengl ES, tendrá que usar búferes de vértice. Supongo que esto es por cuestiones de rendimiento.

Actualmente, hay dos versiones de Opengl ES, la versión 1.1 solo admite la canalización de renderización fija, mientras que la versión 2.0 es compatible con el sombreador glsl. Sin embargo, no tiene una canalización de renderizado fija. En otras palabras, tendrás que escribir tu propio sombreador para todo.

Opengl ES se utiliza principalmente en teléfonos móviles y web (webgl). De acuerdo con las especificaciones, su controlador opengl de escritorio puede admitir todas las apis es opengl.

Bill Yan
fuente
3
No es necesario utilizar búferes de vértices, no creo. También puede usar matrices de vértices en modo inmediato. ¿Me equivoco?
Gravity
Sí, no tienes que usar búferes de vértices
Stanislav Ageev
2
"Cuando usa un opengl normal, puede usar glBegin y glEnd para encerrar las primitivas de geometría que necesita dibujar", no si desea que su código sea compatible con versiones posteriores, y tampoco si está usando una Mac, lo cual am;)
Jerfov2
38

Me gustaría agregar que OpenGL 3.3 y OpenGL ES 2.0 son en su mayoría interoperables, mediante el uso de un subconjunto de las características de OpenGL 3.3. Mi motor C ++ personalizado usa las mismas llamadas API, con algunas definiciones, para Android / IOS / Windows / OSX / Linux.

Entre las diferencias clave están:

  • falta de compatibilidad con sombreadores de geometría
  • sin combinación mínima / máxima (puede haber una extensión para esto)
  • sin primitiva Quad List
  • formatos de textura más restringidos (especialmente con respecto al punto flotante)
  • glGetTexImage no está disponible
  • no hay Transform Feedback, lo mismo para varias otras funciones avanzadas

También hay muchas otras diferencias, pero eso cubre varias de las importantes.

espacio nulo
fuente
7
Creo que podemos editar lentamente esta publicación para incluir todas las llamadas a funciones que faltan. Y las versiones para comparar aún deberían ser 3.3 y ES 2.0 ya que se lanzaron el mismo año
CoffeDeveloper
8

OpenGL ES significa Open Graphics Library for Embedded Systems (OpenGL ES o GLES) es un subconjunto de la interfaz de programación de aplicaciones (API) de renderizado de gráficos por computadora OpenGL para renderizar gráficos de computadora en 2D y 3D, como los que usan los videojuegos, generalmente con aceleración de hardware mediante una unidad de procesamiento de gráficos (GPU). Está diseñado para sistemas integrados como teléfonos inteligentes, tabletas de computadora, consolas de videojuegos y PDA.

El sitio web oficial de OpenGL | ES: http://www.opengl.org/

también puede obtener más información en wiki: http://en.wikipedia.org/wiki/OpenGL_ES

罗 大 柚
fuente
6

Revise la descripción general de OpenGL ES aquí: http://www.khronos.org/opengles/

En resumen, ES es un subconjunto de Open GL para "sistemas integrados". Las diferencias específicas dependerán de las versiones y los conjuntos de funciones que esté comparando.

Holtavolt
fuente
4

Creo que obtendrá una mejor respuesta si pregunta "¿Cuáles son las diferencias entre OpenGL y OpenGL ES"?

Existen profundas diferencias entre OpenGL ES 1.1 y ES 2.0, OpenGL 1.5 y 2.0 y OpenGL 3.0 y 4.0.

Como otros han descrito, ES fue escrito para sistemas integrados. También representa la primera "limpieza doméstica" de la especificación GL desde sus inicios. OpenGL tenía a) muchas formas de hacer lo mismo (por ejemplo, se podía dibujar un quad / rect de dos formas diferentes y hacer una imagen de píxel de dos formas diferentes, etc.). ES es más simple que OpenGL con menos funciones como declaración general porque está diseñado para hardware menos sofisticado.

Le insto a que no mire OpenGL ES 1.1 ya que es el pasado y no representa la forma en que OpenGL u OpenGL ES se está moviendo arquitectónicamente en el futuro.

user501138
fuente
4

La terminología y las versiones son bastante confusas (especialmente para los novatos). Para obtener una visión más holística de OpenGL y OpenGL-ES (GLES), consulte OpenGL - Entonces y ahora .

ap-osd
fuente
1
El enlace también contiene un gran tutorial con ejemplos, bien explicado cómo funciona la canalización de rending de OpenGL.
JustWe
Aquí está el enlace del tutorial.
ap-osd
3

La principal diferencia entre los dos es que OpenGL ES está diseñado para sistemas integrados como teléfonos inteligentes, mientras que OpenGL es el de computadoras de escritorio. En el nivel de codificación, OpenGL ES no admite funciones de función fija como glBegin / glEnd, etc. OpenGL puede admitir canalización de función fija (usando un perfil de compatibilidad).

Matth
fuente
2

La respuesta moderna, para ES 3.0 en comparación con OpenGL 4.6, es muy diferente a la respuesta aceptada. Ahora, todas las cosas de la tubería fija se han ido.

ES, para SISTEMAS EMPOTRADOS, es mucho menos robusto.

Steve Wyatt
fuente
1

OpenGL ES es simplemente la API de OpenGL para sistemas integrados (OpenGL ES se refiere a OpenGL Embedded Systems). por lo que es un subconjunto de OpenGL y se usa ampliamente en teléfonos celulares y algunos sistemas de realidad virtual. Está diseñado para hardware menos sofisticado. OpenGL ES tiene menos términos y funciones que OpenGL, piense en ello como: usted toma justo lo que necesita para ese sistema porque si no necesitamos una función en todo nuestro trabajo o el hardware no puede manejarlo, entonces no es necesario agregar esa función, pero en esto hace que el uso de esta API sea más difícil debido a la necesidad de escribir más Shaders y códigos complicados para hacer algo simple porque OpenGL ES no proporciona Shaders en la tubería de gráficos como OpenGL. la última versión de OpenGL ES es 3.2, ahora puede proporcionar soporte Tessellation para detalles geométricos adicionales, nuevos sombreadores geométricos. así que le aconsejo que comience a aprender o usar OpenGL ES 3.0+ (en caso de que sea su idioma de destino) porque ahora y la próxima generación no usará las versiones anteriores con hardware y tarjetas gráficas más potentes y si su objetivo es OpenGL, comience con v3. 3+ o 4.0+. si tiene más tiempo, no hay problema para hacer una vista rápida de las versiones antiguas para comprender mejor cómo se desarrollaron las cosas y por qué. puede consultar este enlace para obtener más detalles:https://en.wikipedia.org/wiki/OpenGL_ES

Omar Ghannou
fuente
0

simplemente diciendo, opengl es la versión de escritorio y opengl es es para sistemas embebidos como teléfonos móviles donde hay más limitaciones de memoria y rendimiento que las de las computadoras. Opengl es más difícil de usar.

pratik_z
fuente
0

OpenGL es una API de gráficos 2D y 3D que ofrece miles de aplicaciones a una amplia variedad de plataformas informáticas.

OpenGL ES es un subconjunto bien definido de OpenGL de escritorio.

OpenGL® ES es una API multiplataforma libre de regalías para gráficos 2D y 3D con todas las funciones en sistemas integrados, incluidas consolas, teléfonos, electrodomésticos y vehículos. Consiste en subconjuntos bien definidos de OpenGL de escritorio, ...

Vea este enlace .

PD

WebGL comparte la especificación con OpenGL ES, es decir, si ha aprendido OpenGL de escritorio, es sencillo aprender los demás (OpenGL ES, WebGL).

Jafffy
fuente