Passer de DirectX 10 à DirectX 11

10

J'ai fait un nombre raisonnable de petits projets de loisir en utilisant DirectX 9 mais il est temps de passer à DirectX 11 maintenant.

J'ai un livre de Frank Luna'a sur la programmation 3D utilisant DirectX 10 mais rien sur DirectX 11. Je pense qu'ils sont assez similaires, mais je me demandais si quelqu'un pourrait énumérer les principales différences au niveau du code dont je devrais être conscient ( ou pointer vers une source existante).

JohnB
la source
Connexes gamedev.stackexchange.com/questions/2362/...
Le communiste canard
J'ai entendu dire que DX10 était vraiment différent et non rétrocompatible avec DX9, tandis que DX11 était rétrocompatible avec DX9.
jokoon
DX10 est assez différent de DX9 mais DX11 est assez similaire à DX10, je voulais juste savoir quelles étaient les différences. Curieusement, DX11 fonctionnera avec le matériel DX9 mais DX10 ne le sera pas;)
JohnB

Réponses:

15

La documentation du SDK contient une section sur la migration vers 11 qui couvre les versions 9 et 10. Il y a aussi la page des fonctionnalités du D3D11 .

L'un des plus grands changements en termes de forme de l'API entre 10 et 11 est que 11 déplace un tas de méthodes de l'appareil lui-même vers une nouvelle interface appelée un contexte d'appareil ( ID3D11DeviceContextspécifiquement), afin de prendre en charge les nouvelles fonctionnalités multi-threading.

Une fois que vous êtes conscient du changement, cependant, il est assez facile de s'y adapter: là où vous auriez dans 10 appelé " someDevice->Draw()", vous obtiendrez à la place le contexte immédiat de l'appareil et appellerez " immediateContext->Draw()."

L'autre grand changement est que l'API Effects est retirée du noyau et fait une distribution source indépendante que vous devez compiler et lier vous-même. Vous pouvez également remarquer certaines interfaces et fonctions D3DX qui ont été dépréciées ou supprimées.

Au-delà de cela, il y a une poignée de nouveaux paramètres pour certaines fonctions et une poignée de champs supplémentaires dans les structures, et cetera. Par exemple, l' objet de description de tampon dans 11 a un StructureByteStridechamp supplémentaire qui n'est pas dans 10 , et la création de périphérique implique la transmission d' informations au niveau des fonctionnalités . De plus, il y a les changements évidents et susmentionnés dans les noms d'interface (10s remplacés par 11s).


la source
Merci, juste ce dont j'avais besoin. J'ai cherché un guide officiel de ce qui avait changé mais je n'ai pas réussi à le trouver. Merci pour cette réponse et aux autres personnes qui ont pris le temps d'aider avec de bonnes réponses aussi :)
JohnB
C'est drôle comme on oublie ces trucs rapidement. J'ai particulièrement détesté la compilation d'effets et il m'a fallu quelques jours pour la faire fonctionner. Mais je ne l'ai pas inclus dans ma réponse ...
Notabene
J'allais poster ceci comme une question, mais j'ai réalisé que votre réponse couvre déjà la plupart de mes préoccupations, même si j'aimerais une confirmation. Pour quelqu'un qui n'a travaillé qu'avec DX9 mais qui cherche à améliorer ses connaissances, acheter un livre DX11 m'apprendra non seulement sur DX11 (évidemment) mais me donnera également suffisamment de connaissances pour travailler avec DX10 si nécessaire?
David Gouveia
Ouais assez bien.
1

Je pense que la principale différence est que, dans DX11, le DXFont a disparu, à part cela, c'est à peu près ce que notabene a dit. Vous devriez être bien avec ce livre DX10. Je l'ai utilisé lors du passage au DX11 et je n'ai eu aucun problème. Vous aurez besoin d'aller voir le msdn de temps en temps, il y a quelques différences mineures dans l'API à certains endroits IIRC.

dotminic
la source
1

Il ne sera pas nécessaire de changer. Directx11 n'ajoute que de nouvelles fonctionnalités. Vous changerez simplement les numéros d'ID3D10 en ID3D11, etc.


DirectX11 ajoute (s'il ne s'agit pas de la tessalisation HW hyped) Direct Compute: API pour le GPGPU, avec une excellente connexion à la ligne graphique (je ne peux pas dire cela à propos de CUDA ou openCL). Et possibilité de plusieurs textures RW et tampons sur un pixel shader, ce qui ouvre de nombreuses nouvelles possibilités.

Notabene
la source