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.
| Topic | Description |
|---|---|
|
Use this basic tutorial to get started with DirectX app development, then use the roadmap to continue exploring DirectX. | |
|
Review the steps you must take to begin developing a game using DirectX and C++. | |
|
Get the code for a basic DirectX rendering framework. | |
|
This section demonstrates how to use the Microsoft Direct3D 11 API to accomplish several common tasks. | |
|
The programming guide contains information about how to use the Microsoft Direct3D 11 programmable pipeline to create realtime 3D graphics for desktop applications. | |
|
Documentation for tools used to support DirectX development. | |
|
A breakdown of all the features added in the most recent versions of DirectX and Direct3D (currently 11.2). | |
|
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. | |
|
Contains guidance for devs who want to bring their DirectX projects into Microsoft Visual Studio. |
Grab some samples
| Topic | Description |
|---|---|
|
Basic desktop Direct3D tutorial sample. | |
|
Sample code that incorporates support APIs from the DirectX toolkit. | |
|
DirectXMath sample | |
|
Simple computer shader sample. | |
|
A set of samples that demonstrate multi-shader techniques and effects. | |
|
Basic tesselation sample. | |
|
A set of samples demonstrating shadow mapping techniques. | |
|
A sample that demonstrates multi-threaded GPU processes for deferred rendering. | |
|
A sample that demonstrates custom video rendering with Direct3D. |
Review key Direct3D 11 concepts
| Topic | Description |
|---|---|
|
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 the swap chain used to draw pixels to a region of the screen. | |
|
How to create a Direct3D device abstraction and an immediate context for drawing. | |
|
How to create a simple list of mesh vertices for processing by the GPU. | |
|
How to create an index buffer enabling the vertex shader to walk the order of vertices in a mesh. | |
|
How to pass constant (uniform) data between the CPU and the GPU during rendering. | |
|
How to create a texture or other buffer resource that can be sampled by the GPU. | |
|
How to load a texture from a file and process it for use by the shader pipeline. | |
|
How to compile a shader for use in your graphics application. |
Graphics APIs
| Topic | Description |
|---|---|
|
Documentation of the core APIs for the virtualization of the GPU and its resources, and for drawing graphics using a unified shader model. | |
|
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. | |
|
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. | |
|
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
| Topic | Description |
|---|---|
|
Top-level node for the XAudio2 audio API conceptual documentation. | |
|
Top-level node for the XAudio2 audio API reference documentation. | |
|
Top-level node for the XInput controller API conceptual documentation. | |
|
Top-level node for the XInput controller API reference documentation. | |
|
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 |
|---|---|
|
Basic guidance for moving your DirectX 9 codebase to DirectX 11. | |
|
Detailed blog post on developing for both DirectX 9_* and DirectX 11_* feature levels in a single application. | |
|
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.
| Topic | Description |
|---|---|
|
High-level page that links to content related to C++. | |
|
Table that provides quick info about Visual C++ component extensions (C++/CX) operators and keywords. | |
|
Reference content for the types that are supported by C++/CX. | |
|
Reference content for the namespaces that contain C++-specific types that can be used in Windows Store apps. |
|
Learn about asynchronous and multithreaded programming for DirectX apps and games. | |
|
Describes the basic ways to use the task class to consume Windows Runtime asynchronous methods. | |
|
Reference documentation for the task class. | |
|
In-depth discussion about the task class and how to use it. |
Additional useful libraries for Windows C++ programming
|
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. | |
|
PPL provides algorithms and types that simplify task parallelism and data parallelism on the CPU. | |
|
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 |
|---|---|
|
Regularly-updated blog from a key DirectX dev contributor, and an all-around great resource for DirectX devs. | |
|
The official Windows DirectX blog. | |
|
Dev blog from another well-respected Windows DirectX dev contributor. | |
|
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. | |
|
Code plex site for the DirectX Texture Processing Library (DxTEX), which contains support APIs for texture processing and compression/decompression. |