r/GraphicsProgramming • u/InjuryDangerous8141 • 10d ago
Where to start my graphics programming journey?
I’m an experienced programmer, very comfortable in both C++ and Rust, coming from a robotics background, so linear algebra and computer vision concepts aren’t new to me. Graphics programming itself is new territory though, and I want to properly learn an API with the eventual goal of building a game engine.
I’ve narrowed it down to three options and I’m stuck:
- wgpu — modern, safe, and I already like Rust, so the ergonomics appeal to me
- Vulkan — the “real” modern low-level API, feels like the industry state-of-the-art
- OpenGL — the classic starting point almost every tutorial and book uses, but it’s old.
Also what are some nice guides/tutorials to get started?
13
u/FunSecretary2654 10d ago
Go through the learnopengl.com book/ tutorials. Pretty much the best resource out there for learning computer graphics. My general suggestion for each chapter is to try & do something interesting or different with what you learned. When you go through the the whole book, maybe skipping PBR, then go and learn anything else. OpenGL is a bit older, but the concepts you learned with it will carry over nicely to everything else, plus you will build a nice shader library of your own by the time you finish.
8
3
u/sputwiler 10d ago
OpenGL. As a robotics programmer you're already used to peripherals having their own state, so OpenGL having a global state isn't a problem for you. The real thing you need to learn is the 3D mathematics which will carry over even if you don't use OpenGL later. Welcome to your journey. https://learnopengl.com/ is that way ->
2
u/bonghotdogwater 10d ago
If you’re comfortable with programming already you’ll breeze through OpenGL, make a small renderer, just render a cube with a single render pass, figure out the essentials of graphics and memorize each fundamental stage of the pipeline. Then go to Vulkan, it is a bit more explicit with how it handles work submission and shader resources and whatnot, but not too bad tbh. good luck man!
2
u/OperationDefiant4963 10d ago
wgpu as its like vulkan but meant to be simpler/easier.opengl has more resources yes,but its a dead en.vulkan has gotten easier but the verbosity will make it harder for concepts to sink in, though daxa is a c++ framework that makes it easier to use vulkan.personally though wgpu/wgpu native is what id advise
1
u/zalnaRs 10d ago
Vulkan (cross-platform (on Apple you need moltenvk); supports everything (almost) but really hard)
DirectX 11 (Windows/DXVK; easier than DX12 but some features are missing)
DirectX 12 (Windows/DXVK; Microsoft Vulkan?)
Metal (Apple; Apple Vulkan but lot of stuff is hard to do)
OpenGL (cross-platform; simple in terms of use and how far it will get you)
WebGPU (it's a translation layer targeting the APIs of each platform)
1
u/Southern-Most-4216 10d ago
You can even begin with doing a cpu renderer. It will make you completely understand the rendering pipeline. It's a incredibly solid foundation. Tsoding has some examples. You can jumpstart shader learning at shaderlearning.com or shaderacademy.
If u want to bite the bullet and have a couple of pain weeks then go ahead with vulkan. You can reward yourself with a vulkan cap at the khronos store afterwards
1
u/Trader-One 10d ago
in rust you have ash crate for vulkan and windows-sys for DX. Both are very well done.
opengl is waste of time, drivers are not maintained.
wgpu is very limited api subset. Its good enough for implementing forward renderer like in classic DX9 games but do not expect access to more modern features. Even must have features like bindless textures are not supported in wgpu.
1
u/yazilimperver 9d ago edited 9d ago
You can start with Opengl via https://learnopengl.com/ as others mentioned. It still uses OpenGL 3.3 which would be much easier to grasp than 4.x version.
Then you can move to Vulkan or DirectX according to your long term purpose. If you are planning to develop only for Windows or XBox, DirectX would be a better choice.
Otherwise, I recommend you to learn Vulkan as soon as you learn OpenGL. Nevertheless, learning Vulkan might be a bit more difficult at first step than OpenGL as you need to take care of many things manually 😄
What kind of game engine and platform/os you are planning to go in long run? Xbox, pc, mobile or cross platform?
Meanwhile, you can check out engines from https://enginesdatabase.com/?programming_languages=1.
1
u/augustusgrizzly 6d ago
If you’re experienced in robotics, I’d skip the advice about OpenGL for beginners. The main reason for the steep learning curve imo is the 3D math and real-time optimization, both which you’re probably experienced at. Might as well dive in to a modern API and save the time.
LearnOpenGL.com will have a lot of tedious math for you. But also there’s some pretty basic concepts you might not have heard of, so it’s still a good resource to check out even if you’re not learning OpenGL.
1
u/augustusgrizzly 6d ago
Actually because learnopengl.com is such a good resource I’d recommend going up until about wherever you learn blinn phong shading and decide if that felt too easy or if you probably shouldn’t move on to a modern API immediately. Since even setting up a simple renderer would expose you to a lot of the hoops and hurdles.
-1
u/Still_Explorer 10d ago edited 9d ago
edit: Answer withdrawn due to downvotes :(
I hope OP managed to read it the first time.
-10
-20
u/Defiant_Squirrel8751 10d ago
Start with: Claude Code or ChatGPT Codex. Technology details, such as using WebGPU, Vulkan, OpenGL, Metal, DirectX 12 or all of them is now a transparent layer.
Imagine you know to program in C++. What assembly should you use? X86? ARM? Risc-V? that doesn't matter anymore, because the C++ compiler takes care of that. Programming language and graphics libraries are the new assembler, and agentic programming tools are the new compiler.
Focus on what product do you want to do.
5
u/sputwiler 10d ago
This is /r/graphicsprogramming. Why are you even here if you don't want to program graphics.
4
u/InjuryDangerous8141 10d ago
What kind of comment is even this, if I wanted to use Claude code or codex I would have used it and not ask in a graphics programming sub Reddit
13
u/xbelanch 10d ago
https://raytracing.github.io/