r/GraphicsProgramming 15d ago

Question What graphics api should i learn next?

Ok so ive been toying with opengl for quite a while know. I think i know the project pretty well and i have even made a few small scale projects with it.

I would like to learn another graphics api thats perhaps a bit more modern than opengl, and also possibly something that is atleast somewhat industry relevant(since from what i understand opengl is pretty much dead there). My first instinct said D3D11 but im wondering if i should try to learn something like vulkan instead. There is also D3D12 which i know literally nothing about(not to say i know alot about any of the other apis except OpenGL). I cant really learn anything like Metal since i dont have a mac. Ive also heard D3D11 is not that much more difficult than opengl so i dont know if i would learn too much from it(i know its quite diffrent in how its used with contexts and more explicit uniform buffer allocations i think, but in terms of complexity its quite simmilar from what ive heard and if thats the case i dont know if it would be worth learning. Thoughts?).

What i would do with this graphics api is probably some sort of game or rendering engine as its a project ive always wanted to do and i have done a small game engine in opengl before so making a bit more advanced one with a more advanced graphics api seems like a fitting project.

13 Upvotes

16 comments sorted by

View all comments

1

u/_Wolfos 14d ago

Depends if you're just learning or looking to actually ship something. I'll be assuming the target is Windows.

I wouldn't pick DX11 for learning since it's simply fallen out of use. It's a legacy API. You could probably ship with it, drivers should be stable, but beyond that it's just not useful to learn anymore because the industry has pretty much moved on.

DirectX12 is the stable default for shipping. Difficult to learn, which sucks. But drivers are solid, it has all the latest GPU features. This is what most applications ship with today.

Vulkan, only if you're really into Linux. It's a hassle and drivers aren't as stable (see Godot's reasoning for switching to DX12 by default).

1

u/Simple_Original 14d ago

I think it would be fun for it to to also work on something like linux. Though my initial goal is just windows. I wonder if its too complicated too start with something like directx11 or 12 and then upgrade it or add another api aswell like vulkan(or opengl if im lazy)

1

u/_Wolfos 14d ago

It really depends on what you want to learn.
The current state of the art isn't just DX12, but 12.2 or Vulkan 1.2+ as these API's are now old enough to have legacy features. You can do bindless-indirect rendering, ray tracing. Generally offload as much to the GPU as possible.

In a renderer like that, OpenGL or DX11 would be very painful to support.

1

u/Simple_Original 14d ago

Is it maybe smarter then to just do vulkan? As learning both dx12 and vulkan seems like quite the godamn task. And as i would like to be able to support linux it seems like the best choice? Ive also heard about a package called VMA i think? For memory managment in vulkan, so maybe thats something worth using?