Dois-je continuer à étudier OpenGL ou simplement passer à DirectX pour me donner une meilleure chance de décrocher un emploi dans l'industrie du jeu? [fermé]

29

J'apprends la programmation graphique depuis un certain temps maintenant en utilisant OpenGL et Linux. Je connais assez bien la plupart des concepts, mais j'aimerais vraiment approfondir mes connaissances et éventuellement poursuivre une carrière dans le développement de jeux, en particulier le développement de moteurs de jeux.

Jusqu'à présent, il me semble que la majorité des studios de jeux fabriquent des jeux pour Windows en utilisant DirectX.

Edit: Je sais que la question OpenGL vs DirectX a déjà été posée ici, mais je n'ai pas trouvé de réponse dans la perspective que je souhaite.

Edit 2: Après avoir lu toutes les réponses / commentaires, j'ai décidé de continuer à approfondir les graphiques avec OpenGL / GLSL, mais j'essaierai également de jouer avec DX, juste pour avoir une compréhension de base de l'API. J'aimerais remercier tout le monde pour les réponses et les idées que vous m'avez données.

adivasile
la source
Une version généralisée de cette question pourrait donner de bonnes réponses sur programmers.stackexchange.com ...
Macke
1
J'ai essentiellement appris les points les plus fins des shaders DX par un gars OpenGL qui n'a jamais fait de HLSL. Tant que vous savez que "fragment shader" signifie "pixel shader", les concepts sont à peu près les mêmes; P
drxzcl
IIRC, DirectX a été rendu un peu plus semblable à OpenGL dans la version 8 ou 9. Avant cela, DirectX était parfois critiqué comme étant inutilement difficile à utiliser. Les API sont toujours différentes, mais les approches générales devraient être assez similaires. Avertissement - Je ne suis pas non plus un expert.
Steve314
@Macke - Les conseils de carrière sont hors sujet @ Programmeurs. Ceci est probablement trop spécifique mais les questions générales sur la carrière seront sur le sujet @ Professional Matters (actuellement proposé dans la zone 51) Veuillez vous engager à soutenir cette SE
Tchad
Les probabilités écrasantes sont que même si vous entrez dans l'industrie, vous ne serez pas un programmeur graphique et cela n'aura aucune importance si vous connaissez une API, l'autre, les deux ou aucune. Au-delà, cela dépend de l'entreprise et du projet. D3D est beaucoup plus couramment utilisé dans l'espace PC, GL | ES est complètement dominant dans l'espace mobile, et les consoles utilisent toutes des API propriétaires que vous ne pouvez pas vraiment apprendre par vous-même.
Sean Middleditch

Réponses:

28

Ça n'a vraiment pas d'importance. Les concepts de base sont les mêmes dans les deux, surtout maintenant que les pixel shaders sont la norme. Et comme la plupart des jeux sont multiplateformes, ils vont probablement utiliser un sous-ensemble de fonctionnalités similaires dans les deux langues. Tant que vous pouvez écrire des shaders en glsl ou hlsl, tout ira bien.

Cela étant dit, le nombre de postes de "développement de moteur de jeu" est faible. La plupart des entreprises utilisent quelque chose sur étagère. Pour les postes qui existent, encore moins d'entre eux sont de niveau d'entrée. La plupart des programmeurs de jeux d'entrée de gamme n'écrivent aucun code graphique (autre que peut-être des shaders) car tout a été abstrait.

Tetrad
la source
1
Que font les programmeurs les plus débutants? Dans les grands, moyens ou petits studios?
Quazi Irfan
C'est une question distincte. gamedev.stackexchange.com/questions/5538/…
Tetrad
1
Juste pour ajouter une réponse plus générale, d'après mon expérience, les programmeurs juniors ont tendance à commencer par le gameplay, l'interface utilisateur, le hud et à partir de là, le gameplay est un point d'entrée populaire.
JuniorDeveloper1208
Les menus d'intégration d'actifs et l'interface utilisateur sont des points d'entrée encore plus courants d'après mon expérience.
Coyote
Les gars, ne commençons pas un long fil sur cette question particulière dans les commentaires ici. Ce sont des réponses parfaitement bonnes à la question à laquelle j'ai fait un lien.
Tetrad
10

Tout dépend du travail que vous souhaitez / obtiendrez. Vous pensez probablement à un emploi sur le marché des PC où DX est roi. N'oubliez pas que la plupart des sociétés AAA visent le marché des consoles où les API sont assez spécifiques.

La PS3, par exemple, possède des extensions propriétaires de son implémentation OpenGL ES.

OpenGL se développe dans l'espace mobile. Maintenant, il est disponible sur toutes les plates-formes modernes, sauf Windows Phone 7.

Actuellement, seul OpenGL ES est disponible dans cet espace. Mais des puces PowerVR plus puissantes sont prises en charge avec OpenGL 4 et DX11.

Vos compétences OpenGL sont d'or. Vous pouvez reconvertir en DX pour décrocher un travail qui l'exige. Mais en attendant, rappelez-vous qu'OpenGL est roi sur la quantité d'appareils et de plates-formes où il est disponible.


Edit : De plus en plus d'entreprises ont tendance à utiliser les moteurs existants et souvent même les développeurs de jeux de base sont de plus en plus filtrés des API de bas niveau. Il est toujours préférable d'avoir une bonne connaissance des API natives lorsque vous êtes confronté à des bugs et à un comportement étrange sur des plateformes spécifiques. Mais tout se résume aux concepts, et comme d'autres l'ont souligné DX et OpenGL au cœur nécessiteront la connaissance des mêmes concepts.


Edit : Comme vous êtes déjà familier avec OpenGL et probablement les shaders, vous devriez essayer OpenCL ... Cette API a le potentiel de devenir la prochaine grande chose en informatique parallèle.

Je le mentionne car les noyaux OpenCL utilisent des types de données qui sont interopérables avec OpenGL et sont simples à comprendre pour les développeurs OpenGL. Jetez un œil à cela et voyez si vous pouvez acquérir une certaine expérience avec une excellente solution informatique générale (actuellement en cours d'intégration dans la physique des balles par exemple).

Coyote
la source
OpenGL étant une norme de l'industrie, il a inspiré d'autres bibliothèques et API. Vous ne devez pas négliger son importance. Mais d'un autre côté, vous ne devriez pas vous arrêter à une chose et si j'étais vous, j'examinerais les API et les moteurs de niveau supérieur qui font abstraction d'OpenGL et de DirectX.
Coyote
Je connais OpenCL. J'ai travaillé sur un projet parallèle, la construction d'un moteur physique (rudimentaire, principalement à des fins d'apprentissage) et j'ai utilisé un peu d'OpenCL pour le rendre plus rapide mais je n'ai pas encore obtenu des résultats incroyables (dans certains cas, j'ai même aggravé)
adivasile
C'est le signe d'un bon essai;) Jetez un œil à l'implémentation dans le moteur de puces. Quoi qu'il en soit, bonne chance avec vos projets.
Coyote
7

Je suis d'accord, peu importe quelle API vous apprenez. Il est important de connaître les concepts de base.

En ce qui concerne le développement de jeux, Windows n'est pas la seule plate-forme cible. Comme je l'ai entendu, Apple se développe comme plate-forme cible, mais les consoles sont également très importantes. Les consoles ont normalement leur propre API graphique spécialisée (je pense qu'elles le font juste pour nous déranger). Bien que les API de console aient tendance à avoir plus en commun avec OpenGL qu'avec DirectX, ce n'est toujours pas une énorme différence.

Allez avec ce qui vous convient.

mrbinary
la source
1
XBox remplit probablement la manière DirectX ...?
Macke
Oui, la PS3 utilise PSGL. Mais, X360 a utilisé DirectX comme ils le sont sur PC, mais pas sûr, juste une supposition.
Quazi Irfan
Je n'ai pas d'expérience sur la Xbox, mais selon Wikipedia son API est basée sur DirectX. Sur PS3, PSGL n'est qu'une des API disponibles.
mrbinary
X360 utilise une API proche de DX9, avec quelques bizarreries pour tenir compte du fait qu'il dispose d'une quantité relativement faible de mémoire relativement rapide.
drxzcl
6

Qu'en est-il de la perspective d'un professeur de développement de jeux?

Si vous avez les bases d'OpenGL vers le bas, par tous les moyens, aventurez-vous dans le monde de DirectX (remarque dans DX) que Dx9 est toujours utilisé dans le développement pour des raisons de compatibilité, car les anciennes plates-formes (en particulier XP) ne prennent pas en charge les nouveaux graphiques pipeline en Dx10 et Dx11. (cela devrait se lire comme une recommandation de commencer en Dx9 puis de noter les différences en Dx10 puis en 11 au fur et à mesure que vous progressez) Cela vous rendra également plus arrondi.

Idéalement, vous voudrez passer du temps de qualité en HLSL et CG (Notez que ces deux langues de shader apparemment différentes sont en fait la même langue (l'une est marquée par Microsoft et l'autre par Nvidia) comprendre le fonctionnement des shaders de vertex et de fragment (pixel). être un énorme atout pour vous et toute société de jeux pour laquelle vous allez travailler (en supposant que vous travaillez sur des systèmes de rendu ou des sous-systèmes et non sur du code AI. ;-)

Ogre3D est un moteur de rendu open source qui prend en charge les deux sous-systèmes graphiques (OpenGL / DirectX) et est utilisé dans de nombreux jeux ... parce que la source est disponible gratuitement, vous pourrez profiter de le parcourir et de voir en comparaison comment les appels à OpenGL diffèrent des appels à DirectX.

Je recommanderais également cela parce que vous avez déjà passé un certain temps dans OpenGL que vous piquez sur WebGL qui semble exploser dans un avenir très proche.

J'espère que ça t'as aidé!

Robert French
la source
Je ne dirais pas que WebGL exploserait à l'avenir, du moins pas dans un avenir proche. C'est juste une autre façon de rendre la 3D sur les navigateurs sans aucun plugin.
Quazi Irfan
Avec les principaux fournisseurs ajoutant la prise en charge HTML5 et JS à leurs produits (Visual Studio) et des entreprises comme Adobe déployant Edge (HTML5 JS Flash killer?), Je pense qu'ils allaient voir beaucoup plus de contenu Web qui tirerait parti de l'accélération matérielle.
Robert French
4

J'ai lu récemment que John Carmack recommande DirectX pour le simple fait que Microsoft, pendant un certain temps, a rattrapé openGL et ce faisant, ils ont créé un produit compétitif et poussé l'enveloppe tandis que les gens d'OpenGL passaient du temps à discuter et à faire la conception par un comité autorisant DirectX pour devenir poli et, je suppose, plus facile à travailler mais en restant avec openGL.

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

Peut-être une autre option à considérer si vous aimez les graphiques en général et pour ce qui est de ce qui se passe dans l'espace intégré.

Je travaille dans l'espace embarqué en utilisant à la fois Linux et WinCE. J'étais ancien architecte Ford SYNC (j'y étais depuis 6 ans) et maintenant je travaille sur GM's CUE (la réponse de GM à Ford SYNC). Ford SYNC n'utilise ni openGL ni DirectX. Ford a plutôt opté pour le script Flash & Action; ce que fait Flash sous le capot, je ne suis pas sûr mais c'est lent comme l'enfer; JD Powers lui a donné une mauvaise note. Le CUE de GM est entièrement Linux et openGL ES et bien que le GM CUE ait un processeur iMX plus récent, les performances des animations en openGL sur Linux sont stupéfiantes. CUE / openGL est beaucoup plus rapide. Encore une fois, Ford a paralysé leur système avec Adobe Flash.

Donc, si vous cherchez à réussir dans les jeux mais êtes préoccupé par la nature compétitive mais aimez toujours ce type de travail, regardez peut-être les options qui élargissent votre CV. D'après mon expérience, au moins dans le monde embarqué, WinCE ne semble pas utiliser beaucoup DirectX. (WinCE a une API légèrement différente de NT peut faire partie de cette raison). OpenGL est partout dans le monde intégré et les gens font plus de choses comme les tablettes, l'infodivertissement automobile est chaud en ce moment, et bien sûr les téléphones intelligents ...

Eric
la source
+1 pour avoir mentionné l'espace intégré. Je n'avais pas pensé à entrer dans les graphiques pour les systèmes embarqués (sauf pour les plates-formes mobiles), mais après avoir fait un peu de recherche, j'ai trouvé que c'était un choix qui valait la peine d'être considéré. J'avais un intérêt pour les plates-formes embarquées il y a quelques années, mais d'autres choses me gênaient, alors j'ai fini par l'abandonner assez tôt.
adivasile
2

Je dirais qu'il est probablement bon dans votre CV de pouvoir dire que vous avez travaillé avec les deux, quelle que soit votre spécialité.

Je le dis parce que, comme pour tout, il s'agit plus de techniques générales que de connaissances API / syntaxe au-delà d'un certain point. Vous devez être capable de faire des choses et connaître votre chemin, mais vous n'avez pas besoin d'avoir implémenté d'énormes éléments dans les deux API: s. (C'est O (n * m), qui n'est pas à l'échelle ...). Connaître un peu les API et connaître différentes techniques (c'est-à-dire O (n + m)) fonctionnera et sera utile.

Bien sûr, vous obtiendrez des bonus pour avoir fait quelque chose d '"avancé" dans DX, car cela montre que vous avez une connaissance plus approfondie de l'API, mais vous avez besoin de quelques techniques avancées dans tous les cas, pour prouver que vous savez comment les boîtes doivent être connectées (ignorant les mots magiques spécifiques que vous avez à dire pour le faire).

C'est la même chose avec n'importe quelle API (3d ou autre), ou n'importe quel langage de programmation, vraiment.

Macke
la source
1

J'ai trouvé que DirectX est plus difficile à apprendre et donc une meilleure compétence. Directx bénéficie généralement d'un meilleur support de la part des fabricants de cartes, mais Microsoft ne publie pas autant de mises à jour pour tirer parti de ces avancées (et seule une sous-population sélectionnée de joueurs hardcore utilise vraiment ces cartes). En ce qui concerne le développement de jeux, toutes les principales plates-formes de jeux utilisent leurs propres moteurs graphiques propriétaires ... xbox -> DirectX Box :) Connaître les concepts 3D, les maillages, l'éclairage, les transformations, etc., est une compétence qui est la même pour tous.

MartyTPS
la source
J'ai trouvé très peu de différence conceptuelle entre DX9-ish et openGl "moderne" (sans utiliser glBegin). Je vous serais reconnaissant de savoir pourquoi l'un des deux est "plus facile" ou "plus difficile" que l'autre.
drxzcl
1
En fait, je trouve qu'OpenGL est plus facile à comprendre les bases vraiment fondamentales, mais dès que vous passez aux VBO et aux shaders, D3D devient beaucoup plus facile (le manque d'extensions le rend plus cohérent sur une base matérielle plus large également).
Maximus Minimus
C'est mon expérience aussi, d'où la question.
drxzcl
1

Si vous en connaissez un, vous pouvez facilement prendre l'autre.

Si vous connaissez OpenGL, vous pouvez facilement programmer pour les téléphones intelligents (Android et iPhone) plus Win / Linux / Mac.

DirectX est uniquement Win / Xbox. Donc, à moins que vous ne vouliez cibler Xbox, je dirais de rester avec OpenGL car il peut cibler plus de plates-formes.

user697111
la source
-4

Je préfère OPENGL. Prenons par exemple Android, le système d'exploitation mobile utilise OPENGL. Il existe de nombreux moteurs de jeu développés sur la base de la plate-forme OPENGL.

user907629
la source