With the deprecation of the DirectX SDK (see Where is the DirectX SDK?), there’s been a lot of guidance both on this blog and on Microsoft Docs on moving to newer, supported solutions. As a number of folks have noticed, DXUT (aka the DirectX SDK samples framework) is not included in the Windows 8.x SDK. This post provides an updated version of DXUT for Direct3D 11. The primary purpose of this release is to remove dependencies on the DirectX SDK for D3DX9, D3DX11, and DXERR. It also includes some code tidying and a few customer requests.
The project on GitHub is marked as archive. It is still available for use for legacy projects, but use of it for new projects is not recommended.
- The DXUT framework is for use in Win32 desktop applications. It not usable for Windows Store apps on Windows 8.x or Windows RT.
- This version of DXUT only supports Direct3D 11, and therefore is not compatible with Windows XP or early versions of Windows Vista.
- It supports Windows 8.x Win32 desktop, Windows 7, Windows Vista Service Pack 2 with KB 971644, and Windows Server equivalents of these release.
If you still need support for Visual Studio 2008, Windows XP, or Direct3D 9 you should continue to use the legacy DirectX SDK (June 2010) version.
Q: Is DXUT the official Microsoft samples framework for DirectX?
Over the years, DXUT has enjoyed a sort of ‘semi-official’ status because of its use in most of the DirectX SDK samples content. It has been adopted for samples from some video card manufacturer as well. In the past few years, the samples strategy for Microsoft has transitioned away from being packed into SDKs to the online MSDN Code Gallery which includes both ‘official’ Microsoft samples as well as community contributions. The official samples on MSDN Code Gallery generally do not make use of any samples framework at all, and none use DXUT. As such, DXUT has no special status as an ‘official’ or ‘supported’ samples framework.
MSDN Code Gallery has been retired in favor of GitHub
Q: DXUT in the DirectX SDK supported Windows XP. Why is that not in the update?
The DXUT samples framework in the DirectX SDK provided ‘dual’ support for both Direct3D 9 and Direct3D 11 (and prior to that Direct3D 9 and Direct3D 10). This was primarily to support the venerable Windows XP platform. DXUT relied heavily on functionality in the D3DX library, which is now deprecated and only available in the DirectX SDK. There are a host of D3DX replacements for Direct3D 11, but none for Direct3D 9. As such, if you still require Windows XP or Direct3D 9 support, you’ll need to stick with the end-of-life DirectX SDK (June 2010) release, and continue to rely on the legacy DirectSetup deployment model. If you are using VS 2012, you’ll want to read some of the special handling needed to mix the legacy DirectX SDK with the v110_xp Platform Toolset.
Q: Why is there no DXUT support for Windows Store apps?
The primary purpose of the DXUT framework is to handle the complex needs for device enumeration and selection, to provide GUI elements suitable for use with a full-screen DirectX application, and support a simplistic but useful mouse/keyboard input mechanism. Windows Store apps, however, have an entirely different presentation model, make use of XAML and/or Direct2D for GUI elements, support a touch-first input design, and has a heavily emphasis on power-friendly asynchronous I/O. As such, DXUT is not applicable to Windows Store apps or Windows phone.
Q: I'm new to Direct3D 11. Is DXUT a good place to start?
Visual Studio 2012 and 2013 include great DirectX templates for Windows Store apps that use Direct3D 11, and there are many samples on MSDN Code Gallery. This update to DXUT is primarily intended for those already familiar with DXUT who want to continue to develop Win32 desktop samples, prototypes, and demos for Direct3D 11 without requiring the DirectX SDK or Direct Setup be installed.
You can also find lots of Direct3D templates on GitHub
See GitHub for the complete version history.
You can use DXUT in combination with DirectXTK in the same project, but you should remove the files
DDSTextureLoader.h, DDSTextureLoader.cpp, ScreenGrab.h, ScreenGrab.cpp, WICTextureLoader.h,and
DXUT\Core. Removal of
DXUT\Optionalis also recommended. You may have to add additional include paths to the DXUT projects to find the
DirectXTK\Incfolder as well.
vcpkg: The vcpkg C++ Package Manager has a dxut port available.