http://go.microsoft.com/fwlink/?LinkId=248926
Droit d'auteur (c) Microsoft Corporation.
28 octobre 2024
Ce package contient DirectXTex, une bibliothèque source partagée pour lire et écrire des fichiers .DDS
et effectuer diverses opérations de traitement de contenu de texture, notamment le redimensionnement, la conversion de format, la génération de mip-map, la compression de blocs pour les ressources de texture d'exécution Direct3D et la cartographie de hauteur en normal. conversion de carte. Cette bibliothèque utilise les API Windows Image Component (WIC). Il comprend également des lecteurs et graveurs .TGA
et .HDR
car ces formats de fichiers image sont couramment utilisés pour les pipelines de traitement de contenu de texture, mais ne sont actuellement pas pris en charge par un codec WIC intégré.
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. Il peut également être créé pour le sous-système Windows pour Linux à l'aide de GCC 11 ou version ultérieure.
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 ?.
DirectXTex
La majorité des fichiers d'en-tête ici sont destinés uniquement à l'implémentation interne de la bibliothèque (
BC.h
,BCDirectCompute.h
,DDS.h
,DirectXTexP.h
, etc.). SeulsDirectXTex.h
etDirectXTex.inl
sont considérés comme l'en-tête « public » de la bibliothèque.
Auxiliary
Common
Texconv
Cet exemple DirectXTex est une implémentation de l'utilitaire de texture de ligne de commande texconv du SDK DirectX utilisant DirectXTex plutôt que D3DX.
Il prend en charge les mêmes arguments que l’ancien utilitaire SDK DirectX de Texture Conversion Tool Extended ( texconvex.exe
). Les principales différences sont que les arguments -10
et -11
ne sont pas applicables et que les noms de filtres ( POINT
, LINEAR
, CUBIC
, FANT
ou BOX
, TRIANGLE
, *_DITHER
, *_DITHER_DIFFUSION
). Cela inclut également la prise en charge du format bitmap JPEG XR (HD Photo).
Texassemble
Texdiag
DDSView
DDSTextureLoader
ScreenGrab
WICTextureLoader
DDSTextureLoader11, ScreenGrab11 et WICTextureLoader11 sont des versions « autonomes » des mêmes modules fournis dans le kit d'outils DirectX pour DX11.
DDSTextureLoader12, ScreenGrab12 et WICTextureLoader12 sont des versions « autonomes » des mêmes modules fournis dans le kit d'outils DirectX pour DX12.
build
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 DirectXTex, les rapports de bogues, etc., veuillez visiter le site du projet sur GitHub.
POUR LES CONSEILS DE SÉCURITÉ, consultez GitHub.
Pour un historique complet des modifications, consultez CHANGELOG.md.
À partir de la version de juillet 2022, le paramètre bool forceSRGB
pour les fonctions CreateTextureEx et CreateShaderResourceViewEx est désormais un paramètre d'indicateur de masque de bits enum typé CREATETEX_FLAGS
. Cela peut avoir un impact sur le code client. Remplacez true
par CREATETEX_FORCE_SRGB
et false
par CREATETEX_DEFAULT
.
À 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++ . Ceci est cohérent avec l’utilisation par Direct3D 12 de la macro DEFINE_ENUM_FLAG_OPERATORS
. 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 : CP_FLAGS_NONE
, DDS_FLAGS_NONE
, WIC_FLAGS_NONE
, TEX_FR_ROTATE0
, TEX_FILTER_DEFAULT
, TEX_FILTER_DEFAULT
, TEX_FILTER_DEFAULT
, CNMAP_DEFAULT
ou CNMAP_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, DDS_FLAGS flags = DDS_FLAGS_NONE; if (...) flags |= DDS_FLAGS_EXPAND_LUMINANCE;
Dans les cas où certains drapeaux se chevauchent, vous pouvez utiliser le |
pour combiner les types pertinents : les modes de filtre TEX_FILTER_FLAGS
se combinent avec WIC_FLAGS
, les drapeaux TEX_FILTER_FLAGS
sRGB se combinent avec TEX_PMALPHA_FLAGS
ou TEX_COMPRESS_FLAGS
. Aucun autre opérateur au niveau du bit n'est défini. Par exemple, WIC_FLAGS wicFlags = WIC_FLAGS_NONE | TEX_FILTER_CUBIC;
WICTextureLoader ne peut pas charger les fichiers .TGA
ou .HDR
à moins que le système ne dispose d'un codec WIC tiers installé. Vous devez utiliser la bibliothèque DirectXTex pour la prise en charge du format de fichier TGA/HDR sans recourir à un codec WIC complémentaire.
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.
Depuis la version d'octobre 2024, les outils de ligne de commande prennent également en charge les options longues de style GNU utilisant --
. Tous les commutateurs existants continuent de fonctionner, mais certaines des options -
sont désormais obsolètes selon ce tableau :
texassembler | texconv | texdiag | |||
---|---|---|---|---|---|
-carte des tons | --tonemap | -badtails | --mauvaises queues | -badtails | --mauvaises queues |
-bgcolor | --gif-bg-couleur | -fixbc4x4 | --fix-bc-4x4 | -ignorémips | --ignore-mips |
-tourner | --tourner | -ignorémips | --ignore-mips | -permissif | --permissif |
-stripmips | --strip-mips | -inversion | --inverser-y | -ciblex | --cible-x |
-garder la couverture | --garder la couverture | ||||
-permissif | --permissif | ||||
-reconstruire | --reconstruire-z | ||||
-rotation de couleur | --rotation-couleur | ||||
-singleproc | --single-proc | ||||
-tourner | --tourner | ||||
-tgazeroalpha | --tga-zéro-alpha | ||||
-timing | --timing | ||||
-carte de tons | --tonemap | ||||
-sans Wi-Fi | --wic-sans perte | ||||
-wicmulti | --wic-multiframe | ||||
-x2bias | --x2-biais |
Pour toute question, envisagez d'utiliser Stack Overflow avec la balise directxtk ou le serveur Discord DirectX dans le canal dx12-developers ou dx9-dx11-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.
La bibliothèque DirectXTex est l'œuvre de Chuck Walbourn, avec les contributions de Matt Lee, Xin Huang, Craig Peeper et des nombreux autres ingénieurs Microsoft qui ont développé la bibliothèque d'utilitaires D3DX au fil des ans.
Merci à Paul Penson pour son aide dans la mise en œuvre de MemoryStreamOnBlob
.
Merci à Andrew Farrier et Scott Matloff pour leur aide continue dans la révision du code.
Merci à Park DongHa pour sa contribution aux fonctions auxiliaires JPEG/PNG.