2 ms·
In my opinion, yes you should probably learn a higher level api than Vulkan first like DX11 or OpenGL if you have no experience. This is also still important fo
by datalus 5y ago
In my opinion, yes you should probably learn a higher level api than Vulkan first like DX11 or OpenGL if you have no experience. This is also still important for 2D, creating a simple textured quad in Vulkan is at least one order of magnitude more complicated/verbose than the higher level mentioned apis.
In Vulkan, you're going to be manually describing to the GPU every last atom of your graphics pipeline. You also need to worry about how it's all laid out in memory through a bunch of descriptor objects that you're building in tandem. Then there's syncing between the GPU and CPU via semaphores etc to transfer data, which can be error prone and hard to debug. This results in very verbose and hard to read code. If you've never touched a graphics api before, I think frustration starts to mount and you'd be more likely to just give up. The upside is you have total control over how the GPU interprets and executes your workload (most likely a triangle as a beginner :P)
Anyway, a lot of this is hidden away in DX11 or OpenGL, you call a few functions here and there and it will do all of these lower level concerns for you. I think once you get used to the jargon and feel of apis like these, you can then start to see how Vulkan or a similar low level api would fill in between the higher level procedures/objects.
Edit: For any graphics api, imo, if you're concerned about building a game you'd probably also not want to touch those apis directly from game code. In DX11 or OpenGL it's not too hard to wrap that up in a bit higher abstraction but in Vulkan you'd almost first want to wrap Vulkan into an api that can be used without writing a ton of manual setup and then use that api to write a higher level, more game appropriate abstraction to call from the game's code. (usually done as part of an engine/framework)
Edit 2: Having said all of this, you could ignore all of the nitty/gritty details and just copy paste the code from the tutorials and make a workable api for yourself to try to understand. Up to you and how you like to learn.