New "How to Vulkan in 2026" tutorial

(Almost) 10 years of Vulkan

Vulkan went public almost 10 years ago. That’s a lot of time for a fast-moving area like realtime computer graphics. Vulkan 1.0 had to make concessions in order to support a broad range of devices available back then. That basically meant OpenGL ES 3.2 as a baseline, with additional features available for discrete desktop GPUs. Things have changed a lot since then. Vulkan is now at version 1.4, more than 300 extensions have been released, the ecosystem grew considerably and obviously GPUs have advanced. Desktop GPUs became faster and brought new features to the table, and mobile GPUs at least partially caught up. And often Vulkan would be the first, and sometimes only graphics API to adopt those new features.

Why (another) tutorial?

And just like hardware changed, the Vulkan API itself has changed a lot in that decade. Some functionality like render passes turned out to be not optimal, other functionality like buffer device address or descriptor indexing became widely available thanks to newer GPUs. Sadly not all tutorials/guides have been updated to reflect that and still teach people how to do Vulkan like it’s 2016.

I have been helping to fix this with e.g. the Khronos version of the Vulkan tutorial and the new Vulkan docs site. And while that did improve things, I somehow felt that something was missing for people wanting to get into Vulkan in 2026, no matter if it’s for the first time, or if they’re trying again after being put off at some point.

So I used the holiday break to create a completely new tutorial/guide from the ground up. My idea for this was to teach people how to use Vulkan as of today, so Vulkan 1.3 as a base line and features like buffer device address, descriptor indexing and dynamic rendering, leaving outdated parts of the API behind. I wanted it to be concise, pragmatic and less fragmented than other tutorials.

I also wanted this to be as easy to follow as possible. So C-headers, no hard-to-read C++ language features or object-oriented abstractions. All of this in a single source file and a single page tutorial. The tutorial itself walks the reader through the source from top to bottom, without diverging from the actual source or doing step by step source changes, something that I always felt odd about e.g. the Vulkan tutorial.

One area I also felt other tutorials were lacking, was the way things are explained, or better, (often) not explained. So I tried to give as much background as possible and also added lots of notes, hints, tips and pointers to other resources based on what I learned in a decade of working with and on Vulkan. Kinda like putting my knowledge to paper.

Another area where I wanted to improve, is what’s actually created as part of this tutorial. Tutorials often stop right where things get interesting by ending with a colored triangle or a static object. So instead this tutorial will set up a Vulkan application that renders multiple illuminated, textured 3D models and adds interactivity for selecting and rotating these. That should make this a more interesting base for people to built upon.

The result is a single page tutorial with roughly 13,000 words and 100,000 characters. And it’s now available to the public.

I’ll probably revise this from time-to-time if new features become core or widely supported. But other than that, I consider it (mostly) complete. As with my other projects, all of this is open source and feedback is welcome.

Where to find it?

The tutorial is now available at howtovulkan.com. The source can be found at github.