http://go.microsoft.com/fwlink/?LinkID=615561
Droit d'auteur (c) Microsoft Corporation.
28 octobre 2024
Ce package contient le « DirectX Tool Kit », une collection de classes d'assistance pour écrire du code Direct3D 12 C++ pour les applications de plateforme Windows universelle (UWP) pour Windows 11 et Windows 10, les titres de jeux pour Xbox Series X|S et Xbox One et Win32. applications de bureau pour Windows 11 et Windows 10.
Ce code est conçu pour être construit avec Visual Studio 2019 (16.11), Visual Studio 2022, clang pour Windows v12 ou version ultérieure, ou MinGW 12.2. L’utilisation du SDK de mise à jour Windows 10 mai 2020 (19041) ou version ultérieure est requise pour Visual Studio.
Ces composants sont conçus pour fonctionner sans nécessiter aucun contenu de l'ancien SDK DirectX. Pour plus de détails, consultez Où se trouve le SDK DirectX ?.
Inc
Fichiers d'en-tête publics (dans l'espace de noms DirectX C++) :
Src
Audio
build
MakeSpriteFont et XWBTool se trouvent dans le kit d'outils DirectX pour DirectX 11
La documentation est disponible sur le wiki GitHub.
Tout le contenu et le code source de ce package sont soumis aux termes de la licence MIT.
Pour la dernière version de DirectXTK12, les rapports de bogues, etc., veuillez visiter le site du projet sur GitHub.
Aucune prise en charge des shaders d'effet Visual Studio Directed Graph Shader Language (DGSL) (c'est-à-dire DGSLEffect ). Les fichiers CMO sont chargés à l'aide de matériaux BasicEffect ou SkinnedEffect.
VertexTypes n'inclut pas VertexPositionNormalTangentColorTexture ou VertexPositionNormalTangentColorTextureSkinning qui étaient destinés à être utilisés avec le pipeline DGSL.
DirectX Tool Kit pour DirectX 11 prend en charge le niveau de fonctionnalité 9.x, tandis que DirectX 12 nécessite le niveau de fonctionnalité Direct3D 11.0. Il n'y a pas de pilotes DirectX 12 attendus pour les périphériques de niveau de fonctionnalités inférieur.
La bibliothèque suppose qu'elle est construite pour Windows 10 (alias _WIN32_WINNT=0x0A00
), elle utilise donc XAudio 2.9 et WIC2 ainsi que DirectX 12.
Le kit d'outils DirectX pour l'audio, le GamePad, le clavier, la souris et SimpleMath sont identiques à la version DirectX 11.
POUR LES CONSEILS DE SÉCURITÉ, consultez GitHub.
Pour un historique complet des modifications, consultez CHANGELOG.md.
Dans la version de juin 2024, le paramètre par défaut initialState
pour la fonction CreateUploadBuffer
dans BufferHelpers a été supprimé. Selon la couche de validation DirectX 12, le seul état initial valide pour un tampon de téléchargement est D3D12_RESOURCE_STATE_GENERIC_READ
.
À partir de la version de février 2023, l'implémentation de la classe Mouse du mouvement relatif de la souris a été mise à jour pour accumuler les modifications entre les appels à GetState
. Par défaut, chaque fois que vous appelez GetState
les deltas sont réinitialisés, ce qui fonctionne pour les scénarios dans lesquels vous utilisez un mouvement relatif mais n'appelez la méthode qu'une fois par image. Si vous l'appelez plus d'une fois par image, ajoutez un appel explicite à EndOfInputFrame
pour utiliser à la place un modèle de réinitialisation explicite.
Depuis la version de septembre 2022, la bibliothèque utilise des espaces de noms en ligne C++11 pour différents types portant les mêmes noms dans les versions DirectX 11 et DirectX 12 du DirectX Tool Kit . Cela fournit un nom unique au lien tel que DirectX::DX12::SpriteBatch
qui apparaîtra dans les messages de sortie de l'éditeur de liens. Cependant, dans la plupart des cas d'utilisation, il n'est pas nécessaire d'ajouter une résolution explicite de l'espace de noms DX12
dans le code client.
À partir de la version de juin 2021, cette bibliothèque crée les shaders HLSL avec Shader Model 6 via DXC. Voir cette page wiki pour plus d'informations. Les projets Microsoft GDK ont toujours utilisé le Shader Model 6.
À partir de la version de juin 2020, cette bibliothèque utilise des indicateurs de masque de bits enum typés conformément à la recommandation de la section 17.5.2.1.3 Bitmask types de la norme C++ . Cela peut avoir des conséquences sur le code client :
Vous ne pouvez pas transmettre le littéral 0
comme valeur de vos indicateurs. Au lieu de cela, vous devez utiliser la valeur d'énumération par défaut appropriée : AudioEngine_Default
, SoundEffectInstance_Default
, ModelLoader_Clockwise
, DDS_LOADER_DEFAULT
ou WIC_LOADER_DEFAULT
.
Utilisez le type enum au lieu de DWORD
si vous créez des valeurs d'indicateurs localement avec des opérations de masque de bits. Par exemple, WIC_LOADER_FLAGS flags = WIC_LOADER_DEFAULT; if (...) flags |= WIC_LOADER_FORCE_SRGB;
Les projets UWP et le projet de bureau classique Win10 incluent des configurations pour la plateforme ARM64. Leur construction nécessite l'installation de l'ensemble d'outils ARM64.
Pour le développement ARM64/AArch64, le compilateur VS 2022 est fortement recommandé par rapport à l'ensemble d'outils VS 2019. Le SDK Windows (26100 ou version ultérieure) n'est pas compatible avec VS 2019 pour le développement Win32 sur ARM64. Notez que la plateforme ARM32/AArch32 est obsolète .
Lors de l'utilisation de clang/LLVM pour la plate-forme ARM64/AArch64, le SDK Windows 11 (22000) ou version ultérieure est requis.
Le script CompileShaders.cmd
doit avoir des fins de ligne de style Windows (CRLF). S'il est modifié en fins de ligne de style Linux (LF), il peut ne pas parvenir à créer tous les shaders requis.
Pour toute question, envisagez d'utiliser Stack Overflow avec la balise directxtk ou le serveur Discord DirectX dans le canal dx12-developers .
Pour les rapports de bogues et les demandes de fonctionnalités, veuillez utiliser les problèmes GitHub pour ce projet.
Ce projet accueille les contributions et suggestions. La plupart des contributions nécessitent que vous acceptiez un contrat de licence de contributeur (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez effectivement, le droit d'utiliser votre contribution. Pour plus de détails, visitez https://cla.opensource.microsoft.com.
Lorsque vous soumettez une pull request, un robot CLA déterminera automatiquement si vous devez fournir un CLA et décorera le PR de manière appropriée (par exemple, vérification du statut, commentaire). Suivez simplement les instructions fournies par le bot. Vous n’aurez besoin de le faire qu’une seule fois pour tous les dépôts utilisant notre CLA.
Les tests pour les nouvelles fonctionnalités doivent également être soumis sous forme de PR au référentiel Test Suite.
Ce projet a adopté le code de conduite Microsoft Open Source. Pour plus d'informations, consultez la FAQ sur le code de conduite ou contactez [email protected] pour toute question ou commentaire supplémentaire.
Ce projet peut contenir des marques ou des logos pour des projets, des produits ou des services. L'utilisation autorisée des marques ou logos Microsoft est soumise et doit respecter les directives relatives aux marques et aux marques de Microsoft. L'utilisation des marques ou logos Microsoft dans les versions modifiées de ce projet ne doit pas prêter à confusion ni impliquer le parrainage de Microsoft. Toute utilisation de marques ou de logos tiers est soumise aux politiques de ces tiers.
Le kit d'outils DirectX pour DirectX 11 est l'œuvre de Shawn Hargreaves et Chuck Walbourn, avec les contributions d'Aaron Rodriguez Hernandez et Dani Roman.
Le kit d'outils DirectX pour DirectX 12 est l'œuvre de Pete Lewis, Justin Saunders et Chuck Walbourn, largement basé sur le kit d'outils DirectX pour DirectX 11.
Merci à Shanon Drone pour le format de fichier SDKMESH.
Merci à Adrian Tsai pour la mise en œuvre de la sphère géodésique.
Merci à Garrett Serack pour son aide dans la création des packages NuGet pour DirectX Tool Kit.
Merci à Pete Lewis et Justin Saunders pour l'implémentation des shaders à mappage normal et PBR.
Merci à Travis Johnson pour le support mGPU.
Merci à Roberto Sonnino pour son aide sur le format CMO et l'animation du VS Starter Kit.
Merci à Richie Meyer pour sa contribution à la prise en charge des événements de suivi de la mémoire personnalisée et de l'allocation de type Xbox PIX.
Merci à Andrew Farrier et Scott Matloff pour leur aide continue dans la révision du code.