Qual è la differenza tra OpenGL ES e OpenGL?


Risposte:


13

OpenGL ES (Embedded Systems) è una versione ridotta di OpenGL. Ci sono molte differenze tra quei due e se vuoi approfondire i dettagli, puoi leggere questo documento sulle specifiche 128. Ma ES è un sottoinsieme di OpenGL, quindi tutte le app ES funzionano su sistemi non ES ma non il contrario.

Non esiste un posto in cui puoi facilmente definire cosa c'è in ES e cosa no. Anche una definizione è "OpenGL-ES è proprio come OpenGL, ma senza molte cose. Ad esempio, non c'è glBegin o glEnd."


5
ES non è un sottoinsieme diretto di OpenGL, quindi la tua affermazione che tutte le app ES funzionano su sistemi non ES non è vera.
Jari Komppa,

5
@JariKomppa - È a partire da OpenGL 4.1.
DMan,

Un bel riassunto delle modifiche / differenze sarebbe bello.
Bobobobo,

19

Purtroppo, finora nessuna delle risposte è completa e pienamente corretta. In realtà, OpenGL-ES fa due cose che OpenGL non fa:

1) si spoglia e quindi estende le API OpenGL per renderlo adatto a una piattaforma mobile. Cioè, prima eliminano le API e le funzionalità che davvero non ti servono e sono onerose per le implementazioni mobili, come il rendering di poligoni o l'utilizzo di elenchi di visualizzazione. Quindi rende alcune estensioni giudiziose per renderlo più utile per la piattaforma mobile. Non riesco nemmeno a ricordare un esempio di questo, però.

2) fornisce l'interfaccia al gestore delle finestre (e quindi all'hardware grafico nativo) della piattaforma mobile. Questa parte di OpenGL-ES, nota come EGL, è molto simile a GLUT sul desktop. Solo che non ha nessuno di quei metodi di convenienza che non sono strettamente necessari per quella interfaccia. Quindi non esiste un'API per disegnare poliedri o sfere (come in GLUT). Ma ci sono, ad esempio, API che corrispondono a init () di GLUT e callback DisplayFunc () e ReshapeFunc ().


2
EGL non fa parte di OpenGL ES. È una cosa separata. Vedi le specifiche Non è una parte richiesta di OpenGL ES e viene menzionato a malapena se non per dire che potrebbe esistere sul tuo sistema, ma altrimenti l'impostazione di una finestra ecc. È al di fuori dell'ambito delle specifiche OpenGL ES
gman

7

Esistono due versioni di OpenGL ES disponibili su Android:

  • OpenGL ES 1.x (1.0 o 1.1): un sottoinsieme di OpenGL 1.5 senza comandi immediati
    • no glBegin / glEnd
    • nessun supporto Quad o Polygon
  • OpenGL ES 2.0: un sottoinsieme di OpenGL 3.X senza pipeline fissa
    • shader di vertici
    • shader di frammenti
    • gli shader della geometria non sono disponibili

Attenzione, OpenGL ES 2.0 non è compatibile con OpenGL ES 1.X!

Quasi tutti i telefoni Android hanno GPU OpenGL 1.X e la maggior parte ha 2.0. OpenGL ES 2.0 è disponibile solo con Android 2.xo versioni successive.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.