Quali alternative esistono a GLUT?


12

Sto cercando di imparare OpenGL e ho appena scoperto che GLUT è obsoleto . Conosco già SDL e sembra che sia una buona alternativa. Dovrei usare SDL per sviluppare giochi con OpenGL o ci sono alternative migliori. Sono nuovo nello sviluppo di giochi, quindi non so molto sullo stato dell'arte.

Risposte:


27

Ho appena scoperto che GLUT è obsoleto.

Questo è ciò che accade quando accetti la prima risposta che incontri; ottieni cattive informazioni. GLUT 3.7 non dovrebbe essere usato, ma FreeGLUT è completamente retrocompatibile con esso.

Tuttavia, la tua domanda va altrove. Per realizzare un gioco reale, GLUT of * form è inappropriato. Non ti dà il controllo del ciclo principale e ne hai davvero bisogno in un gioco (FreeGLUT ha un modo per controllare il ciclo principale, ma è comunque strano). GLUT è per la scrittura di demo grafiche. È molto importante quando si testano nuovi effetti grafici, quindi dovrebbe essere presente nella casella degli strumenti quando necessario. Ma il tuo codice di gioco principale non dovrebbe mai usarlo.

GLFW è un'alternativa leggera incentrata sul gioco a GLUT. Fornisce supporto di base per cose oltre alla creazione di una finestra OpenGL. Ti consente di ottenere input, caricare immagini come trame e un paio di altre cose.

SDL , SFML e Allegro 5 sono tutti toolkit multimediali. Possono creare finestre OpenGL, ma fanno molto di più. Forniscono pieno supporto per input, audio e varie altre cose di cui hai bisogno per creare un gioco. Se stai realizzando un gioco, uno di questi è un buon punto di partenza. Personalmente mi piace Allegro 5, ma questo è solo il mio orientamento verso una buona documentazione e un'API pulita.


1
Cosa usano i titoli AAA (sia solo per PC che multipiattaforma)? Usano questi (GLFW, Allegro) che hai citato per gestire la finestra aperta? o scrivono il loro "tutto" da zero?
Quazi Irfan,

@iamcreasy: i "titoli AAA" (odio davvero quel termine) non usano nessuno di questi. In generale, non usano nulla di open source. Potrebbero, ma se useranno una libreria, preferirebbero di gran lunga usare una libreria supportata. Ci sono alcune eccezioni come ODL o Bullet. Ma quelle sono eccezioni piuttosto che la regola.
Nicol Bolas,

Da quando GLFW "carica le immagini come texture"? Sicuramente non è nell'elenco delle caratteristiche; né alcuna funzione che serve da remoto a tale scopo nella mia intestazione glfw.
Deceleratedcaviar

1
L'altro grande svantaggio di GLUT è che il suo modello di input non è particolarmente adatto ai giochi; non c'è modo di ottenere codici chiave grezzi o di ottenere eventi di stampa / rilascio sui tasti modificatori stessi (ad esempio utilizzando ctrl come pulsante di attivazione), né esiste un modo per ottenere il contesto GL sottostante (che è necessario per abilitare vsync su X11, per esempio).
soffice

1
@NicolBolas ah, ho dimenticato la 2.7, loro [discussioni, immagini] sono state dichiarate "fuori contesto" per la versione GLFW 3.0.
Deceleratedciariar


2

Se il tuo obiettivo è sviluppare un gioco,

Dipende se vuoi che il tuo gioco sia multipiattaforma o meno. Per i giochi portatili (Windows, Mac, Linux) SDL sembra essere l'unica scelta.

Se scegli come target solo Windows e / o XBox, ci sono alternative molto migliori, ad esempio XNA che ti libera dalla scrittura manuale di molto codice.

Se il tuo obiettivo è imparare OpenGL,

Programmate semplicemente in OpenGL non elaborato, ma preparatevi ad affrontare molti concetti non intuitivi, matematica e manuali enormi.


Come ha detto Takumi, c'è anche SFML come libreria portatile. Meglio di SDL imho (è più aggiornato)
kaoD

8
-1: "Per i giochi portatili (Windows, Mac, Linux) SDL sembra essere l'unica scelta." Questo non è neanche lontanamente vero. SFML e Allegro 5 esistono entrambi come alternative perfettamente valide ed entrambi hanno basi di piattaforma più ampie.
Nicol Bolas,

1

GLUT è un'API e una libreria. La biblioteca originale è davvero obsoleta. L'API è una cosa diversa, è stato abbastanza buono per iniziare, ha solo bisogno di revisioni per superare i limiti e rispondere alle nuove esigenze. L'implementazione corrente principale è FreeGLUT, che è supportata e non obsoleta. Ciò significa che una buona alternativa a GLUT (come nella libreria GLUT) è GLUT (come in FreeGLUT).

Il problema notato sopra con "controllo del loop principale" non è corretto. Con le versioni GLUT più recenti puoi avere un migliore controllo del tuo loop di gioco (se questo è importante per te). La limitazione è stata risolta da glutMainLoopEvent (). Questa e altre limitazioni sono affrontate qui:

http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit


" Con le versioni GLUT più recenti puoi avere un migliore controllo del tuo ciclo di gioco (se questo è importante per te). " È un gioco, quindi , è importante per te. Inoltre, glutMainLoopEventnon è certo un buon modo per gestire il ciclo principale. Utilizza ancora un modello basato sugli eventi per fornire dati, anziché un modello di polling in cui si ottengono i dati desiderati quando lo si desidera.
Nicol Bolas,

Devo sostenere che il modello guidato dagli eventi è più efficiente del polling, a meno che non si stia eseguendo il polling nei dati archiviati dagli eventi (il che va bene). Le risorse del sistema di polling devono essere eseguite con attenzione.
Ingemar Ragnemalm,

0

Qt supporta OpenGL. Dai un'occhiata a Open Inventor e considera se ha senso passare direttamente a un'API 3D di livello superiore.

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.