Roadmap for Desktop DirectX apps

Here are key resources to help you get started with using DirectX and C++ to develop graphics-intensive Desktop apps, such as games. This is not a comprehensive list of all of the features or available resources.

Get started

Here are some key topics. Setting up your DirectX project, acclimating yourself to Windows, and sample applications.

Topic Description
Create your first Windows app using DirectX Use this basic tutorial to get started with DirectX app development, then use the roadmap to continue exploring DirectX.
Get started with DirectX for Windows Review the steps you must take to begin developing a game using DirectX and C++.
Complete code for a DirectX framework Get the code for a basic DirectX rendering framework.
How to Use Direct3D 11 This section demonstrates how to use the Microsoft Direct3D 11 API to accomplish several common tasks.
Programming Guide for Direct3D 11 The programming guide contains information about how to use the Microsoft Direct3D 11 programmable pipeline to create realtime 3D graphics for desktop applications.
Tools for DirectX Graphics Documentation for tools used to support DirectX development.
What's new in Direct3D 11 A breakdown of all the features added in the most recent versions of DirectX and Direct3D (currently 11.2).
Download Visual Studio 2013 You must have Visual Studio Express 2013 for Windows Desktop to create Windows Store games. For a tour of Visual Studio, see Develop Windows Store apps using Visual Studio 2012. For info about new features in Visual Studio, see Product Highlights for Visual Studio 2013.
Where is the DirectX SDK? Contains guidance for devs who want to bring their DirectX projects into Microsoft Visual Studio.

Sample applications

Topic Description
Direct3D Tutorial Win32 sample Basic desktop Direct3D tutorial sample.
DirectX video rendering sample A sample that demonstrates custom video rendering with Direct3D.

Review key Direct3D 11 concepts

Topic Description
Graphics Pipeline Covers the basic Direct3D 11 graphics pipeline.
Rendering Covers the Direct3D rendering models, components, shaders and API call flow.
Resources Covers Direct3D "resources", such as buffers and other GPU resource types.
Effects Covers Direct3D multi-shader instancing and effects.
How To: Create a Swap Chain How to create the swap chain used to draw pixels to a region of the screen.
How To: Create a Device and Immediate Context How to create a Direct3D device abstraction and an immediate context for drawing.
How to: Create a Vertex Buffer How to create a simple list of mesh vertices for processing by the GPU.
How to: Create an Index Buffer How to create an index buffer enabling the vertex shader to walk the order of vertices in a mesh.
How to: Create a Constant Buffer How to pass constant (uniform) data between the CPU and the GPU during rendering.
How to: Create a Texture How to create a texture or other buffer resource that can be sampled by the GPU.
How to: Initialize a Texture From a File How to load a texture from a file and process it for use by the shader pipeline.
How To: Compile a Shader How to compile a shader for use in your graphics application.

Graphics APIs

Topic Description
Direct3D 11 Documentation of the core APIs for the virtualization of the GPU and its resources, and for drawing graphics using a unified shader model.
Direct3D HLSL Reference documentation for High-Level Shader Language, the syntax and rules used to define shader programs executed as part of the graphics pipeline in a unified shader model.
DirectX Graphics Interface (DXGI) Documentation of the low-level APIs used to acquire the GPU interface and system resources.
Direct2D Documentation for the Direct2D APIs, which support the drawing of 2D primitives. Typically, Direct2D is used for custom user interfaces, image processing and batching, and simple games.
DirectWrite Documentation for the DirectWrite APIs, which support custom font rendering and scaling.
Windows Imaging Component (WIC) Documentation for the WIC APIs, which are used for reading and managing different bitmap image formats.
DirectDraw Surfaces (DDS) for textures Documentation for the DDS APIs, which are used for 2D texture compression and decompression in conjunction with the WIC APIs.
DirectXMath Documentation for the DirectXMath APIs, which support Direct3D with a set of types and functions suited for 3D real-time graphics development. (Formerly XNAMath.)
DirectCompute Documentation for the DirectCompute APIs, used for compute or general-use shader functionality.

Audio, media, and input APIs

Topic Description
XAudio2 Programming Guide Top-level node for the XAudio2 audio API conceptual documentation.
XAudio2 Programming Reference Top-level node for the XAudio2 audio API reference documentation.
XInput Programming Guide Top-level node for the XInput controller API conceptual documentation.
XInput Programming Reference Top-level node for the XInput controller API reference documentation.
Media Foundation Top-level node for the Media Foundation (MF) media (audio/video) playback API documentation. Typically, MF is used in games for soundtrack playback, whereas XAudio2 is used for dynamic audio.

Port to DirectX 11

Topic Description
Migrating to Direct3D 11 Basic guidance for moving your DirectX 9 codebase to DirectX 11.
Dual-use Coding Techniques for Games Detailed blog post on developing for both DirectX 9_* and DirectX 11_* feature levels in a single application.
Implementing shadow buffers for Direct3D feature level 9 Guidance for implementing shadow maps under DirectX feature level 9_*.

Work with C++

If you're an old hand with C++ on Windows platforms, things may look a little different. Here are some pointers to topics that can help you get a handle on the difference.

Note

Some of these topics exist to help you maintain your C++/CX application. But we recommend that you use C++/WinRT for new applications. C++/WinRT is an entirely standard modern C++17 language projection for Windows Runtime (WinRT) APIs, implemented as a header-file-based library, and designed to provide you with first-class access to the modern Windows API.

Topic Description
Visual C++ language reference (C++/CX) High-level page that links to content related to C++.
Quick Reference (Windows Runtime and Visual C++) Table that provides quick info about Visual C++ component extensions (C++/CX) operators and keywords.
Type system (C++/CX) Reference content for the types that are supported by C++/CX.
Namespaces (C++/CX) Reference content for the namespaces that contain C++-specific types that can be used in Windows Store apps.
Topic Description
Asynchronous programming (DirectX and C++) Learn about asynchronous and multithreaded programming for DirectX apps and games.
Asynchronous programming in C++ Describes the basic ways to use the task class to consume Windows Runtime asynchronous methods.
task Class (Concurrency Runtime) Reference documentation for the task class.
Task Parallelism (Concurrency Runtime) In-depth discussion about the task class and how to use it.

Additional useful libraries for Windows C++ programming

Topic Description
C++ Standard Template Library Windows Runtime types play well with Standard Template Library types. Most C++ Windows Store apps use Standard Template Library collections and algorithms, except at the ABI boundary.
Parallel Patterns Library PPL provides algorithms and types that simplify task parallelism and data parallelism on the CPU.
C++ Accelerated Massive Parallelism (C++ AMP) C++ AMP provides access to the GPU for general-purpose data parallelism on video cards that support DirectX 11.

Blogs and other resources

Topic Description
Games for Windows and DirectX blog Regularly-updated blog from a key DirectX dev contributor, and an all-around great resource for DirectX devs.
Windows DirectX developer blog The official Windows DirectX blog.
Shawn Hargreave's DirectX blog) Dev blog from another well-respected Windows DirectX dev contributor.
DirectX Tool Kit DirectX Tool Kit (DxTK), which contains a number of helpful support APIs for loading meshes, playing sounds, and other common behaviors.
DirectXTex texture processing library DirectX Texture Processing Library (DxTEX), which contains support APIs for texture processing and compression/decompression.