# DirectX Tool Kit for DirectX 11 http://go.microsoft.com/fwlink/?LinkId=248929 Release available for download on [GitHub](https://github.com/microsoft/DirectXTK/releases) ## Release History ### September 30, 2020 * GamePad class updated with ``c_MostRecent`` constant for ``-1`` player index special behavior * Fixed bug in WICTextureLoader that resulted in ``WINCODEC_ERR_INSUFFICIENTBUFFER`` for some resize requests * Fixed ``.wav`` file reading of MIDILoop chunk * Minor code cleanup ### August 15, 2020 * EnvironmentMapEffect now supports cubemaps, spherical, and dual-parabola environment maps * Code review and project updates ### July 2, 2020 * Improved SpriteFont drawing performance in Debug builds * Regenerated shaders using Windows 10 May 2020 Update SDK (19041) * Code cleanup for some new VC++ 16.7 warnings and static code analysis * CMake updates ### June 1, 2020 * Added BufferHelpers header with functions **CreateStaticBuffer** / **CreateTextureFromMemory**, and the **ConstantBuffer** helper class * Added **IsPowerOf2** and **CreateInputLayoutFromEffect** helpers to DirectXHelpers * Converted to typed enum bitmask flags (see release notes for details on this potential *breaking change*) + ``AUDIO_ENGINE_FLAGS``, ``ModelLoaderFlags``, ``SOUND_EFFECT_INSTANCE_FLAGS``, and ``WIC_LOADER_FLAGS`` * WICTextureLoader for ``PNG`` codec now checks ``gAMA`` chunk to determine colorspace if the ``sRGB`` chunk is not found for legacy sRGB detection. * ``WIC_LOADER_SRGB_DEFAULT`` flag added when loading image via WIC without explicit colorspace metadata * Retired XAudio 2.7 for *DirectX Tool Kit for Audio*. Use XAudio 2.9, XAudio 2.8, or XAudio2Redist instead. * CMake project updates ### May 10, 2020 * WICTextureLoader updated with new loader flags: ``FORCE_RGBA32``, ``FIT_POW2``, and ``MAKE_SQUARE`` * SimpleMath no longer forces use of d3d11.h or d3d12.h (can be used with d3d9.h for example) * *DirectX Tool Kit for Audio* updated with **SoundStreamInstance** class for async I/O playback from XACT-style streaming wavebanks * Code cleanup * xwbtool: Updated with ``-l`` switch for case-sensitive file systems ### April 3, 2020 * SpriteFont **MeasureString** / **MeasureDrawBounds** fixes for !ignoreWhitespace * Code review (``constexpr`` / ``noexcept`` usage) * CMake updated for PCH usage with 3.16 or later ### February 24, 2020 * *breaking change* **Model::CreateFromxxx** changed to use ModelLoaderFlags instead of default bool parameters * DirectX Tool Kit for Audio updated to support XAudio2Redist NuGet * Added ``ignoreWhitespace`` defaulted parameter to SpriteFont Measure methods * Fixed encoding issue with Utilities.fxh * Code and project cleanup * Retired VS 2015 projects * xwbtool: Changed ``-n`` switch to a more safe ``-y`` switch ### December 17, 2019 * Added ARM64 platform to VS 2019 Win32 desktop Win10 project * Added Vector ``operator/`` by float scalar to SimpleMath * Updated CMake project * Code cleaup ### October 17, 2019 * Added optional ``forceSRGB`` parameter to **SaveWICTextureToFile** * GamePad updated to report VID/PID (when supported) * Minor code cleanup ### August 21, 2019 * Added xwbtool to CMake project * Minor code cleanup ### June 30, 2019 * Additional validation for Ex texture loaders * Clang/LLVM warning cleanup * Renamed ``DirectXTK_Windows10.vcxproj`` to ``_Windows10_2017.vcxproj`` * Added VS 2019 UWP project ### May 30, 2019 * PBREffect updated with additional set methods * Added CMake project files * Code cleanup ### April 26, 2019 * Added VS 2019 desktop projects * Fixed guards w.r.t. to windows.h usage in Keyboard/Mouse headers * Added C++/WinRT **SetWindow** helper to Keyboard/Mouse * Code cleanup for texture loaders * Officially dropped Windows Vista support ### February 7, 2019 * Model now supports loading _SDKMESH v2_ models * **PBREffectFactory** added to support PBR materials * PBREffect and NormalMapEffect shaders updated to support ``BC5_UNORM`` compressed normal maps * SpriteFont: **DrawString** overloads for UTF-8 chars in addition to UTF-16LE wide chars ### November 16, 2018 * VS 2017 updated for Windows 10 October 2018 Update SDK (17763) * ARM64 platform configurations added to UWP projects * Minor code review ### October 31, 2018 * Model loader for SDKMESH now attempts to use legacy DE3CN compressed normals + This is an approximation only and emits a warning in debug builds ### October 25, 2018 * Use UTF-8 instead of ANSI for narrow strings * Minor code review ### August 17, 2018 * Improved validation for 16k textures and other large resources * Improved debug output for failed texture loads and screengrabs * Updated for VS 2017 15.8 * Code cleanup ### July 3, 2018 * ModelMeshPart **DrawInstanced** method added * Code and project cleanup ### May 31, 2018 * VS 2017 updated for Windows 10 April 2018 Update SDK (17134) * Regenerated shaders using Windows 10 April 2018 Update SDK (17134) ### May 14, 2018 * Updated for VS 2017 15.7 update warnings * Code and project cleanup * Retired VS 2013 projects ### April 23, 2018 * ``AlignUp``, ``AlignDown`` template functions in DirectXHelpers.h * Mouse support for cursor visibility * SimpleMath and VertexTypes updated with default copy and move ctors * SimpleMath updates to use ``constexpr`` * EffectFactory updated with **GetDevice** method * PostProcess updated with 'big triangle' optimization * Fix for ``CMO`` handling of skinning vertex data * Code and project file cleanup * xwbtool: Fixed Windows 7 compatibility issue ### February 7, 2018 * Mouse fix for cursor behavior when using Remote Desktop for Win32 * Updated for a few more VS 2017 warnings * Code cleanup ### December 13, 2017 * **PBREffect** and **DebugEffect** added * **NormalMapEffect** no longer requires or uses explicit vertex tangents * *breaking change* NormalMapEffect::SetBiasedVertexNormalsAndTangents renamed to **SetBiasedVertexNormals** * PBREffect, DebugEffect, & NormalMapEffect all require Direct3D hardware feature level 10.0 or better * **VertexType** typedef added to GeometricPrimitive as alias for VertexPositionNormalTexture * Updated for VS 2017 15.5 update warnings * Code cleanup ### November 1, 2017 * VS 2017 updated for Windows 10 Fall Creators Update SDK (16299) * Regenerated shaders using Windows 10 Fall Creators Update SDK (16299) ### September 22, 2017 * Updated for VS 2017 15.3 update ``/permissive-`` changes * **ScreenGrab** updated to use non-sRGB metadata for PNG * Mouse use of ``WM_INPUT`` updated for Remote Desktop scenarios * Fix for ``CMO`` load issue when no materials are defined * xwbtool: added ``-flist`` option ### July 28, 2017 * Fix for WIC writer when codec target format requires a palette * Code cleanup ### June 21, 2017 * Post-processing support with the **BasicPostProcess**, **DualPostProcess**, and **ToneMapPostProcess** classes * SDKMESH loader fix when loading legacy files with all zero materials * DirectXTK for Audio: Minor fixes for environmental audio * Minor code cleanup ### April 24, 2017 * VS 2017 project updates * Regenerated shaders using Windows 10 Creators Update SDK (15063) * Fixed **NormalMapEffect** shader selection for specular texture usage * Fixed **AudioEngine** enumeration when using Single Threaded Apartment (STA) * Fixed bug with **GamePad** (Windows.Gaming.Input) when no user bound ### April 7, 2017 * VS 2017 updated for Windows Creators Update SDK (15063) * XboxDDSTextureLoader updates ### February 10, 2017 * **GamePad** now supports special value of ``-1`` for 'most recently connected controller' * WIC format 40bppCMYKAlpha should be converted to RGBA8 rather than RGBA16 * DDS support for L8A8 with bitcount 8 rather than 16 * Minor code cleanup ### December 5, 2016 * Mouse and Keyboard classes updated with **IsConnected** method * Windows10 project ``/ZW`` switch removed to support use in C++/WinRT projection apps * VS 2017 RC projects added * Minor code cleanup ### October 6, 2016 * SDKMESH loader and BasicEffects support for compressed vertex normals with biasing * WICTextureLoader Ex bool forceSRGB parameter is now a **WIC_LOADER_FLAGS** flag * Minor code cleanup ### September 15, 2016 * Minor code cleanup * xwbtool: added wildcard support for input filename and optional ``-r`` switch for recursive search ### September 1, 2016 * Added ``forceSRGB`` optional parameter to SpriteFont ctor * EffectFactory method **EnableForceSRGB** added * DGSLEffect now defaults to diffuse/alpha of 1 * Removed problematic ABI::Windows::Foundation::Rect interop for SimpleMath * Minor code cleanup ### August 4, 2016 * Regenerated shaders using Windows 10 Anniversary Update SDK (14393) ### August 2, 2016 * Updated for VS 2015 Update 3 and Windows 10 SDK (14393) ### August 1, 2016 * GamePad capabilities information updated for Universal Windows and Xbox One platforms * Specular falloff lighting computation fix in shaders ### July 18, 2016 * **NormalMapEffect** for normal-map with optional specular map rendering * **EnvironmentMapEffect** now supports per-pixel lighting * Effects updated with **SetMatrices** and **SetColorAndAlpha** methods * SimpleMath: improved interop with DirectXMath constants * Minor code cleanup ### June 30, 2016 * **MeasureDrawString** added to SpriteFont; bad fix to MeasureString reverted * GamePad tracker updated to track emulated buttons (i.e. leftStickUp) * EffectFactory **SetDirectory** now checks current working directory (CWD) as well * *breaking change* must include before including * Code refactor for sharing some files with DirectX 12 version * Minor code cleanup ### May 31, 2016 * Added **VertexPosition** and **VertexPositionDualTexture** to VertexTypes * Xbox One platform fix for PrimitiveBatch * CompileShader script updated to build external pdbs * Code cleanup ### April 26, 2016 * Added **Rectangle** class to SimpleMath * Fix for SDKMESH loader when loading models with 'extra' texture coordinate sets * Made SimpleMath's Viewport **ComputeTitleSafeArea** less conservative * Added view/menu aliases to GamePad::ButtonStateTracker for Xbox One Controller naming * Retired Windows phone 8.0 projects and obsolete adapter code * Minor code and project file cleanup ### February 23, 2016 * Fixed width computation bug in **SpriteFont::MeasureString** * Fix to clean up partial or zero-length image files on failed write * Fix to WaveBankReader for UWP platform * Retired VS 2012 projects * Xbox One platform updates * Minor code and project file cleanup ### January 5, 2016 * Xbox One platform updates * *breaking change* Need to add use of **GraphicsMemory** class to Xbox One titles * Minor code cleanup ### November 30, 2015 * SimpleMath improvements including Viewport class * Fixed bug with **Keyboard** for ``OpenBracket`` and later VK codes * Fixed bug with **Mouse** that reset the scrollwheel on app activate * ``MakeSpriteFont`` updated with ``/FastPack`` and ``/FeatureLevel`` switches * Updated for VS 2015 Update 1 and Windows 10 SDK (10586) ### October 30, 2015 * DirectXTK for Audio 3D updates * *breaking change* emitters/listeners now use RH coordinates by default * **GeometricPrimitive** support for custom geometry * SimpleMath Matrix class improvements * DDS support for legacy bumpmap formats (V8U8, Q8W8V8U8, V16U16) * Mouse fix for WinRT implementation with multiple buttons pressed * Wireframe **CommonStates** no longer does backface culling * Xbox One platform updates * Minor code cleanup ### August 18, 2015 * Xbox One platform updates ### July 29, 2015 * Added **CreateBox** method to GeometricPrimitive * Added ``invertn`` optional parameter to **CreateSphere** * Updates for Keyboard, Mouse class * Fixed bug when loading older SDKMESH models * Updated for VS 2015 and Windows 10 SDK RTM * Retired VS 2010 and Windows Store 8.0 projects ### July 1, 2015 * Added **Keyboard**, **Mouse** class * Support for loading pre-lit models with SDKMESH * **GamePad** implemented using ``Windows.Gaming.Input`` for Windows 10 * DirectXTK for Audio updates for xWMA support with XAudio 2.9 * Added **FindGlyph** and **GetSpriteSheet** methods to SpriteFont ### March 27, 2015 * Added projects for Windows apps Technical Preview * GamePad temporarily uses 'null' device for universal Windows application platform ### February 25, 2015 * DirectXTK for Audio updates + *breaking change* pitch now defined as -1 to 1 with 0 as the default + One-shot Play method with volume, pitch, and pan + **GetMasterVolume** / **SetMasterVolume** method for AudioEngine + Fix for compact wavebank validation + Improved voice cleanup and shutdown * Minor code cleanup and C++11 ``=default``/``=delete`` usage ### January 26, 2015 * GamePad class: emulate ``XInputEnable`` behavior for XInput 9.1.0 * DirectXTK for Audio fix for Stop followed by Play doing a proper restart * DirectXTK for Audio fix when using XAudio 2.7 on a system with no audio device * Updates for Xbox One platform support * Minor code cleanup and C99 ``printf`` string conformance ### November 24, 2014 * SimpleMath fix for Matrix ``operator !=`` * DirectXTK for Audio workaround for XAudio 2.7 on Windows 7 problem * Updates for Windows phone 8.1 platform support * Updates for Visual Studio 2015 Technical Preview * Minor code cleanup ### October 28, 2014 * Model support for loading from ``VBO`` files * Model render now sets samplers on slots 0,1 by default for dual-texture effects * Updates for Xbox One platform support * Minor code cleanup ### September 5, 2014 * **GamePad** class: gamepad controller helper using XInput on Windows, IGamepad for Xbox One * SimpleMath updates; Matrix billboard methods; *breaking change*: Matrix::Identity() -> Matrix::Identity * SpriteBatch new optional **SetViewport** method * SpriteFont fix for white-space character rendering optimization * DDSTextureLoader fix for auto-gen mipmaps for volume textures * Explicit calling-convention annotation for public headers * Updates for Xbox One platform support * Minor code and project cleanup ### July 15, 2014 * DirectXTK for Audio and XWBTool fixes * Updates to Xbox One platform support ### April 3, 2014 * Windows phone 8.1 platform support ### February 24, 2014 * DirectXHelper: new utility header with **MapGuard** and public version of **SetDebugObjectName** template * DDSTextureLoader: Optional support for auto-gen mipmaps * DDSTextureLoader/ScreenGrab: support for Direct3D 11 video formats including legacy "YUY2" DDS files * GeometricPrimtive: Handedness fix for tetrahedron, octahedron, dodecahedron, and icosahedron * ``SpriteBatch::SetRotation(DXGI_MODE_ROTATION_UNSPECIFIED)`` to disable viewport matrix * XboxDDSTextureLoader: optional forceSRGB parameter ### January 24, 2014 * DirectXTK for Audio updated with voice management and optional mastering volume limiter * Added orientation rotation support to **SpriteBatch** * Fixed a resource leak with ``GetDefaultTexture`` used by some Effects * Code cleanup (removed ``DXGI_1_2_FORMATS`` control define; d2d1.h workaround not needed; ScopedObject typedef removed) ### December 24, 2013 * Added **DirectX Tool Kit for Audio** using XAudio2 * Xbox One platform support * ``MakeSpriteFont`` tool updated with more progress feedback when capturing large fonts * Minor updates for ``SDKMESH`` Model loader * Fixed bug in ``CMO`` Model loader when handling multiple textures * Improved debugging output ### October 28, 2013 * Updated for Visual Studio 2013 and Windows 8.1 SDK RTM * Added **DGSLEffect**, **DGSLEffectFactory**, **VertexPositionNormalTangentColorTexture**, and **VertexPositionNormalTangentColorTextureSkinning** * Model loading and effect factories support loading skinned models * ``MakeSpriteFont`` now has a smooth vs. sharp antialiasing option: /sharp * Model loading from ``CMOs`` now handles UV transforms for texture coordinates * A number of small fixes for **EffectFactory** * Minor code and project cleanup * Added ``NO_D3D11_DEBUG_NAME`` compilation define to control population of Direct3D debug layer names for debug builds ### July 1, 2013 * VS 2013 Preview projects added and updates for DirectXMath 3.05 ``__vectorcall`` * Added use of sRGB WIC metadata for ``JPEG``, ``PNG``, and ``TIFF`` * SaveToWIC functions updated with new optional setCustomProps parameter and error check with optional targetFormat ### May 30, 2013 * Added more **GeometricPrimitives**: Cone, Tetrahedron, Octahedron, Dodecahedron, Icosahedron * Updated to support loading new metadata from DDS files (if present) * Fixed bug with loading of WIC 32bpp RGBE format images * Fixed bug when skipping mipmaps in a 1D or 2D array texture DDS file ### February 22, 2013 * Added **SimpleMath** header * Fixed bug that prevented properly overriding EffectFactory::CreateTexture * Fixed forceSRGB logic in DDSTextureLoader and WICTextureLoader * Break circular reference chains when using SpriteBatch with a setCustomShaders lambda * Updated projects with ``/fp:fast`` for all configs, ``/arch:SSE2`` for Win32 configs * Sensibly named .pdb output files * Added ``WIC_USE_FACTORY_PROXY`` build option (uses WindowsCodecs.dll entrypoint rather than CoCreateInstance) ### January 25, 2013 * **GeometricPrimitive** support for left-handed coordinates and drawing with custom effects * Model, ModelMesh, and ModelMeshPart added with loading of rigid non-animating models from .CMO and .SDKMESH files * EffectFactory helper class added ### December 11, 2012 * Ex versions of **DDSTextureLoader** and **WICTextureLoader** * Removed use of ATL's ``CComPtr`` in favor of WRL's ``ComPtr`` for all platforms to support VS Express editions * Updated VS 2010 project for official 'property sheet' integration for Windows 8.0 SDK * Minor fix to **CommonStates** for Feature Level 9.1 * Tweaked AlphaTestEffect.cpp to work around ARM NEON compiler codegen bug * Added dxguid.lib as a default library for Debug builds to resolve GUID link issues ### November 15, 2012 * Added support for WIC2 when available on Windows 8 and Windows 7 with KB 2670838 * Cleaned up warning level 4 warnings ### October 30, 2012 * Added project files for Windows phone 8 ### October 12, 2012 * Added **PrimitiveBatch** for drawing user primitives * Debug object names for all D3D resources (for PIX and debug layer leak reporting) ### October 2, 2012 * Added **ScreenGrab** module * Added **CreateGeoSphere** for drawing a geodesic sphere * Put DDSTextureLoader and WICTextureLoader into the DirectX C++ namespace ### September 7, 2012 * Renamed project files for better naming consistency * Updated WICTextureLoader for Windows 8 96bpp floating-point formats * Win32 desktop projects updated to use Windows Vista (0x0600) rather than Windows 7 (0x0601) APIs * Tweaked SpriteBatch.cpp to workaround ARM NEON compiler codegen bug ### May 31, 2012 * Updated Windows Store project for Visual Studio 2012 Release Candidate changes * Cleaned up x64 Debug configuration warnings and switched to use ``_DEBUG`` instead of ``DEBUG`` * Minor fix for DDSTextureLoader's retry fallback that can happen with 10level9 feature levels ### May 2, 2012 * Added **SpriteFont** implementation and the MakeSpriteFont utility ### March 29, 2012 * WICTextureLoader updated with Windows 8 WIC native pixel formats ### March 6, 2012 * Fix for too much temp memory used by WICTextureLoader * Add separate Visual Studio 11 projects for Desktop vs. Windows Store builds ### March 5, 2012 * Bug fix for SpriteBatch with batches > 2048 ### February 24, 2012 * Original release