Réponses aux questions fréquemment posées sur le portage de jeux vers plateforme Windows universelle (UWP).
Le portage de mon jeu va-t-il être un ensemble d’opérations de recherche et de remplacement sur les méthodes d’API, ou dois-je planifier un processus de portage plus réfléchi ?
Direct3D 11 est une mise à niveau significative de Direct3D 9. Il existe plusieurs changements de paradigme, notamment des API distinctes pour l’adaptateur graphique virtualisé et son contexte, ainsi qu’une nouvelle couche de polymorphisme pour les ressources d’appareil. Votre jeu peut toujours utiliser du matériel graphique de la même façon, mais vous devez en savoir plus sur la nouvelle architecture d’API Direct3D 11 et mettre à jour chaque partie de votre code graphique pour utiliser les composants d’API appropriés. Consultez les concepts et considérations relatifs au portage.
Quel est le nouveau contexte d’appareil pour lequel ? Dois-je remplacer mon appareil Direct3D 9 par l’appareil Direct3D 11, le contexte de l’appareil ou les deux ?
L’appareil Direct3D est maintenant utilisé pour créer des ressources en mémoire vidéo, tandis que le contexte de l’appareil est utilisé pour définir l’état du pipeline et générer des commandes de rendu. Pour plus d’informations, consultez : Quelles sont les modifications les plus importantes depuis Direct3D 9 ?
Dois-je mettre à jour mon minuteur de jeu pour UWP ?
QueryPerformanceCounter, ainsi que QueryPerformanceFrequency, est toujours le meilleur moyen d’implémenter un minuteur de jeu pour les applications UWP.
Vous devez connaître une nuance avec les minuteurs et le cycle de vie de l’application UWP. Suspendre/reprendre est différent d’un joueur re-lançant un jeu de bureau, car votre jeu reprend un instantané dans le temps à partir du moment où le jeu a été joué pour la dernière fois. Si une grande quantité de temps est passée , par exemple, quelques semaines - certaines implémentations de minuteur de jeu peuvent ne pas se comporter correctement. Vous pouvez utiliser des événements de cycle de vie d’application pour réinitialiser votre minuteur lorsque le jeu reprend.
Les jeux qui utilisent toujours l’instruction RDTSC doivent être mis à niveau. Voir minutage de jeu et processeurs multicœurs.
Mon code de jeu est basé sur D3DX et DXUT. Existe-t-il quelque chose qui peut m’aider à migrer mon code ?
Le projet de communauté DirectX Tool Kit (DirectXTK) propose des classes d’assistance à utiliser avec Direct3D 11.
Comment faire conserver des chemins de code pour le bureau et le Microsoft Store ?
La série d’articles de Chuck Walbourn intitulée « Techniques de codage à double utilisation pour jeux » propose des conseils sur le partage de code entre le bureau et les chemins de code du Microsoft Store.
Comment faire charger des ressources d’image dans mon application UWP DirectX ?
Il existe deux chemins d’ACCÈS d’API pour le chargement d’images :
- Le pipeline de contenu convertit des images en fichiers DDS utilisés comme ressources de texture Direct3D. Consultez Utilisation des ressources 3D dans votre jeu ou votre application.
- Le composant d’acquisition d’images Windows peut être utilisé pour charger des images à partir de différents formats, et peut être utilisé pour les bitmaps Direct2D ainsi que pour les ressources de texture Direct3D.
Vous pouvez également utiliser DDSTextureLoader et WICTextureLoader, à partir de DirectXTK ou DirectXTex.
Où est le kit SDK DirectX ?
Le Kit de développement logiciel (SDK) DirectX est inclus dans le kit SDK Windows. Le kit de développement logiciel (SDK) DirectX le plus récent qui était distinct du SDK Windows était en juin 2010. Les exemples Direct3D se trouvent dans la galerie de codes, ainsi que les autres exemples d’application 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 n’ont aucun composant DLL (par exemple DirectXMath). Tous les composants de l’API Direct3D que les applications UWP peuvent utiliser seront déjà disponibles pour votre jeu ; vous n’avez pas besoin de les redistribuer.
Les applications de bureau Win32 utilisent toujours DirectSetup. Par conséquent, si vous mettez également à niveau la version de bureau de votre jeu, voir Déploiement Direct3D 11 pour les développeurs de jeux.
Est-il possible de mettre à jour mon code de bureau vers DirectX 11 avant de passer des effets ?
Consultez les effets de la mise à jour direct3D 11. Les effets 11 permettent de supprimer les dépendances sur les en-têtes du Kit de développement logiciel (SDK) DirectX hérités ; elle est destinée à être utilisée comme aide de portage et ne peut être utilisée qu’avec les applications de bureau.
Existe-t-il un chemin d’accès pour porter mon jeu DirectX 8 vers UWP ?
Oui :
- Lecture de la conversion en Direct3D 9.
- Assurez-vous que votre jeu n’a aucun reste du pipeline fixe : consultez Fonctionnalités déconseillées.
- Ensuite, prenez le chemin de portage DirectX 9 : Port de D3D 9 vers UWP.
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. Consultez Migration vers Direct3D 11.
Comment faire choisir l’appareil d’affichage approprié dans un système multi-moniteur ?
L’utilisateur sélectionne le moniteur sur lequel votre application s’affiche. Laissez Windows fournir l’adaptateur correct 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 faire activer l’anticrénelage ?
L’anticrénelage (multisampling) est activé lorsque vous créez l’appareil Direct3D. Énumérez la prise en charge multisampling en appelant CheckMultisampleQualityLevels, puis définissez des options multisample dans la structure DXGI_SAMPLE_DESC lorsque vous appelez CreateSurface.
Mon jeu s’affiche à l’aide du rendu multithreading et/ou différé. Que dois-je savoir pour Direct3D 11 ?
Pour commencer, consultez Présentation de la multithreading dans Direct3D 11 . Pour obtenir la liste des principales différences, consultez Les 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ù puis-je en savoir plus sur le pipeline programmable depuis Direct3D 9 ?
Consultez les rubriques suivantes :
Que dois-je utiliser au lieu du format de fichier .x pour mes modèles ?
Même si nous n’avons pas de remplacement officiel pour le format de fichier .x, de nombreux exemples utilisent le format SDKMesh. Visual Studio dispose également d’un pipeline de contenu qui compile plusieurs formats populaires dans des fichiers CMO qui peuvent être chargés avec du code à partir du kit de démarrage Visual Studio 3D ou chargés à l’aide de DirectXTK.
Comment faire déboguer mes nuanceurs ?
Microsoft Visual Studio inclut des outils de diagnostic pour les graphiques DirectX. Consultez Débogage de Graphiques DirectX.
Qu’est-ce que l’équivalent Direct3D 11 pour la fonction x ?
Consultez le mappage de fonction fourni dans les fonctionnalités Mapper DirectX 9 aux API DirectX 11.
Qu’est-ce que DXGI\_FORMAT équivalent au format surface y ?
Consultez le mappage de format de surface fourni dans les fonctionnalités Mapper DirectX 9 aux API DirectX 11.