The following DirectX tutorials were initially written in 2004. I no longer maintain or update these tutorials. All code is provided as-is and is left online for archival purposes. All DirectX tutorials were written using Visual Studio .NET 2003 and the October 2005 DirectX SDK.

1. Creating Your First Window

We can’t make cool graphics without a window, now can we? In this tutorial we’ll learn how to create a basic window and how to respond to messages sent to the window.

2. Setting Up Visual Studio .NET 2003

This tutorial will show you how to setup Visual Studio .NET 2003 so it can find all the DirectX libraries and header files.

3. Initializing Direct3D

Now that we know how to create a window, we need to know how to enable Direct3D. This tutorial shows you how to create a Direct3D-enabled window with minimal effort.

4. Improved Direct3D Initialization

In the last tutorial, we initialized Direct3D the quick and dirty way. This time, we’ll query the hardware so you can get greater hardware support, which will speed up performance. We’ll also add fullscreen capabilities.

5. Creating an Object-Oriented Framework

In this tutorial, we’ll start creating an object-oriented framework that will create cleaner, more maintainable code. Creating a library of reusable classes will speed up development in all future projects.

6. Rendering Primitives

In this tutorial, you’ll learn about vertex declarations and how to render basic geometry.

7. Responding to a Lost Device

Wondering why your game isn’t rendering when you Alt-Tab away in fullscreen mode? You need to learn how to handle lost devices!

8. Vertex and Index Buffers

In this tutorial, you’ll learn how to speed up rendering performance through the use of vertex and index buffers.

9. Transformations

In this tutorial you’ll learn how to animate geometry with the three basic transformations: translation, rotation, and scale.

10. Timing and Frames Per Second

In this tutorial, we’ll create a timing class, which will be crucial in performing all of our animations.

11. Dynamic Buffers

Dynamic buffers allow us to change the contents of the buffer each frame. In this tutorial, we’ll learn how to use dynamic buffers to create a nice particle effect.

12. Texture Mapping

With texture mapping we can make surfaces look more realistic by slapping a picture onto them. This tutorial covers basic texturing methods, which will get you using textures quickly.

13. Lighting

Add more realism to your games with lighting! In this tutorial, you’ll learn about the lighting system in DirectX and how to incorporate it into your programs.

14. 2D and 3D Font

Displaying text is vital to every game. With the help of the D3DX library, creating text is easy! In this tutorial you’ll learn how to create 2D and 3D text using ID3DXFont and ID3DXMesh.

15. Loading a Static Mesh (.X Format)

Tired of hard-coding all your vertex data? Learn how to load in geometry data from the DirectX .x file format to create complex geometry in a snap! In this tutorial you will learn how to load and display a static mesh.

16. DirectInput

What would a video game be without user interaction? In this tutorial, you’ll learn how to use DirectInput to process mouse and keyboard input.

17. Terrain Generation with a Heightmap

In this tutorial, you’ll learn how to use a height map to render terrain. Height map terrain generation is a popular and relatively easy way to add nice outdoor scenes to your game.

18. Moving Around a 3D World

Let’s start moving around the game. In this tutorial, you’ll learn how to move and rotate a camera using DirectInput and the always helpful D3DX library.

19. Detailing a Terrain With Multitexturing

In this tutorial you will learn about multitexturing and texture stages and how you can use them to detail a terrain.

20. Frustum Culling

Frustum culling is an optimization that will increase the performance of our application by rejecting geometry if it is not within our view frustum.