Qual é a diferença entre OpenGL ES e OpenGL?


Respostas:


13

O OpenGL ES (Sistemas Incorporados) é uma versão simplificada do OpenGL. Existem muitas diferenças entre os dois e, se você quiser entrar em detalhes, poderá ler este documento de especificação 128. Como o ES é um subconjunto do OpenGL, todos os aplicativos de ES funcionam em sistemas que não são do ES, mas não o contrário.

Não há um lugar onde você possa definir facilmente o que está no ES e o que não está. Mesmo uma definição é "OpenGL-ES é como o OpenGL, mas sem muitas coisas. Por exemplo, não há glBegin ou glEnd".


5
O ES não é um subconjunto direto do OpenGL; portanto, sua afirmação de que todos os aplicativos de ES funcionam em sistemas que não são de ES não é verdadeira.
Jari Komppa

5
@JariKomppa - É a partir do OpenGL 4.1.
dman

Um bom resumo das alterações / diferenças seria bom.
bobobobo

19

Infelizmente, nenhuma das respostas até agora é completa e totalmente correta. Realmente, o OpenGL-ES faz duas coisas que o OpenGL não faz:

1) retira e estende as APIs do OpenGL para torná-lo adequado para uma plataforma móvel. Ou seja, primeiro eles eliminam as APIs e os recursos que você realmente não precisa e são onerosos para implementações móveis, como renderizar polígonos ou usar listas de exibição. Em seguida, ele faz algumas extensões criteriosas para torná-lo mais útil para a plataforma móvel. Eu nem me lembro de um exemplo disso, no entanto.

2) fornece a interface para o gerenciador de janelas (e, portanto, o hardware gráfico nativo) da plataforma móvel. Essa parte do OpenGL-ES, conhecida como EGL, é muito parecida com o GLUT na área de trabalho. Exceto que ele não possui nenhum desses métodos de conveniência que não são estritamente necessários para essa interface. Portanto, não há API para desenhar poliedros ou esferas (como no GLUT). Mas há, por exemplo, APIs que correspondem ao init () do GLUT e aos retornos de chamada DisplayFunc () e ReshapeFunc ().


2
O EGL não faz parte do OpenGL ES. É uma coisa separada. Veja as especificações. Não é uma parte necessária de OpenGL ES e quase não é mencionada, exceto para dizer que poderia existir no seu sistema, mas caso contrário, a criação de uma janela etc está fora do escopo do OpenGL ES especificação
gman

7

Existem duas versões do OpenGL ES disponíveis no Android:

  • OpenGL ES 1.x (1.0 ou 1.1): um subconjunto do OpenGL 1.5 sem comandos imediatos
    • sem glBegin / glEnd
    • sem suporte Quad ou Polygon
  • OpenGL ES 2.0: um subconjunto do OpenGL 3.X sem pipeline fixo
    • shaders de vértice
    • shaders de fragmentos
    • sombreadores de geometria não estão disponíveis

Atenção, o OpenGL ES 2.0 não é compatível com o OpenGL ES 1.X!

Quase todos os telefones Android têm GPU OpenGL 1.X e a maioria tem 2.0. O OpenGL ES 2.0 está disponível apenas no Android 2.x ou mais recente.

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.