OpenGL ES versus OpenGL

91

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

kml_ckr
fonte
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
gamedev.stackexchange.com/questions/150/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

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

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

Bill Yan
fonte
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.

Espaço nulo
fonte
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

罗 大 柚
fonte
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.

Holtavolt
fonte
5

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.

contorcer-se
fonte
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.

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

ap-osd
fonte
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).

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

Steve Wyatt
fonte
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

Omar Ghannou
fonte
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.

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

Jafffy
fonte