¿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.
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
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.
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.
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.
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.
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.
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 .
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).
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.
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
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.
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, ...
Respuestas:
Echa un vistazo aquí: OpenGL_ES
fuente
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.
fuente
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:
También hay muchas otras diferencias, pero eso cubre varias de las importantes.
fuente
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
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.
fuente
El registro de OpenGL ES contiene diferencias API detalladas entre OpenGL ES y la versión correspondiente de OpenGL:
Sin embargo, no hay un documento que contenga las diferencias para OpenGL ES 3.0.
fuente
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.
fuente
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 .
fuente
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).
fuente
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.
fuente
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
fuente
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.
fuente
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.
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).
fuente