Dovrei continuare a studiare OpenGL o semplicemente passare a DirectX per darmi una migliore possibilità di ottenere un lavoro nel settore dei giochi? [chiuso]


29

Sto imparando la programmazione grafica da qualche tempo usando OpenGL e Linux. Conosco abbastanza bene la maggior parte dei concetti, ma vorrei davvero approfondire le mie conoscenze ed eventualmente perseguire una carriera nello sviluppo del gioco, in particolare nello sviluppo del motore di gioco.

Finora mi sembra che la maggior parte degli studi di gioco realizzi giochi per Windows usando DirectX.

Modifica: so che la domanda OpenGL vs DirectX è stata posta qui prima, ma non ho trovato una risposta nella prospettiva che desidero.

Modifica 2: Dopo aver letto tutte le risposte / i commenti, ho deciso di continuare ad approfondire la grafica con OpenGL / GLSL, ma proverò a giocare anche con DX, solo per avere una conoscenza di base dell'API. Vorrei ringraziare tutti per le risposte e le intuizioni che mi hai dato.


Una versione generalizzata di questa domanda potrebbe dare delle buone risposte su programmers.stackexchange.com ...
Macke,

1
Fondamentalmente mi è stato insegnato i punti più fini degli shader DX da un ragazzo OpenGL che non ha mai fatto HLSL. Finché sai che "framment shader" significa "pixel shader", i concetti sono più o meno gli stessi; P
drxzcl,

IIRC, DirectX è stato reso un po 'più simile a OpenGL nella versione 8 o 9. Prima di allora, DirectX era talvolta criticato come inutilmente difficile da usare. Le API sono ancora diverse, ma gli approcci generali dovrebbero essere abbastanza simili. Disclaimer - Neanche io sono un esperto.
Steve314,

@Macke - I consigli sulla carriera sono fuori tema @ Programmatori. Questo è probabilmente troppo specifico, ma le domande generali sulla carriera saranno sull'argomento @ Questioni professionali (attualmente proposto nell'area 51) Per favore, vai e impegnati a sostenere questo SE
Ciad

Le probabilità schiaccianti sono anche se entri nel settore non sarai un programmatore di grafica e non importa minimamente se conosci un'API, l'altra, entrambe o nessuna. Oltre a ciò, dipende dalla società e dal progetto. D3D è molto più comunemente usato nello spazio PC, GL | ES è completamente dominante nello spazio mobile e tutte le console usano API proprietarie che non puoi davvero imparare da solo.
Sean Middleditch,

Risposte:


28

Non importa davvero. I concetti chiave sono gli stessi in entrambi, soprattutto ora che i pixel shader sono la norma. E poiché la maggior parte dei giochi sono multipiattaforma, probabilmente useranno un sottoinsieme di funzionalità simili in entrambe le lingue. Finché puoi scrivere shader in glsl o hlsl, starai bene.

Detto questo, il numero di posizioni di "sviluppo del motore di gioco" è limitato. La maggior parte delle aziende usa qualcosa dallo scaffale. Per quelle posizioni che esistono, anche meno di loro sono entry level. La maggior parte dei programmatori di giochi entry level non scrive alcun codice relativo alla grafica (tranne forse gli shader) perché è stato tutto estratto.


1
Cosa fanno la maggior parte dei programmatori entry level? In studi grandi, medi o piccoli?
Quazi Irfan,

Questa è una domanda separata. gamedev.stackexchange.com/questions/5538/...
Tetrade

1
Solo per aggiungere una risposta più generale, nella mia esperienza i programmatori junior tendono a iniziare nel gameplay, ui, hud e lavorare da lì, il gameplay è un punto di ingresso popolare.
JuniorDeveloper1208,

I menu di integrazione delle risorse e l'interfaccia utente sono ancora più comuni punti di accesso per esperienza.
Coyote,

Ragazzi, non iniziamo un lungo thread su quella particolare domanda nei commenti qui. Queste sono risposte perfettamente valide alla domanda a cui ho collegato.
Tetrado

10

Tutto dipende dal lavoro che desideri / otterrai. Probabilmente pensi a un lavoro nel mercato dei PC in cui DX è il re. Ricorda solo che la maggior parte delle aziende AAA punta al mercato delle console in cui le API sono piuttosto specifiche.

La PS3, ad esempio, ha estensioni proprietarie della sua implementazione OpenGL ES.

OpenGL sta crescendo nello spazio mobile. Ora è disponibile su tutte le piattaforme moderne tranne Windows Phone 7.

Attualmente solo OpenGL ES è disponibile in questo spazio. Ma altri potenti chip PowerVR stanno arrivando con il supporto per OpenGL 4 e DX11.

Le tue abilità OpenGL sono d'oro. È possibile riconvertire in DX per eseguire un lavoro che lo richiede. Ma nel frattempo ricorda che OpenGL è il re della quantità di dispositivi e piattaforme in cui è disponibile.


Modifica : inoltre sempre più aziende tendono a utilizzare i motori esistenti e spesso anche gli sviluppatori di giochi core sono sempre più sottoposti a screening dalle API di basso livello. È sempre meglio avere una buona conoscenza delle API native quando si affrontano bug e comportamenti strani su piattaforme specifiche. Ma tutto si riduce ai concetti, e come altri hanno sottolineato DX e OpenGL al centro richiederanno la conoscenza degli stessi concetti.


Modifica : poiché hai già familiarità con OpenGL e probabilmente shader, dovresti provare OpenCL ... Questa API ha il potenziale per diventare la prossima grande novità nel calcolo parallelo.

Lo sto citando poiché i kernel OpenCL usano tipi di dati che sono interoperabili con OpenGL e sono facili da capire per gli sviluppatori OpenGL. Dai un'occhiata a questo e vedi se riesci ad acquisire qualche esperienza con una grande soluzione informatica generale (attualmente in fase di integrazione nella fisica dei proiettili, ad esempio).


Essendo OpenGL uno standard del settore, ha ispirato altre librerie e API. Non dovresti trascurare la sua importanza. D'altra parte, non dovresti fermarti a una cosa e se fossi in te darei un'occhiata alle API e ai motori di livello superiore che astraggono OpenGL e DirectX.
Coyote,

Conosco OpenCL. Ho lavorato su un progetto secondario, costruendo un motore fisico (rudimentale, principalmente per scopi di apprendimento) e ho usato un po 'di OpenCL per renderlo più veloce ma non ho ancora ottenuto risultati sorprendenti (in alcuni casi ho persino ha peggiorato le cose)
adivasile il

Questo è un segno di una buona prova;) Dai un'occhiata all'implementazione nel motore bullet. Comunque, buona fortuna con i tuoi progetti.
Coyote,

7

Sono d'accordo, non importa quale API apprendi. È importante conoscere i concetti di base.

Quando si guarda allo sviluppo del gioco, Windows non è l'unica piattaforma di destinazione. Come ho sentito, Apple sta crescendo come piattaforma target, ma anche le console sono davvero importanti. Le console normalmente hanno le loro API grafiche specializzate (penso che lo stiano facendo solo per disturbarci). Mentre le API della console tendono ad avere più in comune con OpenGL che con DirectX, non è ancora una grande differenza.

Vai con tutto ciò che funziona per te.


1
XBox probabilmente fa cose nel modo DirectX ...?
Macke,

Sì, PS3 utilizza PSGL. Ma X360 ha usato DirectX come lo sono su PC, anche se non ne sono sicuro, solo una supposizione.
Quazi Irfan,

Non ho esperienza su Xbox, ma secondo Wikipedia la sua API si basa su DirectX. Su PS3, PSGL è solo una delle API disponibili.
mrbinary,

X360 utilizza un'API vicina a DX9, con alcune stranezze per soddisfare il fatto che ha una quantità relativamente piccola di memoria relativamente veloce.
drxzcl,

6

Che ne dici della prospettiva di un professore di sviluppo di giochi?

Se hai le basi di OpenGL giù, TUTTI significa avventurarsi nel mondo di DirectX (nota andando in DX) che Dx9 è ancora utilizzato nello sviluppo per motivi di compatibilità, poiché le piattaforme più vecchie (in particolare XP) non supportano la grafica più recente pipeline in Dx10 e Dx11. (che dovrebbe leggere come una raccomandazione di iniziare in Dx9 e poi notare le differenze in Dx10 e poi 11 mentre progredisci) Ciò ti renderà anche più arrotondato.

Idealmente vorrai trascorrere del tempo di qualità in HLSL e CG (Nota che questi due linguaggi shader apparentemente diversi sono in realtà la stessa lingua (uno è marchiato da Microsoft e l'altro da Nvidia) capendo come funzionano gli shader di vertice e frammento (pixel) essere una risorsa enorme per te e per qualsiasi compagnia di gioco per cui vai a lavorare (supponendo che tu stia lavorando su sistemi di rendering o sottosistemi e non su codice AI. ;-)

Ogre3D è un motore di rendering open source che supporta entrambi i sottosistemi grafici (OpenGL / DirectX) e viene utilizzato in molti giochi ... poiché il sorgente è liberamente disponibile, è possibile scavare attraverso di esso e vedere in confronto come le chiamate a OpenGL differiscono dalle chiamate a DirectX.

Lo consiglierei anche perché hai già trascorso un po 'di tempo in OpenGL a dare un'occhiata a WebGL che sembra esplodere in un futuro molto prossimo.

Spero che sia d'aiuto!


Non direi che WebGL sarebbe esploso in futuro, almeno non in un prossimo futuro. È solo un altro modo per rendere 3d sui browser senza alcun plug-in.
Quazi Irfan,

Con i principali fornitori che aggiungono il supporto HTML5 e JS ai loro prodotti (Visual Studio) e aziende come Adobe che implementa Edge (HTML5 JS Flash killer?), Penso che vedremo molti più contenuti basati sul Web che sfruttano l'accelerazione hardware.
Robert French,

4

Ho letto di recente che John Carmack raccomanda DirectX per il semplice fatto che Microsoft, per un po ', ha giocato al passo con openGL e, così facendo, ha creato un prodotto competitivo e ha spinto la busta mentre le persone di OpenGL hanno trascorso del tempo a discutere e progettare dal comitato permettendo a DirectX diventare lucido e, immagino, più facile da lavorare ma attenersi a openGL.

http://www.tomshardware.com/news/john-Carmack-DirectX-OpenGL-API-Doom,12372.html

Forse un'altra opzione da considerare se ti piace la grafica in generale e per quello che ti preoccupa è quello che sta succedendo nello spazio incorporato.

Lavoro nello spazio incorporato usando sia Linux che WinCE. Ero l'ex architetto Ford SYNC (era lì per 6 anni) e ora lavoro su CUE di GM (la risposta di GM a Ford SYNC). Ford SYNC non utilizza openGL o DirectX. Ford, invece, ha optato per lo script Flash & Action; cosa Flash fa sotto il cofano non ne sono sicuro ma è lento da morire; JD Powers gli ha dato un punteggio scarso. GM CUE è tutto Linux e openGL ES e sebbene GM CUE abbia un nuovo processore iMX, le prestazioni delle animazioni in openGL su Linux sono sbalorditive. CUE / openGL è molto più veloce. Ancora una volta, Ford ha paralizzato il loro sistema con Adobe Flash.

Quindi, se stai cercando di farlo nei giochi ma sei preoccupato per la natura competitiva ma ami ancora questo tipo di lavoro, forse guarda le opzioni che ampliano il tuo curriculum. È stata la mia esperienza che, almeno nel mondo embedded, WinCE non sembra usare così tanto DirectX. (WinCE ha API leggermente diverse rispetto a NT potrebbe far parte di questo motivo). OpenGL è ovunque nel mondo embedded e le persone stanno facendo più cose come tablet, infotainment automobilistico è caldo in questo momento e, naturalmente, smartphone ...


+1 per menzionare lo spazio incorporato. Non avevo pensato di dedicarmi alla grafica per i sistemi embedded (tranne che per le piattaforme mobili), ma dopo aver fatto un po 'di ricerca ho scoperto che vale la pena prendere in considerazione. Avevo un interesse per le piattaforme embedded alcuni anni fa, ma altre cose si sono messe in mezzo, quindi ho finito per abbandonarlo abbastanza presto.
Adivasile,

2

Direi che probabilmente è positivo per il tuo curriculum essere in grado di dire che hai lavorato con entrambi, indipendentemente da quale ti sei specializzato.

Lo dico perché, come in ogni altra cosa, si tratta più delle tecniche generali che della conoscenza di API / sintassi oltre un certo punto. Devi essere in grado di fare cose e conoscere il tuo modo di aggirare, ma non devi aver implementato enormi pezzi di cose in entrambe le API: s. (Quello è O (n * m), che non si ridimensiona ...). Conoscere un po 'le API e conoscere diverse tecniche (ovvero O (n + m)) funziona e sarà utile.

Naturalmente, otterrai punti bonus anche per fare qualcosa di "avanzato" anche in DX, poiché mostra che hai una conoscenza più approfondita dell'API, ma hai bisogno di alcune tecniche avanzate in ogni caso, per dimostrare che sai come devono essere collegate le scatole (ignorando le parole magiche specifiche che devi dire per farlo).

È lo stesso con qualsiasi API (3d o altro), o qualsiasi linguaggio di programmazione, davvero.


1

Ho scoperto che DirectX è più difficile da imparare e quindi un'abilità migliore. Directx di solito ha un supporto migliore da parte dei produttori di schede, tuttavia Microsoft non rilascia molti aggiornamenti per trarre vantaggio da tali progressi (e solo una sottopopolazione selezionata di giocatori hardcore utilizza davvero quelle schede). Per quanto riguarda lo sviluppo del gioco, tutte le principali piattaforme di gioco utilizzano i propri motori grafici proprietari ... xbox -> DirectX Box :) Conoscere concetti 3D, mesh, illuminazione, trasformazioni, ecc. È un'abilità che è la stessa per tutti.


Ho trovato pochissime differenze concettuali tra DX9-ish e openGl "moderno" (senza usare glBegin). Gradirei i tuoi pensieri sul perché uno dei due sia "più facile" o "più difficile" dell'altro.
drxzcl,

1
In realtà trovo che OpenGL sia più facile da comprendere le basi davvero fondamentali, ma non appena si passa a VBO e shader, D3D diventa molto più semplice (la mancanza di estensioni lo rende più coerente anche su una base hardware più ampia).
Maximus Minimus,

Anche questa è la mia esperienza, quindi la domanda.
drxzcl,

1

Se ne conosci uno puoi facilmente prendere l'altro.

Se conosci OpenGL puoi facilmente programmare per smartphone (Android e iPhone) più win / Linux / mac.

DirectX è solo Win / Xbox. Quindi, a meno che tu non voglia scegliere come target Xbox, direi di rimanere con OpenGL poiché può scegliere come target più piattaforme.


-4

Preferisco OPENGL. Consideriamo ad esempio Android, il sistema operativo mobile utilizza OPENGL. Ci sono così tanti motori di gioco sviluppati sulla piattaforma OPENGL.

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.