With the deprecation of the DirectX SDK (see Where is the DirectX SDK? and Where is the DirectX SDK (2013 Edition)?), there’s been a lot of guidance both on this blog and on MSDN 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 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.
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.
September 2013 (11.03)
- Removed dependencies on the D3DX9 and D3DX11 libraries, so DXUT no longer requires the legacy DirectX SDK to build. It does require the d3dcompiler.h header from the Windows 8.x SDK.
- Includes standalone DDSTextureLoader, WICTexureLoader, ScreenGrab, and DxErr modules.
- Removed support for Direct3D 9 and Windows XP
- Deleted the DXUTDevice9.h/.cpp, SDKSound.h/.cpp, and SDKWaveFile.h/.cpp files
- Deleted legacy support for MCE relaunch
- General C++ code cleanups (nullptr, auto keyword, C++ style casting, Safer CRT, etc.) which are compatible with Visual C++ 2010 and 2012
- SAL2 annotation and /analyze cleanup
- Added DXUTCompileFromFile, DXUTCreateShaderResourceViewFromFile, DXUTCreateTextureFromFile, DXUTSaveTextureToFile helpers
- Added ‘-forcewarp’ command-line switch
- Added support for DXGI 1.1 and 1.2 formats
- Added Direct3D 11.1 Device/Context state
- Support Feature Level 11.1 when available
June 2010 (11.02)
- The DirectX SDK (June 2010) included an update to DXUT11. This is the last version to support Visual Studio 2008, Windows XP, or Direct3D 9. The source code is located in
February 2010 (11.01)
- An update was shipped with the DirectX SDK (February 2010). This is the last version to support Visual Studio 2005. The source code is located in
August 2009 (11.00)
- The initial release of DXUT11 was in DirectX SDK (August 2009). The source code is located in
Samples\C++\DXUT11. This was a port of the original DXUT which supported Direct3D 10 / Direct3D 9 applications on Windows XP and Windows Vista.
DirectXTK Note: 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\Optional is also recommended. You may have to add additional include paths to the DXUT projects to find the
DirectXTK\Inc folder as well.