OpenGL ES versus OpenGL


91

Quais são as diferenças entre OpenGL ES e OpenGL?


13
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.
— zezba9000

possível duplicata de OpenGL ou OpenGL ES
— Enamul Hassan

Respostas:


54

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

Dê uma olhada aqui: OpenGL_ES


19
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.


3
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.


7
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.

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


6

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.



4

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.


4

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 .


1
O link também contém um ótimo tutorial com exemplos, bem explicado como funciona o pipeline de processamento OpenGL.
— JustWe

Aqui está o link para o tutorial.
— ap-osd

3

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).


2

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.


1

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


0

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.


0

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, ...

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).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.