Per iniziare con 2d Game Dev (C ++): DirectX o OpenGL? [chiuso]


12

Quindi, sono uno studente che sta cercando di mettere il piede nello sviluppo del gioco e sto cercando di fare qualcosa di 2D, forse un tetris / invasori dello spazio / qualcosa con un clone di interazione con il mouse.

Ho indicato le mie ricerche in direzione di C ++ e 2d e alla fine sono stato portato a DirectX / OpenGL

Ora, come ho capito, tutti questi pacchetti faranno per me è disegnare cose su uno schermo. E questo è tutto ciò che mi interessa davvero a questo punto. Il suono non è necessario. L'input può essere gestito probabilmente con stdlib.

Quindi, per un principiante che cerca di creare un gioco di base in C ++, consiglieresti DirectX o OpenGL? Perché? Quali sono alcune differenze chiave tra le due caratteristiche? Quale è più utilizzabile?

Risposte:


16

Consiglierei SDL ( http://www.libsdl.org/ ) per il 2D, era il punto in cui ho iniziato con la grafica ed era abbastanza facile da usare, anche se all'epoca conoscevo a malapena C ++.

Questo (mirror) è il set di tutorial che ho iniziato e che ho trovato molto utili (erano un po 'datati anche ~ 4 anni fa quando li ho esaminati, ma non credo che SDL sia cambiato molto e dovrebbero comunque essere pertinenti ).

SDL gestisce anche l'input e SDL_Mixer può eseguire l'audio di base.

Non ho mai lavorato con DirectDraw o OpenGL per roba 2D, quindi non posso commentare lì, ma posso sicuramente consigliare SDL.


1
Ho trovato SDL buono, ma è stato molto difficile ottenere i percorsi e include un'installazione corretta.
Skeith

1
Dai un'occhiata anche a lazyfoo.net/SDL_tutorials per alcuni tutorial decenti (include tutorial di installazione per vari IDE).
BeanBag il

Concordato con @Skeith. Non riesco a immaginare il mal di testa di ottenere la configurazione SDL per la prima volta per i principianti. È abbastanza difficile affrontare alcuni dei problemi di installazione comuni con i dilettanti o anche con i professionisti. Dopo aver ottenuto la configurazione SDL per la prima volta, sono stato in grado di ottenere TUTTA la configurazione per il resto della mia vita, con facilità. Ecco quanti mal di testa mi ha dato; quanta esperienza ho imparato a conoscere più di quanto sia tipico per l'impostazione di una biblioteca. È stato troppo tempo fa per ricordare cosa mi ha dato esattamente il maggior numero di problemi o quali problemi ho avuto, ma tutte le altre librerie erano facili da configurare.
Carter81,

7

Ho usato sia SDL che SFML per i miei progetti di gioco. Ho usato SDL per un gioco finito, un gioco tetris e per lo più ho usato SFML come strato di finestre per esperimenti di shader. Dalla mia esperienza, dovrei dire che SDL è ciò che dice. È un semplice livello di media diretto, che estrae i dati con cui i tuoi media (audio e video) lavorano a un livello in cui puoi interagire con diverse piattaforme. Questo è "tutto".

Per questo motivo, in genere devi mescolarlo con alcune altre librerie, in particolare SDL_mixer, SDL_gfx e SDL_image, che forniscono funzionalità di cui tutti hanno bisogno per creare giochi.

Tutte queste librerie sono anche pensate per il linguaggio di programmazione C e seguono le sue convenzioni. Non che ci sia qualcosa di sbagliato in questo, ma se vuoi un approccio orientato agli oggetti su come interagisci con io, allora fondamentalmente devi costruire tu stesso quel livello.

SFML viene fornito con tutto subito. Ha un suono, ha un video, ha un missaggio, ha un frame-cap ed è orientato agli oggetti. Se è quello che vuoi, ti consiglierei di farlo. SFML ha anche un livello di astrazione per alcune delle funzionalità di base in opengl (in particolare beginShape / EndShape e pixel shader). Non credo che SDL abbia qualcosa del genere, solo un metodo per fondersi con esso.

PS Non per scacciare la conversazione da C / C ++, ma se non stai usando quella lingua per un motivo particolare e ne vuoi una più semplice, c'è sempre pygame. Che è fondamentalmente SDL + per Python.


2
SFML è anche C ++, mentre SDL è C. Questo fa la differenza se vuoi davvero imparare il C ++.
jsimmons,

5

http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263140&reply_id=3598844

Sono d'accordo con queste osservazioni e penso che sia una discussione stellare sul perché DirectX sia migliore di OpenGL.

Quel diario è in risposta a David alla Wolfire.

Spero che serva a bilanciare un po '. ;)

Ma in generale, se si utilizza un framework multipiattaforma e API:

Usa DirectX su Windows e OpenGL su * nix.


Ottima lettura =) Che campo minato questo argomento è ...
Nailer

6
404, pagina non trovata
axel22


Ottengo un 404 sul link archive.gamedev.net / ....
Exilyth,

4

http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX

Sono d'accordo con queste osservazioni e penso che sia una discussione stellare sul perché OpenGL sia migliore di DirectX.

Tuttavia, questa domanda è assolutamente una questione di opinione e DirectX ha assolutamente i suoi vantaggi su OpenGL, in particolare 10 e 11 e soprattutto nel contesto dello sviluppo del gioco.

Inoltre, se dovessi scegliere OpenGL, SDL è una libreria meravigliosa e molto popolare, e ci sono molte risorse per l'apprendimento di OpenGL (NeHe, ecc.) - ma questo è forse il posto per un'altra domanda.


1
Come contrappunto alla discussione OGL vs DX, i ragazzi di Unity hanno deciso esplicitamente di passare a DirectX su Windows poiché i driver OpenGL predefiniti per la maggior parte delle schede video sono così cattivi. Non ho il riferimento di fronte a me, ma subito durante le loro conferenze hanno detto qualcosa sulla falsariga dei driver OGL che sono il loro problema di arresto n. 1 su Windows. Fortunatamente il loro livello di astrazione significa che non ti interessa davvero dal punto di vista degli utenti.
Tetrad,

Realizziamo software di visualizzazione orientati al business sia per unix che per Windows, e posso confermare che la maggior parte dei problemi che vediamo su Windows sono legati al driver OpenGL.
drxzcl,

1

Se hai appena iniziato, probabilmente è meglio usare un motore o un framework 2D esistente come SFML .


1

Mi piace Direct X e lo uso da diversi anni su molti progetti, ma se l'apprendimento fa attenzione ai problemi di versione.

Ho scoperto che la maggior parte del codice x diretto non verrà compilata con una versione diversa e questo può essere un inferno se stai cercando di seguire un tutorial.

Consiglio Direct X in quanto ci sono funzionalità per tutto ciò che semplifica la prima volta e quindi modi più avanzati di manipolare le cose mentre avanzi.


1

Il motore di gioco di Haaf

Non so quanto sia aggiornato (voglio dire che non lo è, ma non credo che ci sia alcun motivo per cui non dovrebbe essere utilizzabile), ma l'ho usato qualche tempo fa (C ++) e davvero piaciuto. HGE non è stato aggiornato dal 05.08, ma di nuovo, ricordo che è abbastanza semplice da imparare e veloce. Inoltre viene fornito con tutti i tipi di strumenti e aiuti come un sistema di particelle.

Ad ogni modo, se quello che vuoi è creare un vero-gioco-, invece di imparare le cose che stanno succedendo "sotto il cofano" nei processi di disegno e simili, consiglierei di usare qualcosa di livello superiore rispetto a openGL o DirectX, o trascorrerai il tuo tempo disegnando cose sullo schermo invece di creare un gioco reale. E vale sicuramente la pena dare un'occhiata a HGE.

http://hge.relishgames.com/


0

Sono nella stessa posizione in cui ti trovi, avendo appena iniziato a lavorare sullo sviluppo del gioco da solo (sulla piattaforma iPhone) alcuni mesi fa. Proveniente da uno sfondo C, in realtà suggerirei di utilizzare un framework (in particolare Cocos2d).

I vantaggi di un framework sono più che possono essere discussi in questo post, ma principalmente gestisce la maggior parte dell'elaborazione a basso livello con OpenGL e fornisce metodi per gestire ciò che è più probabile che richiederai per gli sviluppatori di giochi. Hanno una grande comunità, sono open source, e quindi se hai bisogno di accedere al codice core del framework / modificarne un po 'per adattarlo alle tue esigenze / andare a OpenGL di basso livello se necessario - ti viene comunque data quella scelta.

Puoi seguire la rotta diretta di OpenGL ma a me sembra eccessivo.

Molto probabilmente vorrai anche esaminare diverse librerie di fisica che esistono là fuori - Google Chipmunk e Box2D per ulteriori informazioni.

Saluti!


1
+1 per non meritare di essere a -2. Troppi troll su questo sito web danno negativi senza motivo. Onestamente, non capisco nemmeno perché consentano persino di mostrare qualcosa sotto 0. È idiota come YouTube che consente il downvoting.
Carter81,
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.