OpenGL ES contro OpenGL


91

Quali sono le differenze tra OpenGL ES e OpenGL?


13
Quali versioni di OpenGL e OpenGL ES stai confrontando?
Firas Assaad

3
Se usi roba GL2, basala sempre su GLES2. Ci sono diversi modi per fare le cose in GL2, ma un modo in GLES2 per la maggior parte. Inoltre non incorrerai in problemi nel portare cose in questo modo.
zezba9000

possibile duplicato di OpenGL o OpenGL ES
Enamul Hassan

Risposte:


54

Due delle differenze più significative tra OpenGL ES e OpenGL sono la rimozione della semantica di chiamata glBegin ... glEnd per il rendering primitivo (a favore degli array di vertici) e l'introduzione di tipi di dati a virgola fissa per le coordinate e gli attributi dei vertici per supportare meglio le capacità di calcolo dei processori incorporati, che spesso mancano di una FPU

Dai un'occhiata qui: OpenGL_ES


19
Quelli sono stati rimossi anche dalle versioni recenti di desktop / workstation OpenGL.
Ben Voigt

2
Un confronto interessante è tra OGL 3 e GLES 2. In OGL 3 la modalità immediata è deprecata (sebbene ancora supportata). Molte (anche se non tutte) le funzionalità di OGL 3 sono disponibili in GLES 2.
nullspace

49

OpenGL ES è l'API opengl per i sistemi embedded. È più semplice del normale opengl in termini di numero di funzioni API, ma potrebbe essere più difficile da usare, poiché dovrai usare i buffer dei vertici e scrivere più shader.

Quando usi un normale opengl, puoi usare glBegin e glEnd per racchiudere le primitive di geometria che devi disegnare, ma quando usi Opengl ES, dovrai usare i buffer dei vertici. Immagino che questo sia per problemi di prestazioni.

Attualmente, ci sono due versioni di Opengl ES, la versione 1.1 può supportare solo la pipeline di rendering fissa, mentre la versione 2.0 supporta glsl shader. Tuttavia non ha una pipeline di rendering fissa. In altre parole, dovrai scrivere il tuo shader per tutto.

Opengl ES è utilizzato principalmente su telefoni cellulari e web (webgl). Secondo le specifiche, il tuo driver opengl desktop può supportare tutte le API opengl.


3
Non devi usare i buffer dei vertici, non credo. È inoltre possibile utilizzare array di vertici in modalità immediata. Ho sbagliato?
Gravity

Sì, non è necessario utilizzare i buffer dei vertici
Stanislav Ageev

2
"Quando usi un normale opengl, puoi usare glBegin e glEnd per racchiudere le primitive di geometria che devi disegnare", non se vuoi che il tuo codice sia compatibile con le versioni successive, e nemmeno se stai usando un Mac, che io am;)
Jerfov2

38

Proprio come aggiungere che OpenGL 3.3 e OpenGL ES 2.0 sono per lo più interoperabili, utilizzando un sottoinsieme delle funzionalità di OpenGL 3.3. Il mio motore C ++ personalizzato utilizza le stesse chiamate API, con poche definizioni, per Android / IOS / Windows / OSX / Linux.

Tra le differenze principali ci sono:

  • mancanza di supporto per shader di geometria
  • nessuna fusione min / max (potrebbe esserci un'estensione per questo)
  • nessuna primitiva Quad List
  • formati di texture più ristretti (soprattutto per quanto riguarda il virgola mobile)
  • glGetTexImage non è disponibile
  • non c'è feedback sulla trasformazione, lo stesso per molte altre funzionalità avanzate

Ci sono anche molte altre differenze, ma questo copre molte di quelle importanti.


7
Penso che possiamo modificare lentamente questo post per includere tutte le chiamate di funzione mancanti. E le versioni da confrontare dovrebbero essere ancora 3.3 e ES 2.0 da quando sono state rilasciate nello stesso anno
CoffeDeveloper

8

OpenGL ES significa Open Graphics Library for Embedded Systems (OpenGL ES o GLES) è un sottoinsieme dell'interfaccia di programmazione dell'applicazione (API) per il rendering di grafica per computer OpenGL per il rendering di grafica computerizzata 2D e 3D come quelle utilizzate dai videogiochi, tipicamente con accelerazione hardware utilizzando un'unità di elaborazione grafica (GPU). È progettato per sistemi embedded come smartphone, tablet per computer, console per videogiochi e PDA.

Il sito web ufficiale di OpenGL | ES: http://www.opengl.org/

puoi anche ottenere maggiori informazioni dal wiki: http://en.wikipedia.org/wiki/OpenGL_ES


6

Consulta la panoramica di OpenGL ES qui: http://www.khronos.org/opengles/

In breve, ES è un sottoinsieme di Open GL per "sistemi embedded". Le differenze specifiche dipenderanno dalle versioni e dai set di funzionalità che stai confrontando.



4

Penso che otterrai una risposta migliore se chiedi "quali sono le differenze tra OpenGL e OpenGL ES".

Esistono profonde differenze tra OpenGL ES 1.1 ed ES 2.0, OpenGL 1.5 e 2.0 e OpenGL 3.0 e 4.0.

Come altri hanno descritto, ES è stato scritto per sistemi embedded. Rappresenta anche la prima "pulizia della casa" della specifica GL sin dal suo inizio. OpenGL aveva a) molti modi per fare la stessa cosa (es. Potevi disegnare un quad / rect in due modi diversi e blit un'immagine pixel in due modi diversi, ecc.). ES è più semplice di OpenGL con meno funzionalità come affermazione generale perché è progettato per hardware meno sofisticato.

Ti esorto a non guardare OpenGL ES 1.1 in quanto è il passato e non rappresenta il modo in cui OpenGL o OpenGL ES si stanno muovendo architettonicamente in futuro.


4

La terminologia e le versioni sono piuttosto confuse (specialmente per i neofiti). Per una visione più olistica di OpenGL e OpenGL-ES (GLES), vedere OpenGL - Then and Now .


1
Il collegamento contiene anche un ottimo tutorial con esempi, ben spiegato come funziona la pipeline di rendering OpenGL.
JustWe

Ecco il link per il tutorial.
ap-osd

3

La differenza principale tra i due è che OpenGL ES è fatto per sistemi embedded come gli smartphone, mentre OpenGL è quello sui desktop. A livello di codifica, OpenGL ES non supporta funzioni a funzione fissa come glBegin / glEnd ecc ... OpenGL può supportare pipeline a funzione fissa (utilizzando un profilo di compatibilità).


2

La risposta moderna, per ES 3.0 rispetto a OpenGL 4.6, è molto diversa dalla risposta accettata. Ora, tutta la roba della pipeline fissa è sparita.

ES, per EMBEDDED SYSTEMS, è molto meno robusto.


1

OpenGL ES è semplicemente l'API OpenGL per i sistemi embedded (OpenGL ES si riferisce a OpenGL Embedded Systems). quindi è un sottoinsieme di OpenGL e ampiamente utilizzato nei telefoni cellulari e in alcuni sistemi di realtà virtuale è progettato per hardware meno sofisticato. OpenGL ES ha meno termini e funzioni di OpenGL, pensalo come: prendi solo ciò di cui hai bisogno per quel sistema perché se non abbiamo bisogno di una funzione in tutto il nostro lavoro o l'hardware non può gestirla, quindi non significa aggiungere quella funzione ma in questo rende l'uso di questa API più difficile a causa della necessità di scrivere più Shader e codici complicati per fare qualcosa di semplice perché OpenGL ES non fornisce Shader nella pipeline grafica come OpenGL. l'ultima versione di OpenGL ES è la 3.2 e ora può fornire supporto per la tassellatura per dettagli geometrici aggiuntivi, nuovi shader geometrici. quindi ti consiglio di iniziare ad imparare o utilizzare OpenGL ES 3.0+ (nel caso sia la tua lingua di destinazione) perché ora e la prossima generazione non utilizzerà le vecchie versioni con hardware e schede grafiche più potenti e se il tuo obiettivo è OpenGL inizia con v3. 3+ o 4.0+. se hai più tempo nessun problema per fare una rapida occhiata alle vecchie versioni per capire meglio come si sono sviluppate le cose e perché. puoi controllare questo link per maggiori dettagli:https://en.wikipedia.org/wiki/OpenGL_ES


0

semplicemente dicendo, opengl è la versione desktop e opengl es è per sistemi embedded come i cellulari dove ci sono limiti di memoria e prestazioni più di quelli dei computer. le aperture sarebbero più difficili da usare.


0

OpenGL è un'API grafica 2D e 3D che porta migliaia di applicazioni su un'ampia varietà di piattaforme di computer.

OpenGL ES è un sottoinsieme ben definito di OpenGL desktop.

OpenGL® ES è un'API multipiattaforma esente da royalty per grafica 2D e 3D con funzionalità complete su sistemi embedded, inclusi console, telefoni, elettrodomestici e veicoli. Consiste di sottoinsiemi ben definiti di OpenGL desktop, ...

Vedi questo collegamento .

PS

WebGL condivide le specifiche con OpenGL ES, cioè se hai imparato OpenGL desktop, è semplice imparare gli altri (OpenGL ES, WebGL).

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.