OpenGL extension vs OpenGL core

1

Stavo dubitando: sto scrivendo un motore cross-platform OpenGL C ++, ho capito che Windows costringe gli sviluppatori ad accedere alle funzionalità di OpenGL oltre la 1.1 attraverso le estensioni.

Ora il fatto è che su Linux so di poter accedere direttamente alle funzioni se la versione lo supporta tramite glext.h e la versione opengl. Il problema è che se su Linux, il core non lo supporta, è possibile che ci siano estensioni che supportano la stessa funzionalità, nel mio caso gli oggetti buffer vertici?

Sto facendo qualcosa del genere:

Windows:

#define glFunction functionpointer_to_the_extension

Linux:
Dato che glext ha già definito glFunction, posso scrivere nel codice client glFunction e compilarlo sia su Windows che Linux senza modificare una singola riga nel mio codice client usando il motore (il mio obiettivo).

Ora il fatto è che ho visto un tutorial utilizzare solo l'estensione su Linux e non controllare la versione di implementazione di opengl. Se la funzionalità è disponibile nel core, è disponibile anche come estensione (VBO, ad es.)? Oppure un'estensione che non sai mai che è disponibile?

Voglio scrivere un motore che sia in grado di utilizzare tutte le funzionalità hardware, quindi ho bisogno di controllare (su Linux) per le estensioni e la versione di base per la possibile implementazione della funzionalità.

    
posta user209347 18.10.2013 - 16:25
fonte

2 risposte

2

I was doubting: I'm writing a cross-platform engine OpenGL C++, I figured out windows forces the developers to access OpenGL features above 1.1 through extensions.

Sembra strano, perché Windows non mi ha mai costretto a usare le estensioni, utilizzo sempre le funzioni di base quando possibile, e mentre dico "quando possibile" intendo se la mia scheda grafica / driver supporta le funzionalità. Perché quello suona la parte più grande.

If the functionality is available in the core, is it also available as extension (VBO's e.g.)?

Non necessariamente! Ma preferisci sempre le funzioni fondamentali quando puoi. Anche se quando si usano estensioni (EXT, ARB, ecc.) Ricordarsi sempre di controllare, se sono disponibili.

Se hai intenzione di rilasciare un programma utilizzando un NV Extension (estensione Nvidia) , assicurati nuovamente di avere qualcosa che controlli se la funzione è disponibile, come se qualcuno con una scheda grafica non Nvidia utilizzasse il tuo programma molto probabilmente andasse in crash.

Or is an extension something you never know is available?

Sì, non si sa mai con certezza se un'estensione è disponibile, dipende da varie cose come.

  • La versione OpenGL che stai utilizzando
  • La tua scheda grafica
  • Versione e modello della scheda grafica (GeForce, Cuda, Radeon, ecc.)
  • Il fornitore della scheda grafica (Nvidia, AMD, ecc.)

Usando le funzioni principali, è probabile che la maggior parte delle persone sia in grado di eseguire il programma, a condizione che la sua scheda grafica possa eseguire la particolare versione GL.

  • Le estensioni EXT di solito sono supportate solo da alcuni fornitori.
  • Le estensioni ARB sono spesso supportate dalla maggioranza ma non necessariamente da tutti i fornitori.
  • Le funzioni principali sono supportate da ogni scheda che supporta la particolare versione GL, che il programma sta utilizzando.

Ricorda

Ricorda sempre che non puoi combinare la corrispondenza e utilizzare GL_TEXTURE1 con glActiveTextureARB e non puoi utilizzare GL_TEXTURE1_EXT con glActiveTexture . Anche se unirli a volte produce il risultato desiderato, non c'è alcuna garanzia.

    
risposta data 23.10.2013 - 23:39
fonte
0

If the functionality is available in the core, is it also available as extension (VBO's e.g.)? Or is an extension something you never know is available?

Innanzitutto, devi verificare se l'hardware supporta l'estensione (digita solo glxinfo nel terminale e otterrai l'elenco delle estensioni supportate).

La seconda cosa è il supporto del driver. Se il driver non lo supporta, non funzionerà.

    
risposta data 18.10.2013 - 17:54
fonte

Leggi altre domande sui tag