Modifier

Portage DirectX 11 : FAQ

Réponses aux questions fréquemment posées sur le portage de jeux vers la plateforme Windows universelle (UWP).

Le portage de mon jeu va-t-il se résumer à une série d’opérations de copier-coller sur les méthodes API ou dois-je planifier un processus de portage plus réfléchi ?

Direct3D 11 est une mise à jour importante de Direct3D 9. Elle engendre plusieurs changements de paradigmes, y compris des API distinctes pour la carte graphique virtualisée et son contexte, ainsi qu’une nouvelle couche de polymorphisme pour les ressources de périphériques. Votre jeu peut toujours utiliser du matériel vidéo plus ou moins de la même façon, mais vous devrez découvrir la nouvelle architecture des API Direct3D 11 et mettre à jour chaque partie de votre code graphique pour utiliser les composants API appropriés. Voir Concepts et considérations sur le portage.

Quel est le rôle du nouveau contexte de périphérique ? Dois-je remplacer mon périphérique Direct3D 9 par le périphérique Direct3D 11, le contexte de périphérique, ou les deux ?

Le périphérique Direct3D est désormais utilisé pour créer des ressources dans la mémoire vidéo, alors que le contexte de périphérique sert à définir l’état du pipeline et générer des commandes de rendu. Pour plus d’informations, voir : Quelles modifications majeures ont été apportées depuis la version Direct3D 9 ?

Dois-je mettre à jour le minuteur de mon jeu pour UWP ?

QueryPerformanceCounter, de même que QueryPerformanceFrequency, reste le meilleur moyen d’implémenter un minuteur de jeu pour les applications UWP.

Toutefois, on observe une nuance avec les minuteurs et le cycle de vie des applications UWP. Les commandes suspendre/reprendre sont différentes pour un joueur qui relance un jeu de bureau, car votre jeu reprendra sur une capture instantanée de la dernière fois que le jeu a été exécuté. Si le laps de temps avant la reprise est important, quelques semaines, par exemple, certaines implémentations du minuteur de jeu peuvent ne pas se comporter de façon fluide. Vous pouvez utiliser les événements de cycle de vie de l’application pour réinitialiser votre minuteur au moment de la reprise du jeu.

Les jeux qui utilisent encore l’instruction RDTSC doivent être mis à jour. Voir Minutage des jeux et processeurs multicœurs.

Le code de mon jeu est basé sur D3DX et DXUT. Existe-t-il des ressources pour m’aider à migrer mon code ?

Le projet de la communauté Kit de ressources DirectX (DirectXTK) propose des classes d’assistance pour Direct3D 11.

Comment faire conserver les chemins de code pour le bureau et le Microsoft Store ?

La série d’articles de Chuck Walbourn intitulée Techniques de codage à double usage pour les jeux offre des conseils sur le partage de code entre le bureau et les chemins de code du Microsoft Store.

Comment charger des ressources d’image dans mon jeu UWP DirectX ?

Il existe deux chemins d’API pour le chargement d’image :

Vous pouvez aussi utiliser DDSTextureLoader et WICTextureLoader, à partir du DirectXTK ou DirectXTex.

Où est le Kit de développement logiciel (SDK) DirectX ?

Le Kit de développement logiciel (SDK) DirectX est inclus dans le Kit de développement logiciel (SDK) Windows. Le dernier kit de développement logiciel DirectX indépendant de celui de Windows date de juin 2010. Des exemples Direct3D figurent dans la bibliothèque de code avec les autres exemples d’applications Windows.

Qu’en est-il des redistribuables DirectX ?

La grande majorité des composants du Kit de développement logiciel (SDK) Windows sont déjà inclus dans les versions prises en charge du système d’exploitation, ou ne comprennent pas de composant DLL (comme DirectXMath). Tous les composants API Direct3D utilisables par les applications UWP seront déjà disponibles pour votre jeu. Vous n’avez pas besoin de les redistribuer.

Les applications de bureau Win32 utilisent encore DirectSetup, donc si vous mettez aussi à jour la version de bureau de votre jeu, voir Déploiement Direct3D 11 pour les développeurs de jeu.

Existe-t-il un moyen de mettre à jour mon code d’application de bureau vers DirectX 11 avant de quitter Effects ?

Voir Mise à jour d’Effects pour Direct3D 11. Effects 11 vous aide à supprimer les dépendances sur les en-têtes hérités du kit de développement logiciel DirectX. Son rôle est d’aider au portage et il ne peut être utilisé qu’avec les applications de bureau.

Existe-t-il un chemin d’accès pour porter mon jeu DirectX 8 vers UWP ?

Oui :

Puis-je porter mon jeu DirectX 10 ou 11 vers UWP ?

Les jeux de bureau DirectX 10.x et 11 sont faciles à porter vers UWP. Voir Migration vers Direct3D 11.

Comment choisir le périphérique d’affichage dans un système multimoniteur ?

L’utilisateur sélectionne le moniteur sur lequel afficher votre application. Laissez Windows fournir l’adaptateur approprié en appelant D3D11CreateDevice avec le premier paramètre défini sur nullptr. Obtenez ensuite l’interface IDXGIDevice de l’appareil, appelez GetAdapter et utilisez l’adaptateur DXGI pour créer la chaîne d’échange.

Comment activer l’anticrénelage ?

L’anticrénelage (échantillonnage multiple) est activé quand vous créez le périphérique Direct3D. Énumérez la prise en charge du multi-échantillonnage en appelant CheckMultisampleQualityLevels, puis définissez les options multi-échantillon dans la structure DXGI_SAMPLE_DESC lorsque vous appelez CreateSurface.

Le rendu de mon jeu s’appuie sur le multithreading et/ou le rendu différé. Que dois savoir pour Direct3D 11 ?

Consultez Introduction au multithreading dans Direct3D 11 pour la prise en main. Pour obtenir une liste des différences notables, voir Différences de thread entre les versions Direct3D. Notez que le rendu différé utilise un contexte différé d’appareil au lieu d’un contexte immédiat.

Où trouver de la documentation sur le pipeline programmable à partir de Direct3D 9 ?

Quel autre format de fichier puis-je utiliser pour remplacer le format .x de mes modèles ?

Bien que nous n’ayons pas de remplacement officiel pour le format de fichier .x, de nombreux exemples utilisent le format SDKMesh. Visual Studio comprend aussi un pipeline de contenu qui compile plusieurs formats courants en fichiers CMO. Ces fichiers peuvent être chargés avec du code à partir du starter kit 3D de Visual Studio, ou à l’aide du DirectXTK.

Comment déboguer mes nuanceurs ?

Microsoft Visual Studio inclut des outils de diagnostic pour les graphiques DirectX. Voir Débogage des graphiques DirectX.

Quel est l’équivalent Direct3D 11 de la fonction x ?

Voir le mappage des fonctions de la rubrique Mapper les fonctionnalités DirectX 9 aux API DirectX 11.

Quel est l’équivalent DXGI_FORMAT du format de surface y ?

Voir le mappage des formats de surface de la rubrique Mapper les fonctionnalités DirectX 9 aux API DirectX 11.