Che cos'è GLFW in relazione a OpenGL

2

Ora questa domanda potrebbe sembrare (/ è) stupida, ma sto solo entrando in OpenGL. Così ho installato il sorgente GLFW e sto osservando alcuni semplici esempi. Quello che sto notando è che il codice contiene ancora funzioni "tipiche" di OpenGL, come glColor o glVertex , ma contiene anche funzioni "glfw" come glfwSetErrorCallback .

Non capisco veramente come OpenGL e GLFW (o qualcosa come GLUT) siano in relazione tra loro. Khronos è proprietario di OpenGL, ma programma una libreria per le persone da utilizzare o specifica solo un'API, ad esempio ci sono diverse librerie C ++ ( libc++ e libstdc++ ) che implementano la stessa API specificata dal consorzio C ++ ?

Prenderò una supposizione e chiederò se è giusto:

Khronos programma la libreria OpenGL e specifica un'API per esso. GLUT, GLFW e freeglut avvolgono (o meglio estendono) la libreria OpenGL e offrono un comportamento aggiuntivo (ho letto che OpenGL non offre molto per il supporto per l'audio o per l'input).

Il che significa che è possibile utilizzare OpenGL da solo, ma renderebbe parecchie cose difficili. Ma significa anche che hai scritto qualcosa con GLFW, potresti "portarlo" su utilizzando, ad es., Freeglut, e dovresti solo sostituire la funzionalità fornita da glfw(...) funzioni, ma il gl(...) woul rimarrà lo stesso. È giusto?

    
posta hgiesel 19.03.2016 - 00:49
fonte

2 risposte

2

Sì. hai ragione

OpenGL è il livello di base ed è un'API.

Ma è un'API difficile (o, potrebbe essere meglio, a basso livello)

Quindi, l'uso di qualsiasi libreria costruita sopra renderà le cose più facili per te.

Naturalmente, ci sono cose che non devono essere rese "migliori" o più facili, quindi usi ancora adesso le chiamate alle funzioni di base o le dichiarazioni di base.

E sì, il passaggio a un'altra libreria non influirà su quelle chiamate di basso livello (o dirette)

    
risposta data 19.03.2016 - 08:29
fonte
4

OpenGL è una libreria che fornisce servizi come il rendering 3D ma non fa nulla di simile alla creazione di una finestra in cui è possibile eseguire il rendering. OpenGL non sa nulla di Windows, eventi del mouse, tastiere, caratteri e così via. Conosce solo il rendering. Dato che probabilmente vuoi rendere le cose visibili sullo schermo non puoi "usare OpenGL da solo" perché non avresti nessun posto dove eseguire il rendering. Infatti, per fare qualsiasi cosa con OpenGL è necessario quello che viene chiamato un contesto OpenGL. La stessa libreria OpenGL non ha alcun meccanismo per creare tali contesti. Pensa ad un contesto OpenGL come ad alcuni dati interni che rappresentano lo stato corrente del sistema OpenGL.

Diverse piattaforme (come Windows, Linux / X, OSX, iOS, Android) forniscono diversi meccanismi per la creazione di contesti. Ad esempio, Windows ha le proprie chiamate di funzione che consentono la creazione di contesti OpenGL molto diversi da come OSX crea un contesto. Inoltre, Windows offre funzioni per supportare cose come gli eventi del mouse. È qui che entra in gioco GLFW: fornisce una libreria multipiattaforma per gestire le cose che OpenGL non gestisce, come creare contesti e gestire eventi del mouse. In linea di massima non è una libreria di wrapper su OpenGL anche se fornisce alcune piccole funzionalità come questa: come la creazione automatica di livelli di mip-map.

    
risposta data 30.03.2017 - 01:05
fonte

Leggi altre domande sui tag