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).
Réponses:
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 (
ID3D11DeviceContext
spé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
StructureByteStride
champ 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
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.
la source
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.
la source