Quais versões OpenGL e OpenGL ES você está comparando?
Firas Assaad
3
Se você usar qualquer coisa do GL2, sempre baseie-o no GLES2. Existem diferentes maneiras de fazer as coisas no GL2, mas uma maneira no GLES2 para a maior parte. Além disso, você não terá problemas para portar coisas dessa maneira.
Duas das diferenças mais significativas entre OpenGL ES e OpenGL são a remoção da semântica de chamada glBegin ... glEnd para renderização primitiva (em favor de matrizes de vértice) e a introdução de tipos de dados de ponto fixo para coordenadas e atributos de vértice para melhor suporte as habilidades computacionais dos processadores embarcados, que muitas vezes não possuem FPU
Eles também foram removidos das versões recentes do OpenGL para desktop / estação de trabalho.
Ben Voigt
2
Uma comparação interessante é entre OGL 3 e GLES 2. No OGL 3, o modo imediato está obsoleto (embora ainda seja compatível). Grande parte (embora não todas) da funcionalidade no OGL 3 está disponível no GLES 2.
nullspace
49
OpenGL ES é o opengl api para sistemas embarcados. É mais simples do que o opengl normal em termos de número de funções API, mas pode ser mais difícil de usar, pois você terá que usar buffers de vértice e escrever mais sombreadores.
Quando você usa um opengl normal, você pode usar glBegin e glEnd para incluir as primitivas de geometria que você precisa desenhar, mas ao usar Opengl ES, você terá que usar buffers de vértice. Eu acho que isso é para questões de desempenho.
Atualmente, existem duas versões do Opengl ES, a versão 1.1 só pode suportar o pipeline de renderização fixa, enquanto a versão 2.0 suporta o glsl shader. No entanto, não possui pipeline de renderização fixo. Em outras palavras, você terá que escrever seu próprio shader para tudo.
Opengl ES é usado principalmente em telefones celulares e web (webgl). De acordo com as especificações, o driver opengl do seu desktop pode suportar todas as apis opengl es.
Você não precisa usar buffers de vértice, eu não acho. Você também pode usar matrizes de vértice de modo imediato. Estou errado?
Gravidade de
Sim, você não precisa usar buffers de vértice
Stanislav Ageev 01 de
2
"Quando você usa um opengl normal, você pode usar glBegin e glEnd para incluir as primitivas de geometria que você precisa desenhar", não se você quiser que seu código seja compatível com versões futuras, e também não se estiver usando um Mac, o que eu am;)
Jerfov2
38
Apenas gostaria de acrescentar que o OpenGL 3.3 e o OpenGL ES 2.0 são principalmente interoperáveis, usando um subconjunto dos recursos do OpenGL 3.3. Meu mecanismo C ++ personalizado usa as mesmas chamadas de API, com algumas definições, para Android / IOS / Windows / OSX / Linux.
Entre as principais diferenças estão:
falta de suporte para shader de geometria
sem mistura mín. / máx. (pode haver uma extensão para isso)
nenhum primitivo de lista quádrupla
formatos de textura mais restritos (especialmente em relação ao ponto flutuante)
glGetTexImage não está disponível
não há Transform Feedback, o mesmo para vários outros recursos avançados
Existem também muitas outras diferenças, mas isso cobre várias das mais importantes.
Acho que podemos editar lentamente este post para incluir todas as chamadas de função ausentes. E as versões para comparar ainda devem ser 3.3 e ES 2.0, já que foram lançadas no mesmo ano
CoffeDeveloper
8
OpenGL ES significa Open Graphics Library for Embedded Systems (OpenGL ES ou GLES) é um subconjunto da interface de programação de aplicativo (API) de renderização de gráficos de computador OpenGL para renderizar gráficos de computador 2D e 3D, como aqueles usados por videogames, normalmente acelerados por hardware usando uma unidade de processamento gráfico (GPU). Ele é projetado para sistemas embarcados como smartphones, tablets, consoles de videogame e PDAs.
Resumindo, ES é um subconjunto do Open GL para "sistemas embarcados". Diferenças específicas dependerão das versões e conjuntos de recursos que você está comparando.
Acho que você obterá uma resposta melhor se perguntar "quais são as diferenças entre OpenGL e OpenGL ES".
Existem profundas diferenças entre OpenGL ES 1.1 e ES 2.0, OpenGL 1.5 e 2.0 e OpenGL 3.0 e 4.0.
Como outros descreveram, ES foi escrito para sistemas embarcados. Ele também representa a primeira "limpeza doméstica" da especificação GL desde seu início. OpenGL tinha a) muitas maneiras de fazer a mesma coisa (por exemplo, você poderia desenhar um quadrilátero / retângulo de duas maneiras diferentes e blit uma imagem de pixel de duas maneiras diferentes, etc.) ES é mais simples do que OpenGL com menos recursos como uma declaração geral porque foi projetado para hardware menos sofisticado.
Recomendo que você não olhe para o OpenGL ES 1.1, pois é o passado e não representa a maneira como o OpenGL ou OpenGL ES está se movendo arquitetonicamente no futuro.
A terminologia e as versões são bastante confusas (especialmente para iniciantes). Para uma visão mais holística do OpenGL e OpenGL-ES (GLES), consulte OpenGL - Antes e Agora .
A principal diferença entre os dois é que o OpenGL ES é feito para sistemas embarcados como smartphones, enquanto o OpenGL é para desktops. No nível de codificação, OpenGL ES não suporta funções de função fixa como glBegin / glEnd etc ... OpenGL pode suportar pipeline de função fixa (usando um perfil de compatibilidade).
OpenGL ES é simplesmente a API OpenGL para sistemas embarcados (OpenGL ES refere-se a OpenGL Embedded Systems). portanto, é um subconjunto do OpenGL e amplamente utilizado em telefones celulares e alguns sistemas VR, sendo projetado para hardware menos sofisticado. OpenGL ES tem menos termos e funções do que OpenGL, pense nisso como: você pega exatamente o que precisa para aquele sistema porque se não precisarmos de uma função em todo o nosso trabalho ou o hardware não puder lidar com isso, então não há como adicionar essa função, mas torna o uso desta API mais difícil devido à necessidade de escrever mais Shaders e códigos complicados para tornar algo simples, porque o OpenGL ES não fornece Shaders no pipeline gráfico como OpenGL. a última versão do OpenGL ES é 3.2 e agora pode fornecer suporte a Tessellation para detalhes adicionais de geometria, novos sombreadores de geometria. então aconselho você a começar a aprender ou usar OpenGL ES 3.0+ (caso seja seu idioma de destino) porque agora e a próxima geração não usará as versões antigas com hardware e placas gráficas mais potentes e se seu destino for OpenGL, comece com v3. 3+ ou 4.0+. se tiver mais tempo sem problemas para fazer uma rápida visualização das versões antigas para mais entenda como as coisas foram desenvolvidas e por quê. você pode verificar este link para mais detalhes:https://en.wikipedia.org/wiki/OpenGL_ES
simplesmente dizendo, opengl é a versão desktop e opengl es é para sistemas embarcados como telefones celulares, onde há restrições de memória e desempenho mais do que os de computadores. opengl es seriam mais difíceis de usar.
OpenGL é uma API gráfica 2D e 3D que traz milhares de aplicativos para uma ampla variedade de plataformas de computador.
OpenGL ES são subconjuntos bem definidos de OpenGL para desktop.
OpenGL® ES é uma API de plataforma cruzada isenta de royalties para gráficos 2D e 3D de função completa em sistemas incorporados - incluindo consoles, telefones, aparelhos e veículos. Consiste em subconjuntos bem definidos de OpenGL para desktop, ...
O WebGL compartilha as especificações com o OpenGL ES, ou seja, se você aprendeu o OpenGL para desktop, é simples aprender os outros (OpenGL ES, WebGL).
Respostas:
Dê uma olhada aqui: OpenGL_ES
fonte
OpenGL ES é o opengl api para sistemas embarcados. É mais simples do que o opengl normal em termos de número de funções API, mas pode ser mais difícil de usar, pois você terá que usar buffers de vértice e escrever mais sombreadores.
Quando você usa um opengl normal, você pode usar glBegin e glEnd para incluir as primitivas de geometria que você precisa desenhar, mas ao usar Opengl ES, você terá que usar buffers de vértice. Eu acho que isso é para questões de desempenho.
Atualmente, existem duas versões do Opengl ES, a versão 1.1 só pode suportar o pipeline de renderização fixa, enquanto a versão 2.0 suporta o glsl shader. No entanto, não possui pipeline de renderização fixo. Em outras palavras, você terá que escrever seu próprio shader para tudo.
Opengl ES é usado principalmente em telefones celulares e web (webgl). De acordo com as especificações, o driver opengl do seu desktop pode suportar todas as apis opengl es.
fonte
Apenas gostaria de acrescentar que o OpenGL 3.3 e o OpenGL ES 2.0 são principalmente interoperáveis, usando um subconjunto dos recursos do OpenGL 3.3. Meu mecanismo C ++ personalizado usa as mesmas chamadas de API, com algumas definições, para Android / IOS / Windows / OSX / Linux.
Entre as principais diferenças estão:
Existem também muitas outras diferenças, mas isso cobre várias das mais importantes.
fonte
OpenGL ES significa Open Graphics Library for Embedded Systems (OpenGL ES ou GLES) é um subconjunto da interface de programação de aplicativo (API) de renderização de gráficos de computador OpenGL para renderizar gráficos de computador 2D e 3D, como aqueles usados por videogames, normalmente acelerados por hardware usando uma unidade de processamento gráfico (GPU). Ele é projetado para sistemas embarcados como smartphones, tablets, consoles de videogame e PDAs.
Site oficial do OpenGL | ES: http://www.opengl.org/
você também pode obter mais informações no wiki: http://en.wikipedia.org/wiki/OpenGL_ES
fonte
Revise a visão geral do OpenGL ES aqui: http://www.khronos.org/opengles/
Resumindo, ES é um subconjunto do Open GL para "sistemas embarcados". Diferenças específicas dependerão das versões e conjuntos de recursos que você está comparando.
fonte
O registro do OpenGL ES contém diferenças de API detalhadas entre o OpenGL ES e a versão correspondente do OpenGL:
No entanto, não existe um documento contendo as diferenças para OpenGL ES 3.0.
fonte
Acho que você obterá uma resposta melhor se perguntar "quais são as diferenças entre OpenGL e OpenGL ES".
Existem profundas diferenças entre OpenGL ES 1.1 e ES 2.0, OpenGL 1.5 e 2.0 e OpenGL 3.0 e 4.0.
Como outros descreveram, ES foi escrito para sistemas embarcados. Ele também representa a primeira "limpeza doméstica" da especificação GL desde seu início. OpenGL tinha a) muitas maneiras de fazer a mesma coisa (por exemplo, você poderia desenhar um quadrilátero / retângulo de duas maneiras diferentes e blit uma imagem de pixel de duas maneiras diferentes, etc.) ES é mais simples do que OpenGL com menos recursos como uma declaração geral porque foi projetado para hardware menos sofisticado.
Recomendo que você não olhe para o OpenGL ES 1.1, pois é o passado e não representa a maneira como o OpenGL ou OpenGL ES está se movendo arquitetonicamente no futuro.
fonte
A terminologia e as versões são bastante confusas (especialmente para iniciantes). Para uma visão mais holística do OpenGL e OpenGL-ES (GLES), consulte OpenGL - Antes e Agora .
fonte
A principal diferença entre os dois é que o OpenGL ES é feito para sistemas embarcados como smartphones, enquanto o OpenGL é para desktops. No nível de codificação, OpenGL ES não suporta funções de função fixa como glBegin / glEnd etc ... OpenGL pode suportar pipeline de função fixa (usando um perfil de compatibilidade).
fonte
A resposta moderna, para ES 3.0 em comparação com OpenGL 4.6, é muito diferente da resposta aceita. Agora, todo o material de pipeline fixo se foi.
ES, para EMBEDDED SYSTEMS, é muito menos robusto.
fonte
OpenGL ES é simplesmente a API OpenGL para sistemas embarcados (OpenGL ES refere-se a OpenGL Embedded Systems). portanto, é um subconjunto do OpenGL e amplamente utilizado em telefones celulares e alguns sistemas VR, sendo projetado para hardware menos sofisticado. OpenGL ES tem menos termos e funções do que OpenGL, pense nisso como: você pega exatamente o que precisa para aquele sistema porque se não precisarmos de uma função em todo o nosso trabalho ou o hardware não puder lidar com isso, então não há como adicionar essa função, mas torna o uso desta API mais difícil devido à necessidade de escrever mais Shaders e códigos complicados para tornar algo simples, porque o OpenGL ES não fornece Shaders no pipeline gráfico como OpenGL. a última versão do OpenGL ES é 3.2 e agora pode fornecer suporte a Tessellation para detalhes adicionais de geometria, novos sombreadores de geometria. então aconselho você a começar a aprender ou usar OpenGL ES 3.0+ (caso seja seu idioma de destino) porque agora e a próxima geração não usará as versões antigas com hardware e placas gráficas mais potentes e se seu destino for OpenGL, comece com v3. 3+ ou 4.0+. se tiver mais tempo sem problemas para fazer uma rápida visualização das versões antigas para mais entenda como as coisas foram desenvolvidas e por quê. você pode verificar este link para mais detalhes:https://en.wikipedia.org/wiki/OpenGL_ES
fonte
simplesmente dizendo, opengl é a versão desktop e opengl es é para sistemas embarcados como telefones celulares, onde há restrições de memória e desempenho mais do que os de computadores. opengl es seriam mais difíceis de usar.
fonte
OpenGL é uma API gráfica 2D e 3D que traz milhares de aplicativos para uma ampla variedade de plataformas de computador.
OpenGL ES são subconjuntos bem definidos de OpenGL para desktop.
Veja este link .
PS
O WebGL compartilha as especificações com o OpenGL ES, ou seja, se você aprendeu o OpenGL para desktop, é simples aprender os outros (OpenGL ES, WebGL).
fonte