Introduction to 3D Game Programming with Direct3D 12.0

This page contains some general information about the book Introduction to 3D Game Programming with DirectX 12.0, published by Mercury Learning and Information, that will help you decide if this book is for you.

Supplement Files:
Source Code
Appendix D Selected Solutions
All solutions for Chapter 1.

Quick Navigation


This book presents an introduction to programming interactive computer graphics, with an emphasis on game development, using Direct3D 12. It teaches the fundamentals of Direct3D and shader programming, after which the reader will be prepared to go on and learn more advanced techniques. The book is divided into three main parts. Part I explains the mathematical tools that will be used throughout this book. Part II shows how to implement fundamental tasks in Direct3D, such as initialization, defining 3D geometry, setting up cameras, creating vertex, pixel, geometry, and compute shaders, lighting, texturing, blending, stenciling, and tessellation. Part III is largely about applying Direct3D to implement a variety of interesting techniques and special effects, such as working with meshes, character animation, picking, particle systems, environment mapping, normal mapping, real-time shadows, and ambient occlusion.

Intended Audience

This book was designed with the following three audiences in mind:

  • Intermediate level C++ programmers who would like an introduction to 3D programming using the latest iteration of Direct3D.
  • 3D programmers experienced with an API other than DirectX (e.g., OpenGL) who would like an introduction to Direct3D 12.
  • Experienced Direct3D programmers wishing to learn the latest iteration of Direct3D.


It should be emphasized that this is an introduction to Direct3D 12, shader programming, and game programming; it is not an introduction to general computer programming. The reader should satisfy the following prerequisites:

  • High School mathematics: algebra, trigonometry, and (mathematical) functions, for example.
  • Competent with Visual Studio: should know how to create projects, add files, and specify external libraries to link, for example.
  • Intermediate C++ and data structure skills: comfortable with pointers, arrays, operator overloading, linked lists, inheritance and polymorphism, for example.
  • Familiarity with Windows programming with the Win32 API is helpful, but not required; we provide a Win32 primer in Appendix A.

Required Development Tools and Recommended Hardware

The following are needed to program Direct3D 12 applications:

  • Windows 10.
  • Visual Studio 2015 or later.
  • A graphics card that supports Direct3D 12. The demos in this book were tested on a Geforce GTX 760.

Brief Table of Contents

  • Introduction
  • Part I Mathematical Prerequisites
    • Chapter 1 Vector Algebra
    • Chapter 2 Matrix Algebra
    • Chapter 3 Transformations
  • Part II Direct3D Foundations
    • Chapter 4 Direct3D Initialization
    • Chapter 5 The Rendering Pipeline
    • Chapter 6 Drawing in Direct3D
    • Chapter 7 Drawing in Direct3D Part II
    • Chapter 8 Lighting
    • Chapter 9 Texturing
    • Chapter 10 Blending
    • Chapter 11 Stenciling
    • Chapter 12 The Geometry Shader
    • Chapter 13 The Compute Shader
    • Chapter 14 The Tessellation Stages
  • Part III Topics
    • Chapter 15 Building a First Person Camera and Dynamic Indexing
    • Chapter 16 Instancing and Frustum Culling
    • Chapter 17 Picking
    • Chapter 18 Cube Mapping
    • Chapter 19 Normal Mapping
    • Chapter 20 Shadow Mapping
    • Chapter 21 Ambient Occlusion
    • Chapter 22 Quaternions
    • Chapter 23 Character Animation
  • Appendix A Introduction to Windows Programming
  • Appendix B High Level Shader Language Reference
  • Appendix C Some Analytic Geometry
  • Appendix D Selected Solutions


Source code corrections are documented by the change sets on GitHub: d3d12 ChangeSets