Urheberrecht (c) Microsoft Corporation.
28. Oktober 2024
Dieses Paket enthält das „DirectX Tool Kit“, eine Sammlung von Hilfsklassen zum Schreiben von Direct3D 11 C++-Code für Universal Windows Platform (UWP)-Apps für Windows 11, Windows 10, Xbox One und Win32-Desktopanwendungen für Windows 7 Service Pack 1 oder später.
Dieser Code ist für die Erstellung mit Visual Studio 2019 (16.11), Visual Studio 2022, Clang für Windows v12 oder höher oder MinGW 12.2 konzipiert. Für Visual Studio ist die Verwendung des Windows 10 May 2020 Update SDK (19041) oder höher erforderlich.
Diese Komponenten sind so konzipiert, dass sie funktionieren, ohne dass Inhalte aus dem alten DirectX SDK erforderlich sind. Einzelheiten finden Sie unter Wo ist das DirectX SDK?.
Inc
Audio.h – Low-Level-Audio-API mit XAudio2 (öffentlicher DirectXTK for Audio-Header)
BufferHelpers.h – C++-Helfer zum Erstellen von D3D-Ressourcen aus CPU-Daten
CommonStates.h – Factory, die häufig verwendete D3D-Zustandsobjekte bereitstellt
DDSTextureLoader.h – leichter Texturlader für DDS-Dateien
DirectXHelpers.h – verschiedene C++-Helfer für die D3D-Programmierung
Effects.h – Satz integrierter Shader für allgemeine Rendering-Aufgaben
GamePad.h – Gamepad-Controller-Helfer mit XInput, Windows.Gaming.Input oder GameInput
GeometricPrimitive.h – zeichnet Grundformen wie Würfel und Kugeln
GraphicsMemory.h – Helfer zur Verwaltung der dynamischen Grafikspeicherzuweisung
Keyboard.h – Hilfsmittel zur Verfolgung des Tastaturstatus
Model.h – zeichnet Netze, die aus .CMO-, .SDKMESH- oder .VBO-Dateien geladen wurden
Mouse.h – Maushelfer
PostProcess.h – Satz integrierter Shader für allgemeine Nachbearbeitungsvorgänge
PrimitiveBatch.h – einfache und effiziente Möglichkeit, Benutzerprimitive zu zeichnen
ScreenGrab.h – leichter Screenshot-Sparer
SimpleMath.h – vereinfachter C++-Wrapper für DirectXMath
SpriteBatch.h – einfaches und effizientes 2D-Sprite-Rendering
SpriteFont.h – Bitmap-basierte Textwiedergabe
VertexTypes.h – Strukturen für häufig verwendete Vertex-Datenformate
WICTextureLoader.h – WIC-basierter Texturlader für Bilddateien
XboxDDSTextureLoader.h – Xbox One-exklusive Apps-Variante von DDSTextureLoader
Öffentliche Headerdateien (im DirectX C++-Namespace):
Src
DirectXTK-Quelldateien und interne Implementierungsheader
Audio
DirectXTK für Audio-Quelldateien und interne Implementierungsheader
MakeSpriteFont
Befehlszeilentool zum Generieren binärer Ressourcen zur Verwendung mit SpriteFont
XWBTool
Befehlszeilentool zum Erstellen von Wave-Bänken im XACT-Stil zur Verwendung mit DirectXTK für die WaveBank-Klasse von Audio
build
Enthält YAML-Dateien für die Build-Pipelines sowie einige verschiedene Build-Dateien und Skripte.
Die Dokumentation ist im GitHub-Wiki verfügbar.
Alle Inhalte und Quellcodes für dieses Paket unterliegen den Bedingungen der MIT-Lizenz.
Für die neueste Version von DirectXTK, Fehlerberichte usw. besuchen Sie bitte die Projektseite auf GitHub.
SICHERHEITSHINWEISE finden Sie auf GitHub.
Eine vollständige Änderungshistorie finden Sie unter CHANGELOG.md.
Ab der Veröffentlichung vom Februar 2023 wurde die Mouse-Klassenimplementierung der relativen Mausbewegung aktualisiert, um Änderungen zwischen Aufrufen von GetState
zu akkumulieren. Standardmäßig werden die Deltas jedes Mal zurückgesetzt, wenn Sie GetState
aufrufen. Dies funktioniert für Szenarien, in denen Sie relative Bewegung verwenden, die Methode aber nur einmal pro Frame aufrufen. Wenn Sie es mehr als einmal pro Frame aufrufen, fügen Sie einen expliziten Aufruf von EndOfInputFrame
hinzu, um stattdessen ein explizites Rücksetzmodell zu verwenden.
Ab der Veröffentlichung vom September 2022 nutzt die Bibliothek C++11-Inline-Namespaces für unterschiedliche Typen, die in der DirectX 11- und DirectX 12-Version des DirectX Tool Kit dieselben Namen haben. Dadurch wird ein Link-eindeutiger Name wie DirectX::DX11::SpriteBatch
bereitgestellt, der in Linker-Ausgabemeldungen angezeigt wird. In den meisten Anwendungsfällen besteht jedoch keine Notwendigkeit, eine explizite DX11
Namespace-Auflösung im Client-Code hinzuzufügen.
Ab der Version vom Juli 2022 ist der bool forceSRGB
Parameter für DDSTextureLoader Ex
-Funktionen nun ein DDS_LOADER_FLAGS
typisierter Enum-Bitmasken-Flag-Parameter. Dies kann bahnbrechende Auswirkungen auf den Clientcode haben. Ersetzen Sie true
durch DDS_LOADER_FORCE_SRGB
und false
durch DDS_LOADER_DEFAULT
.
Ab der Veröffentlichung vom Oktober 2021 unterstützt der DGSLEffect das Skinning nicht mehr direkt. Verwenden Sie stattdessen SkinnedDGSLEffect , das von DGSLEffect abgeleitet ist.
Ab der Version vom Juni 2020 verwendet diese Bibliothek typisierte Enum-Bitmaskenflags gemäß der Empfehlung des C++-Standards Abschnitt 17.5.2.1.3 Bitmaskentypen . Dies kann Auswirkungen auf den Clientcode haben:
Sie können das 0
Literal nicht als Flag-Wert übergeben. Stattdessen müssen Sie den entsprechenden Standard-Enumerationswert verwenden: AudioEngine_Default
, SoundEffectInstance_Default
, ModelLoader_Clockwise
oder WIC_LOADER_DEFAULT
.
Verwenden Sie den Enum-Typ anstelle von DWORD
, wenn Sie Flag-Werte lokal mit Bitmaskenoperationen erstellen. Zum Beispiel: WIC_LOADER_FLAGS flags = WIC_LOADER_DEFAULT; if (...) flags |= WIC_LOADER_FORCE_SRGB;
Die UWP-Projekte und das klassische Win10-Desktop-Projekt enthalten Konfigurationen für die ARM64-Plattform. Für deren Erstellung ist die Installation des ARM64-Toolsets erforderlich.
Für die ARM64/AArch64-Entwicklung wird der VS 2022-Compiler gegenüber dem VS 2019-Toolset dringend empfohlen. Das Windows SDK (26100 oder höher) ist nicht mit VS 2019 für Win32 bei der ARM64-Entwicklung kompatibel. Beachten Sie, dass die ARM32/AArch32-Plattform veraltet ist .
Bei Verwendung von clang/LLVM für die ARM64/AArch64-Plattform ist das Windows 11 SDK (22000) oder höher erforderlich.
Das CompileShaders.cmd
-Skript muss über Zeilenenden im Windows-Stil (CRLF) verfügen. Wenn es auf Zeilenenden im Linux-Stil (LF) geändert wird, kann es sein, dass nicht alle erforderlichen Shader erstellt werden.
Für die Xbox One-Unterstützung für DirectX 11 ist das ältere Xbox One XDK erforderlich. Die erforderlichen Projektdateien finden Sie in den Versionen vom Februar 2023 oder früheren Versionen des DirectX Tool Kit .
Ab der Veröffentlichung vom Oktober 2024 unterstützt das Befehlszeilentool xwbtool auch lange Optionen im GNU-Stil mit --
. Alle vorhandenen Schalter funktionieren weiterhin. MakeSpriteFont unterstützt nur --version
und --help
für Parameter im POSIX-Stil.
Bei Fragen können Sie Stack Overflow mit dem Tag „directxtk“ oder den DirectX Discord Server im Kanal „dx9-dx11-developers“ verwenden.
Für Fehlerberichte und Funktionsanfragen nutzen Sie bitte GitHub Issues für dieses Projekt.
Dieses Projekt freut sich über Beiträge und Vorschläge. Für die meisten Beiträge müssen Sie einem Contributor License Agreement (CLA) zustimmen, in dem Sie erklären, dass Sie das Recht haben, uns die Rechte zur Nutzung Ihres Beitrags zu gewähren, und dies auch tatsächlich tun. Weitere Informationen finden Sie unter https://cla.opensource.microsoft.com.
Wenn Sie eine Pull-Anfrage einreichen, ermittelt ein CLA-Bot automatisch, ob Sie eine CLA bereitstellen müssen, und schmückt die PR entsprechend (z. B. Statusprüfung, Kommentar). Folgen Sie einfach den Anweisungen des Bots. Sie müssen dies nur einmal für alle Repos tun, die unsere CLA verwenden.
Tests für neue Funktionen sollten auch als PR an das Test Suite-Repository übermittelt werden.
Dieses Projekt hat den Microsoft Open Source Verhaltenskodex übernommen. Weitere Informationen finden Sie in den FAQ zum Verhaltenskodex oder wenden Sie sich bei weiteren Fragen oder Kommentaren an [email protected].
Dieses Projekt kann Marken oder Logos für Projekte, Produkte oder Dienstleistungen enthalten. Die autorisierte Nutzung von Microsoft-Marken oder -Logos unterliegt den Marken- und Markenrichtlinien von Microsoft und muss diesen entsprechen. Die Verwendung von Microsoft-Marken oder -Logos in geänderten Versionen dieses Projekts darf keine Verwirrung stiften oder eine Sponsorschaft durch Microsoft implizieren. Jegliche Nutzung von Marken oder Logos Dritter unterliegt den Richtlinien dieser Drittanbieter.
Das DirectX Tool Kit ist die Arbeit von Shawn Hargreaves und Chuck Walbourn, mit Beiträgen von Aaron Rodriguez Hernandez und Dani Roman.
Vielen Dank an Shanon Drone für das SDKMESH-Dateiformat.
Vielen Dank an Adrian Tsai für die Implementierung der geodätischen Kugel.
Vielen Dank an Garrett Serack für seine Hilfe beim Erstellen der NuGet-Pakete für DirectX Tool Kit.
Vielen Dank an Roberto Sonnino für seine Hilfe beim CMO
, beim DGSL-Rendering und bei der VS Starter Kit-Animation.
Vielen Dank an Pete Lewis und Justin Saunders für die Implementierung der Normal-Mapping- und PBR-Shader.
Vielen Dank an Andrew Farrier und Scott Matloff für ihre fortlaufende Hilfe bei Codeüberprüfungen.