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, like games. This is not a comprehensive list of all of the features or available resources.

Get started

Looking to get started quickly? Here are the key topics: setting up your DirectX project, acclimating yourself to Windows 8.1, and diving into samples.


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.


Grab some samples


Direct3D Tutorial Win32 sample

Basic desktop Direct3D tutorial sample.

DXUT+DirectXTK Simple Win32 sample

Sample code that incorporates support APIs from the DirectX toolkit.

DirectXMath Win32 sample

DirectXMath sample

DirectCompute Graphics Win32 samples

Simple computer shader sample.

Effects 11 Win32 samples

A set of samples that demonstrate multi-shader techniques and effects.

Direct3D Tessellation Win32 samples

Basic tesselation sample.

Direct3D Shadow Win32 samples

A set of samples demonstrating shadow mapping techniques.

Direct3D Multithreaded Rendering Win32 sample

A sample that demonstrates multi-threaded GPU processes for deferred rendering.

DirectX video rendering sample

A sample that demonstrates custom video rendering with Direct3D.


Review key Direct3D 11 concepts


Graphics Pipeline

Covers the basic Direct3D 11 graphics pipeline.


Covers the Direct3D rendering models, components, shaders and API call flow.


Covers Direct3D "resources", such as buffers and other GPU resource types.


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


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.


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.


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.


Documentation for the DirectXMath APIs, which support Direct3D with a set of types and functions suited for 3D real-time graphics development. (Formerly XNAMath.)


Documentation for the DirectCompute APIs, used for compute or general-use shader functionality.


Audio, media and input APIs


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


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++/CX

If you're an old hand with C++ on Windows platforms, things may look just a little bit different. Just a little! Here's some pointers to topics that can help you get a handle on the changes introduced with the Component Extensions (CX) and the task-based async programming model.


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.


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

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


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

CodePlex site for the 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

Code plex site for the DirectX Texture Processing Library (DxTEX), which contains support APIs for texture processing and compression/decompression.