Resources for getting started with DirectX

Installing DirectX

Link to the docs from Chuck Walbourn

Where is the DirectX SDK?

Starting with Windows 8, the DirectX SDK is included as part of the Windows SDK.

We originally created the DirectX SDK as a high-performance platform for game development on top of Windows. As DirectX technologies matured, they became relevant to a broader range of applications. Today, the availability of Direct3D hardware in computers drives even traditional desktop applications to use graphics hardware acceleration.

In parallel, DirectX technologies are more integrated with Windows. DirectX is now a fundamental part of Windows.

Because the Windows SDK is the primary developer SDK for Windows, DirectX is now included in it. You can now use the Windows SDK to build great games for Windows. To download the Windows 8 SDK, see Windows SDK and emulator archive.

There are really only three scenarios where you should continue to use the old DirectX SDK:

  1. You have code (or perhaps an older book) that makes use of D3DX9, D3DX10, D3DX11, or XACT Engine.
  2. Your application uses use XAudio2 and supports Windows 7 systems.
  3. You are targeting Windows XP with the alternate v1x0_xp Platform Toolset.

 Introduction to 3D Game Programming with DirectX 11 [BOOK]

Link to the book


This book is a monster. I read 1/3 of it on a flight from Philadelphia to Seattle, and found it to be incredibly useful for learning DirectX. The author is very thorough, and has notes along the way illustrating why he explains things a certain way, or how edge cases may sprout up from time to time around the way a certain feature of DirectX is working. Overall, it is well worth the money, and I’ve already received huge value from it.

Link to the site


I started here with learning DirectX, and still believe it is the best place to start. The author is a Microsoft MVP, and I can see why. His tutorials are incredibly thorough, practical, and segues seamlessly from one chapter to the next. You can get pretty far into the tutorials before you hit a premium tier, which is unlocked by paying $50, which I still think is a steal at that price.


What is the graphics pipeline? (featuring DirectX 11) [VIDEO]

Link to the video


In this video you’ll learn what a graphics pipeline is, what they are used for and also what happens at each stage of the pipeline. The DirectX 11 pipeline is used as an example.



0:33 – Pipeline overview

0:53 – Input assembler (building blocks)

1:16 – Tesselation

1:03 – Vertex shader

1:41 – Geometry shade

2:02 – Rasterizer

2:38 – Output merger


From <>




MiniEngine: A DirectX 12 Engine Starter Kit

Link to the GitHub repo

In addition to the samples, we are announcing the first DirectX 12 preview release of the MiniEngine.

It came from a desire to quickly dive into graphics and performance experiments. We knew we would need some basic building blocks whenever starting a new 3D app, and we had already written these things at countless previous gigs. We got tired of reinventing the wheel, so we established our own core library of helper classes and platform abstractions. We wanted to be able to create a new app by writing just the Init(), Update(), and Render() functions and leveraging as much reusable code as possible. Today our core library has been redesigned for DirectX 12 and aims to serve as an example of efficient API usage. It is obviously not exhaustive of what a game engine needs, but it can serve as the cornerstone of something new. You can also borrow whatever useful code you find.

Some features of MiniEngine

  • High-quality anti-aliased text rendering
  • Real-time CPU and GPU profiling
  • User-controlled variables
  • Game controller, mouse, and keyboard input
  • A friendly DirectXMath wrapper
  • Perspective camera supporting traditional and reversed Z matrices
  • Asynchronous DDS texture loading and ZLib decompression
  • Large library of shaders
  • Easy shader embedding via a compile-to-header system
  • Easy render target, depth target, and unordered access view creation
  • A thread-safe GPU command context system (WIP)
  • Easy-to-use dynamic constant buffers and descriptor tables


HLSL Tools for Visual Studio

Link to the Extension


A Visual Studio extension that provides enhanced support for editing High Level Shading Language (HLSL) files.

See the changelog for changes and roadmap.

Why use HLSL Tools?

Since Visual Studio 2012, Visual Studio has shipped with basic support for editing HLSL files. In addition to that basic feature set, HLSL Tools includes many more navigational and editing features:


VS2015 / VS2017 VS2015 / VS2017 with HLSL Tools
Syntax highlighting Syntax highlighting
Automatic formatting Automatic formatting
Brace matching Brace matching
Brace completion Brace completion
Outlining Outlining
Statement completion
Signature help
Reference highlighting
Navigation bar
Navigate to (Ctrl+,)
Live errors
Go to definition
Quick info
Gray out code excluded by preprocessor
HLSL-specific preferences



DirectX Toolkit

Link to the GitHub repo


April 7, 2017

This package contains the “DirectX Tool Kit”, a collection of helper classes for
writing Direct3D 11 C++ cod
e for Universal Windows Platform (UWP) apps for Windows 10,
Windows Store apps, Windows phone 8.1 applications, Xbox One exclusive apps,
Windows 8.x Win32 desktop applications, Windows 7 applications, and
Windows Vista Direct3D 11.0 applications.

This code is designed to build with Visual Studio 2013 or 2015. It is recommended that you
make use of VS 2013 Update 5 or VS 2015 Update 3 and Windows 7 Service Pack 1 or later.

These components are designed to work without requiring any content from the DirectX SDK. For details,
see “Where is the DirectX SDK?” <>.

DirectXTK includes the following components:

  • SpriteBatch – a 2D sprite rendering class (a C++ version of the SpriteBatch used for XNA Game Studio)
  • SpriteFont – a bitmap based text rendering (a C++ version of the SpriteFont used for XNA Game Studio)
  • Effects – a collection of ready-to-use common shaders (C++ versions of the BasicEffectAlphaTestEffectDualTextureEffectEnvironmentMapEffect, and SkinnedEffect used for XNA Game Studio)
  • PrimtiveBatch – simple and efficient way to draw user primitives which replicates the simplicity of the Direct3D 9 era DrawUP APIs
  • GeometricPrimitives – geometry helpers for common shapes (Cube, Sphere, GeoSphere, Cylinder, Torus, Teapot, Tetrahedron, Octahedron, Dodecahedron, and Isosahedron)
  • Model – draws simple meshes loaded from .CMO or .SDKMESH files
  • CommonStates – Factory for common combinations of rendering states as Direct3D 11 state objects (C++ versions modelled after the ‘public fields’ of BlendStateDepthStencilStateRasterizerState, and SampleState classes used for XNA Game Studio)
  • VertexTypes –  collection of commonly used vertex buffer data structures with a input layout descriptions (C++ versions of VertexPositionColorVertexPositionTextureVertexPositionColorTexture, and VertexPositionNormalTexture structures used for XNA Game Studio)
  • It also includes DDSTextureLoader,  WICTextureLoader, and ScreenGrab from the DirectXTex package.
  • SimpleMath – a wrapper for DirectXMath that makes it easier to write basic math operations without as many restrictions as the SIMD-friendly base library
  • And the MakeSpriteFont utility for generating .spritefont files (based on the Bitmap Font Maker Tool for XNA Game Studio)









Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.