Dois-je apprendre Direct3D 9, 10 ou 11? [fermé]

14

Je commence tout juste à me lancer dans la programmation 3D avec Direct3D. Quelle version de D3D dois-je acheter?

11 semble assez soigné, mais 9 et 10 semblent toujours assez présents. Compte tenu de l'état actuel de l'industrie du développement de jeux, quelle version est-il plus logique de commencer à utiliser?

dotminic
la source
Les questions "Quelle technologie utiliser" ne sont pas de bonnes questions Q / R.
MichaelHouse

Réponses:

12

Cela dépend si vous voulez ou non concevoir un moteur pour produire un jeu à faire dans trois ans, ou un an ou six mois, et si vous pensez ou non aux ports de console. Il sera relativement facile de lancer un port 360 de votre jeu depuis Direct3D9, mais vous devrez en faire beaucoup plus depuis D3D11. N'oubliez pas que D3D11 verrouille tous les utilisateurs XP, sinon nécessairement tout le matériel D3D9.

L'enquête Steam la plus récente suggère qu'environ 16% des personnes utilisent toujours Windows XP. Pouvez-vous vous permettre de les supprimer? Au moment où votre jeu est terminé, comment cela aura-t-il changé? Allez-vous utiliser des fonctionnalités qui dépendent de l'API de niveau supérieur? Ce sont des questions auxquelles vous devrez répondre vous-même.

Direct3D 9 est sacrément accessible et vous pouvez atteindre beaucoup de gens avec un jeu D3D9, mais ses jours sont comptés, en particulier sur le PC. Si vous ne souhaitez pas cibler ces personnes, cela ne sert à rien.

Oh, et ne vous embêtez pas avec DX10. Il n'y a aucune raison de l'utiliser sur DX11. Sauf si vous souhaitez utiliser D2D / DirectWrite, ce qui n'est pas déraisonnable.

Bien sûr, il convient de mentionner que dans DX11, il n'y a pas de remplacement pour les classes que, en tant que amateur moi-même, j'ai trouvé extrêmement utile dans DX9. Tels que ID3DXMesh, ID3DXSprite, ID3DXFont, doivent compiler ID3DXEffect à partir de la source, etc. Microsoft recommande DirectWrite pour remplacer ID3DXFont, mais bien sûr, ils ont oublié de réellement rendre DX11 compatible avec les nouveaux systèmes Direct2D / DirectWrite, ce qui à mon avis était aveuglément stupide .

DeadMG
la source
Pourquoi ont-ils supprimé le cadre d'effet? C'était une classe IMO très utile.
dotminic
@__dominic: Il n'est pas supprimé, mais vous devez le compiler vous-même.
DeadMG
1
@__dominic: Comme l'a souligné DeadMG, le cadre d'effet n'a pas été supprimé, il a été intégré dans un ensemble autonome de fichiers de code que vous pouvez compiler vous-même - cela aurait été fait pour lui permettre d'être versionné plus fluide que le noyau D3D, et faciliter les problèmes de déploiement (en particulier autour de D3DX).
1
Je pense que pire que de supprimer 25% des utilisateurs XP, c'est que seulement 17% ont des GPU DX11 (pour l'instant).
DMan
2
@DMan: D3D11 peut fonctionner sur du matériel de niveau inférieur, y compris du matériel D3D9.
DeadMG
9

tldr: Apprenez D3D11.

La différence entre 10 et 11 est assez petite, en termes de forme de l'API. D3D11 vous permet d'utiliser la mise à niveau vers le bas pour écrire du code par rapport à l'API D3D11 qui s'exécutera tout le long du matériel de classe D3D9 (notez que vous aurez toujours besoin de Vista ou mieux cependant). Donc, vous pouvez aussi bien apprendre la nouvelle API, qui me semble plus propre et plus uniforme de toute façon.

Cependant, si vous n'avez pas Vista ou mieux, ou si vous souhaitez éventuellement que votre propre code s'exécute sur XP (pour par exemple distribuer votre jeu aux utilisateurs XP), vous devrez utiliser D3D9. Le marché XP est probablement en train de rétrécir, alors je dirais opter pour 11 si vous le pouvez.


la source
3

Si vous êtes complètement nouveau dans la programmation 3D, et surtout si vous êtes nouveau dans la programmation COM et Windows, je vous déconseille fortement d'apprendre DirectX maintenant. D'après mon expérience, DirectX est un outil extrêmement puissant, mais il a une courbe d'apprentissage très abrupte, que vous devez prendre en compte en plus des courbes d'apprentissage de la programmation Windows, de la programmation 3D et bien d'autres. Si vous commencez avec DirectX, vous pourriez vous sentir submergé par tous les détails de la création de code passe-partout, donc je le déconseille.

Au lieu de cela, je recommanderais une API plus simple qui vous permet de vous concentrer davantage sur l'apprentissage de la programmation 3D. XNA est assez agréable, et comme il se trouve au-dessus de DirectX, une fois que vous passez à DirectX, vous aurez quelques idées qui rendront la courbe d'apprentissage DirectX beaucoup plus facile à prendre.

Maintenant, si vous avez de l'expérience en programmation 3D, comme avec OpenGL, et que vous savez comment faire de la programmation COM, je recommanderais DirectX 11. Tout sauf la dernière version est obsolète, et toute expérience que vous en tirerez sera utile pour un laps de temps plus court.

Mais là encore, la véritable expérience vient de la variété, je vous recommande donc d'apprendre à la fois DirectX et OpenGL, ainsi que XNA si vous le souhaitez, et autant d'API que possible. De cette façon, vous aurez une connaissance abstraite du fonctionnement de la programmation 3D avec différents outils et vous pourrez utiliser le bon outil pour chaque travail.


la source
2

Je recommande DX11 ou DX10. La différence est très faible. Vous pouvez simplement faire plus de choses avec DX11 (tessalisation hw, meilleur gpgpu, sortie vers plusieurs textures sur pixel shader ..). DirectX 9 a une autre architecture et est peu obsolète pour le moment. Si vous posez des questions sur l'industrie actuelle des développeurs de jeux: pour les jeux PC actuellement développés, DX9 est mort.

Mais je dois dire:
ne vous souciez pas de l'API , une fois que vous comprenez vraiment comment les graphiques fonctionnent, l'apprentissage d'une nouvelle API prendrait un mois maximum. Temps encore plus court.

Notabene
la source
3
DX9 n'est pas obsolète. Il y a encore une tonne d'utilisateurs potentiels sur XP. Il n'est peut-être plus en développement et va devenir obsolète au cours des prochaines années, mais pour l' instant ce n'est pas le cas.
The Communist Duck
1
@thecommunistduck Je suis d'accord, mais DX9 est totalement obsolète pour l'apprendre. Parce qu'une fois débutant qui commencera à l'apprendre maintenant, le saura bien ... ce sera dépassé. Et bien sûr, je l'ai mal dit dans ma réponse.
Notabene
-5

J'ai entendu dire que dx9 avec le système win xp est un système basé sur un seul cœur. C'est de la vieille technologie. Je vous recommande dx11.

seo
la source
3
Cette réponse n'ajoute rien de productif et il n'est pas clair (et potentiellement faux et trompeur) ce que vous proposez concernant un «système à noyau unique».
1
De plus, "j'ai entendu dire que ..." n'est pas une source de preuve crédible (ou à peu près n'importe quoi, vraiment).
Maximus Minimus du