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.
la source
Réponses:
Ç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.
la source
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).
la source
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.
la source
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é!
la source
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 ...
la source
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.
la source
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.
la source
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.
la source
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.
la source