Question

Messieurs et estimées dames.

J'ai posté cette question sur le forum COM de Code Project et j'ai reçu une réponse arrogante. J'espère que vous serez plus utile.

Je vois que Microsoft a une bibliothèque COM pour Direct3D 9 exposée avec le GUID 81BDCBCA-64D4-426d-AE8D-AD0147F4275C.

Microsoft a-t-il exposé Direct3D 10 sur COM et si tel est le cas, quel est le GUID de l'interface?

Merci d'avance.

Était-ce utile?

La solution

D'après la documentation sur MSDN, il semble qu'ils n'aient plus d'objet IDirect3D9 avec des fonctions membres telles que IDirect3D9 :: CreateDevice pour utiliser des fonctions globales telles que D3D10CreateDevice . Avec Direct3D 10, ils ont divisé bon nombre des fonctions qui figuraient dans IDirect3D9 concernant (par exemple) les adaptateurs en Infrastructure graphique DirectX (DXGI) .

En d’autres termes, Direct3D 10 utilise toujours COM, mais non, il n’existe pas de contrepartie de IDirect3D9. Les choses pour lesquelles vous avez utilisé IDirect3D9 sont désormais réalisées via d'autres moyens.

Edition: La classe COM avec le GUID ci-dessus est IDirect3D9. Direct3D 10 n’a pas de version mise à jour (il n’existe aucun IDirect3D10 qui fasse ce que fait IDirect3D9); à la place, les fonctions membres de cette classe ont été divisées en fonctions globales (telles que D3D10CreateDevice ) que vous appelez directement via un objet et dans les classes DXGI (telles que IDXGIOutput ). Vous n'avez pas besoin d'un objet IDirect3D10 car les tâches pour lesquelles vous l'utiliseriez sont maintenant effectuées de différentes manières.

Vous devriez pouvoir mapper les GUID aux noms de classes COM en recherchant les fichiers d'en-tête Direct3D pour la macro DEFINE_GUID.

Autres conseils

Dans COM, les informations de bibliothèque telles que celles que vous demandez sont codées dans une bibliothèque de types (fichier TLB). Direct3D n'a utilisé aucune bibliothèque de types ni CoCreateInstance pour aucun de ses objets depuis DirectX 8.0, il y a presque dix ans maintenant. Direct3D utilise des interfaces COM pour gérer la durée de vie de leurs objets, et c'est tout. Ils n'utilisent pas beaucoup QueryInterface. La plupart des infrastructures COM ne s’appliquent pas aux interfaces utilisées par Direct3D et à leurs objets associés.

Ils n'utilisent pas CoCreateInstance pour créer leurs objets, mais fournissent plutôt une fonction de fabrique (telle que Direct3DCreate9) à partir de laquelle vous obtenez une interface de base, puis utilisez les méthodes creator à partir de cette interface de base pour obtenir le reste. Dans Direct3D 10, ils ont reconnu que l’interface de base qui énumère les affichages et ainsi de suite était stable et identique pour D3D 8 et D3D 9; ils l’ont donc déplacée dans une interface de base stable IDXGIFactory. Le même code DXGI est utilisé pour D3D 10, 10.1 et 11.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top