So you’ve downloaded the latest
DirectX SDKWindows SDK and start digging through the various tutorials, samples, and documentation, and you are trying to get a handle on where to start learning Direct3D 11…
When looking at presentations, a good place to start is to review the Direct3D 10 material especially if coming from a background of knowing Direct3D 9. Direct3D 11 is just an extension of Direct3D 10.x, and everything you learn about Direct3D 10 is applicable. These two presentations together cover the basics of using the API, changes to debugging, comparisons to Direct3D 9, and critical performance information for understanding how to optimize the new API.
Introduction to Direct3D 10 (SIGGRAPH 2007) link
Windows to Reality: Getting the Most out of Direct3D 10 Graphics in Your Games (Gamefest 2007) link
After you are up-to-speed on Direct3D 10, take a little side journey to read up on the changes made for Direct3D 10.1, particularly the concept of ‘feature levels’.
The Evolving Windows Gaming Platform (GDC 2008) link
From there you are fully prepared for the ‘delta’ covered in these two presentations on Direct3D 11 proper:
Introduction to the Direct3D 11 Graphics Pipeline (Gamefest 2008) link
DirectX 11 Technology Update (Gamefest 2010) link
Math: Since Direct3D 11 does not have the ‘fixed-function’ graphics pipeline of Direct3D 9, the choice of graphics math conventions (left-handed vs. right-handed, row-major vs. column-major matrices, etc.) is entirely up to the developer. DirectXMath can be used to create both Direct3D-style “Left-Hand Coordinate” transformations as well as OpenGL-style “Right-Handed Coordinate” transformations using a row-major matrix convention which can be used directly with row-major shaders or transposed to use column-major shaders. Note that the DirectX Tool Kit and SimpleMath uses the XNA Game Studio convention of “Right-handed, row-major”.
Debugging: Visual Studio 2012 / Windows 8.0 SDK / Visual Studio 2013 / Windows 8.1 SDK (and the legacy DirectX SDK) installs a number of ‘debugging’ features for development purposes including the “Debug” layers (
D2D1Debug1.DLL) and “Reference” devices (
D3DREF9.DLL). These cannot be used in released products or Windows Store app submissions as they are not present on end-user (i.e. not developer/test) machines. This means that ‘release production’ builds of your application cannot make use of
D2D1_FACTORY_OPTIONS.debugLevel != D2D1_DEBUG_LEVEL_NONE, or
On Windows 10, the debug layer is not installed by any SDK. Instead you enable the Graphics Tools Windows Optional Feature. See this blog post.
Update: For texture processing, see DirectXTex. For sprites, texture loading, ‘basic’ shaders, geometry shapes, a simple font system, and a number of other utilities see DirectX Tool Kit. For mesh processing such as computing vertex normals and vertex cache optimization, see DirectXMesh. All versions of D3DX including D3DX11 are deprecated.
Note: Be sure to read “Where is the DirectX SDK?” to get the latest news on developing for DirectX, particularly if you are using Windows 8.x, VS 2012 or 2013. There is a version of the original DirectX SDK Win32 desktop Direct3D 11 tutorials updated for use with VS 2012/2013 without the requiring the legacy DirectX SDK on the MSDN Code Gallery along with a new version of DXUT, Effects 11, and many of the samples from the DirectX SDK.
If you are primarily interested in learning DirectX 11 for Windows Store app (a.k.a. Metro style app) development, MSDN has a lot of material and there are a number of samples on the Windows Code Gallery including the Windows Store app equivalent of the original DirectX SDK Direct3D 11 tutorials.