DirectX 12 Course
Here is the main course of this entire page – the DirectX 12 Course. In here, we will create a game engine, based on DirectX 12 and will try to learn a little bit about it along the way. I always wanted to do this, I love learning and then sharing that knowledge with the others.
Let me get this straight – DirectX 12 is very difficult. It is the most difficult if you learn it without any prior experience, it is difficult if you have some experience with DirectX 11. It is a low-level API and it introduces some concepts that up to this point were mainly in the competence of the graphics driver.
However, I believe that if you pay attention, after some time you will find it easy and consistent, and most of all – very rewarding. The type of problems that we encounter and the visual output that we get, even if it is a single triangle, gives you an enormous feeling of achievement.
I advice you to take your time with the course, do it from start to finish, read carefully and lay it all out in your head. I’m using the approach where in each section we want to achieve something whole, something working.
Finally, one of the goals for this course is the MVP approach, where MVP stands for Minimum Viable Product. This is a similar concept that was lied down in agile methodology. Basically, with every chapter we will try to get to something functionally complete, without paying too much attention to things that are not essential. Instead, we will try to get something working as soon as possible with only the essential knowledge.
Take your time, learn and enjoy the journey!
Here are all available lessons:
PART 1 – The Basics
- Window Application – create a minimum window, on which we will be presenting the frames
- Logger – create a simple but effective singleton logger class using a singleton design pattern
- COM and DXGI – enumerate all available GPUs and monitors and learn about COM along the way
- Hello, DirectX! – first encounter with DirectX, laying the groundwork for command submission to the GPU
- Swap Chain – create a set of buffers needed to store our frames prior to their presentation
- Frame Presentation – a framework for frame presentation, a beat in which the frame is produced and presented
- Render Targets – encapsulation for Render Target, along with Descriptor Heap management and internal resource state management
- Shaders – gentle introduction to the shaders, their creation and compilation; also first look at some HLSL code
- GPU Pipeline – a look at the GPU pipeline, as well as creating first Root Signature and first Pipeline State object
- Memory Management – an introduction to explicit GPU memory management