http://go.microsoft.com/fwlink/?LinkID=615561
Urheberrecht (c) Microsoft Corporation.
28. Oktober 2024
Dieses Paket enthält das „DirectX Tool Kit“, eine Sammlung von Hilfsklassen zum Schreiben von Direct3D 12 C++-Code für Universal Windows Platform (UWP)-Apps für Windows 11 und Windows 10, Spieletitel für Xbox Series X|S und Xbox One sowie Win32 Desktop-Anwendungen für Windows 11 und Windows 10.
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
Öffentliche Headerdateien (im DirectX C++-Namespace):
Src
Audio
build
MakeSpriteFont und XWBTool finden Sie im DirectX Tool Kit für DirectX 11
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 DirectXTK12, Fehlerberichte usw. besuchen Sie bitte die Projektseite auf GitHub.
Keine Unterstützung für Visual Studio Directed Graph Shader Language (DGSL)-Effekt-Shader (d. h . DGSLEffect ). CMO-Dateien werden mit BasicEffect- oder SkinnedEffect-Materialien geladen.
VertexTypes enthält nicht VertexPositionNormalTangentColorTexture oder VertexPositionNormalTangentColorTextureSkinning, die für die Verwendung mit der DGSL-Pipeline vorgesehen waren.
Das DirectX Tool Kit für DirectX 11 unterstützt Feature Level 9.x, während DirectX 12 Direct3D Feature Level 11.0 erfordert. Es werden keine DirectX 12-Treiber für Geräte mit niedrigerem Funktionsumfang erwartet.
Die Bibliothek geht davon aus, dass sie für Windows 10 erstellt wird (auch bekannt als _WIN32_WINNT=0x0A00
), sodass sie XAudio 2.9 und WIC2 sowie DirectX 12 verwendet.
Das DirectX Tool Kit für Audio, GamePad, Tastatur, Maus und SimpleMath ist identisch mit der DirectX 11-Version.
SICHERHEITSHINWEISE finden Sie auf GitHub.
Eine vollständige Änderungshistorie finden Sie unter CHANGELOG.md.
In der Version vom Juni 2024 wurde der Standardparameter initialState
für die Funktion CreateUploadBuffer
in BufferHelpers entfernt. Gemäß der DirectX 12-Validierungsschicht ist der einzige gültige Anfangszustand für einen Upload-Puffer D3D12_RESOURCE_STATE_GENERIC_READ
.
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::DX12::SpriteBatch
bereitgestellt, der in Linker-Ausgabemeldungen angezeigt wird. In den meisten Anwendungsfällen besteht jedoch keine Notwendigkeit, eine explizite DX12
Namespace-Auflösung im Client-Code hinzuzufügen.
Ab der Veröffentlichung vom Juni 2021 erstellt diese Bibliothek die HLSL-Shader mit Shader Model 6 über DXC. Weitere Informationen finden Sie auf dieser Wiki-Seite. Die Microsoft GDK-Projekte verwenden seit jeher Shader Model 6.
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
, DDS_LOADER_DEFAULT
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.
Erwägen Sie bei Fragen die Verwendung von Stack Overflow mit dem Tag „directxtk“ oder den DirectX Discord Server im Kanal „dx12-developers“ .
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 häufig gestellten Fragen 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 Verwendung von Marken oder Logos Dritter unterliegt den Richtlinien dieser Drittanbieter.
Das DirectX Tool Kit für DirectX 11 ist die Arbeit von Shawn Hargreaves und Chuck Walbourn, mit Beiträgen von Aaron Rodriguez Hernandez und Dani Roman.
Das DirectX Tool Kit für DirectX 12 ist die Arbeit von Pete Lewis, Justin Saunders und Chuck Walbourn und basiert stark auf dem DirectX Tool Kit für DirectX 11.
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 Pete Lewis und Justin Saunders für die Implementierung der Normal-Mapping- und PBR-Shader.
Vielen Dank an Travis Johnson für die mGPU-Unterstützung.
Vielen Dank an Roberto Sonnino für seine Hilfe beim CMO-Format und der VS Starter Kit-Animation.
Vielen Dank an Richie Meyer für seinen Beitrag zur Unterstützung von benutzerdefiniertem Xbox PIX-Speicher und Typzuordnungsverfolgungsereignissen.
Vielen Dank an Andrew Farrier und Scott Matloff für ihre fortlaufende Hilfe bei Codeüberprüfungen.