Share via


Planifier votre portage DirectX

Résumé

Planifiez le portage de votre jeu DirectX 9 sur DirectX 11 et la plateforme Windows universelle (UWP) : mettez à niveau votre code graphique et préparez votre jeu pour l’environnement Windows Runtime.

Planifier le portage du code graphique

Avant de commencer le portage de votre jeu sur WPU, il est essentiel de vous assurer que ce jeu ne comporte plus d’éléments issus de Direct3D 8. Vérifiez notamment que votre jeu ne contient plus de références au pipeline de fonctions fixes. Pour obtenir la liste complète des fonctionnalités déconseillées, y compris le pipeline de fonctions fixes, voir Fonctionnalités déconseillées.

La mise à niveau de Direct3D 9 vers Direct3D 11 ne se limite pas à une simple opération de recherche et remplacement. Vous devez savoir en quoi diffèrent ces versions sur le plan du périphérique Direct3D, du contexte de périphérique et de l’infrastructure graphique, mais aussi vous documenter sur les autres modifications majeures qui ont été apportées depuis la version Direct3D 9. Dans cette optique, nous vous recommandons de commencer par lire les autres rubriques de cette section.

Vous devez remplacer les bibliothèques d’applications auxiliaires D3DX et DXUT par vos propres bibliothèques d’applications auxiliaires ou par des outils de la communauté. Pour plus d’informations, voir la section Mappage des fonctionnalités.

Remarque Vous pouvez utiliser le Kit de ressources DirectX ou DirectXTex pour remplacer certaines fonctionnalités qui étaient auparavant fournies par D3DX et DXUT.

 

Les nuanceurs écrits en langage d’assembly doivent être mis à niveau vers HLSL à l’aide de la fonctionnalité 9_1 ou 9_3 du modèle de nuanceur 4, et les nuanceurs écrits pour la bibliothèque d’effets devront être mis à jour vers une version plus récente de la syntaxe HLSL. Pour plus d’informations, voir la section Mappage des fonctionnalités.

Familiarisez-vous avec les différents niveaux de fonctionnalité Direct3D. Ces niveaux de fonctionnalité permettent de classer les divers matériels vidéo selon des ensembles définis de fonctionnalités prises en charge. Chaque ensemble correspond globalement à une version de Direct3D (versions 9.1 à 11.2). Tous les niveaux de fonctionnalité s’appliquent à l’API DirectX 11.

Planifier le portage du code d’interface utilisateur Win32 sur CoreWindow

Les applications UWP s’exécutent dans une fenêtre créée pour un conteneur d’application, appelée CoreWindow. Votre jeu contrôle la fenêtre en hériter d’IFrameworkView, qui nécessite moins de détails d’implémentation qu’une fenêtre de bureau. La boucle principale de votre jeu sera définie dans la méthode IFrameworkView::Run.

Le cycle de vie d’une application UWP diffère de celui d’une application de bureau. Vous devez prévoir des enregistrements fréquents du jeu. En effet, durant le déclenchement d’un événement de suspension, votre application ne dispose que d’un court délai pour arrêter l’exécution du code, et vous voulez vous assurer que le joueur pourra revenir à l’endroit du jeu où il était initialement aussitôt après la reprise de l’application. Vous devez enregistrer votre jeu aussi souvent que nécessaire pour permettre au joueur de continuer sa partie normalement après la reprise, tout en limitant le nombre d’enregistrements afin de ne pas dégrader la fréquence d’images ni provoquer d’interruption de son dans le jeu. Votre jeu aura peut-être besoin de charger son état lorsqu’il quittera l’état « arrêté ».

DirectXMath peut avantageusement remplacer D3DXMath et XNAMath, en particulier si vous avez besoin d’une bibliothèque de fonctions mathématiques. DirectXMath fournit des types de données rapides et portables, ainsi que des types adaptés et groupés pour être utilisés avec des nuanceurs.

Les bibliothèques natives telles que l’API verrouillée ont été développées pour prendre en charge les intrinsèques Arm. Si votre jeu fait appel à des API à blocage, vous pouvez continuer à les utiliser dans DirectX 11 et UWP.

Nos modèles et exemples de code utilisent de nouvelles fonctionnalités C++ que vous ne connaissez peut-être pas encore. Par exemple, les méthodes asynchrones sont utilisées avec des expressions lambda pour charger des ressources Direct3D sans bloquer le thread d’interface utilisateur.

Les deux concepts suivants vous seront souvent utiles :

  • Les références managées (l’opérateur ^) et les classes managées (classes de référence) sont des éléments fondamentaux de Windows Runtime. Vous devez utiliser des classes de référence managées pour interagir avec Windows Runtime composants, par exemple IFrameworkView (plus d’informations à ce sujet dans la procédure pas à pas).
  • Lorsque vous utilisez des interfaces COM Direct3D 11, utilisez le type de modèle Microsoft::WRL::ComPtr pour faciliter l’utilisation des pointeurs COM.