Hey folks 👋
So… this is my first ever post on graphics programming. I’m not a writer, but I figured it’s time to document things. I started with DirectX 11, and while it was great for getting things on screen without losing my sanity, I eventually hit a point where I wanted more control. As I am also a system programmer who developed system apps and drivers in the past, I needed GPU-level control. Because I wanted better performance for specific usages.
I got into Vulkan.
It’s low-level and cross-platform. It’s verbose enough to make you question your life choices. After the switch, I myself also struggle with little things that cause my apps to crash. Eventually, I got over all that.
Why Vulkan?
Here’s the deal:
- DX11: “You want a texture? Cool, we’ll handle the memory and syncing for you. Just don’t ask too many questions.”
- Vulkan: “You want a texture? Allocate memory manually. Bind it. Set usage flags. Sync it properly. Otherwise, keep debugging the app crash for the next few days. Good luck.”
And that’s exactly why I switched. Vulkan doesn’t abstract away the hard stuff; it throws it at you like a boss fight. But once you get past the initial pain, you start to see how much control you actually have.
🔍 What have I learnt so far?
- Initialization: You’ll set up instances, devices, queues, swapchains, and a dozen other things before you even draw a triangle. But each piece teaches you something fundamental.
- Sync or suffer: Vulkan won’t babysit your pipeline. You’ll need to master semaphores, fences, and pipeline barriers unless you enjoy undefined behavior.
- Memory is manual: You'll deal with alignment, heap types, usage flags, and device memory limits.
- Validation layers = life savers: Just turn them on without questioning it.
Advice to fellows
If you're starting your graphics programming journey and wandering about which graphics api to choose from, never choose any low-level api like Vulkan or DX12. Just start with a basic api like OpenGL or DX11 and learn rendering things from basic to advanced. At some point, you may realize you need to switch to get better performance in the applications.
If you’re coming from DX11 or OpenGL, brace yourself. Vulkan is not plug-and-play; it’s plug-and-pray until you get the hang of it.
Start with a triangle, then buffers and shaders. Start with the vkguide.dev or the official Khronos docs. Also read the specs; it's surprisingly readable.
That’s it for now. I’ll probably write more as I go deeper into shaders, pipelines, and maybe some ray tracing stuff later.
Thanks for reading
Top comments (0)