¿Cuáles son las diferencias entre OpenGL ES y OpenGL?
¿Cuáles son las diferencias entre OpenGL ES y OpenGL?
Respuestas:
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
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.
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.
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
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.
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.
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
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).