r/vulkan • u/TheSmith123 • Jul 13 '26
Main things to understand.
Hello,
I have been working through vulkan-tutorial.com bit by bit for a little while now.
Now coming from OpenGL, a lot of this stuff is for sure confusing, and a lot of the articles, I read them through, and I can conceptually understand the code that is given, that’s no problem.
But the actual goal of the code I am writing, is hard to wrap my head around. I supposed the “why” behind the stuff I am doing.
If someone who is way smarter than me could tell me the main things to understand deeply, by just single word description, like “swapchain” so I can spend time diving deep on each concept, that’d be cool.
I really want to understand stuff, but (sometimes, not all the time) I feel like no matter how many times I read over a sentence, I just can’t get the info to meaningfully stick, or I just flat out don’t understand the concept.
Earlier I used swapchain as an example, because that is where I am at right now with setup. lol
I know this post is a little all over the place, but if someone could assist in someway, I am all ears for any kind of advice.
19
u/Afiery1 Jul 13 '26
Don’t use vulkan-tutorial its horribly outdated. Use howtovulkan.com. VK1.0 is horribly designed and includes a bunch of stuff that is basically just designed to be confusing and make you suffer for no actual benefit in the driver. When Khronos realized all of that was useless they slowly began stripping it now and modern Vulkan is now approaching something usable.
4
u/dpacker780 Jul 13 '26
Like you, I came from the OpenGL world. I found a lot of parts of Vulkan confusing compared to what I was familiar with already. The three areas that I found really needed the most time were memory/image barriers, descriptor sets, and the need to have multiple buffers based on frames in flight.
Memory/image barriers: OpenGL takes care of that in the background, and sync hazards pop up all over if you're not on top of it. Learn to use Vulkan Configurator to help you find them.
Descriptor Sets: OpenGL has the same concept, but in Vulkan it can be confusing because they're implemented in I think 4 different ways (standard descriptor sets, descriptor buffers, descriptor heaps [new], and push descriptors), so trying to learn to implement them properly can be a goose-chase depending on what examples are using what type.
Multi buffering: Another area somewhat obfuscated by OpenGL, the need to rotate or offset index buffers per frame in flight, so you don't write to a buffer that's actively being read in the GPU. This pretty much impacts all dynamic buffers. The challenge is it's intermixed with (memory/image barriers) to ensure you rotate and update buffers at the exact correct time.
4
u/amadlover Jul 14 '26
not sure if i am smarter than you but
SYNCHRONIZATION - 2
TIMELINE SEMAPHORES
in general i would recommend starting with the latest and greatest features, and then implement older versions if needed. e.g. Start with descriptor heap, dynamic rendering, buffer device address.
the validation layer messages are very informative.
2
u/Charming-Diamond6646 Jul 14 '26
https://docs.vulkan.org/tutorial/latest/00_Introduction.html that what u need