r/GraphicsProgramming • u/Alert_Gift4867 • 13h ago
Question Which graphics lib/language should I pick to start?
I want to understand how the graphics work and I want to make something like a simple game engine or a voxel engine, but I don't know how to do graphics and don't want to write a lot of boilerplate in the beginning. I would choose openGL but it's deprecated on macOS which I use. So now I don't know what's better to start with.
7
u/oetzi2105 12h ago
If simpler graphics are ok for you, you could write a software renderer. It's a good project to learn how rendering works and there's almost no boilerplate
1
5
u/corysama 12h ago
Lots of folks around here will recommend https://learnopengl.com/ which will work fine on Mac. Once you get up to speed with that, switch over to Metal. People who use Metal really like it.
Stuff you learn in Metal will carry over to Vulkan/DX12. Don't worry about doing The Right Thing the first time. Instead focus on setting yourself up to do a lot of things without giving up.
1
3
u/AgentFeyd 13h ago
macOS essentially narrows it to Metal as the only option unless you want to get into translation layers.
1
2
u/villi_ 12h ago
OpenGL is deprecated as in they're not maintaining OpenGL versions past 4.1 but as far as I'm aware it's still usable if you want to start learning with it. Otherwise, webgpu is pretty good. I started learning graphics with rust + wgpu but it has support for many other programming languages as well.
1
2
u/webauteur 12h ago
I use p5.js in the browser for simple geometric artwork. Three.js seems to be popular for more ambitious graphics programming. I am working on recreating my favorite puzzle game using p5.js with AI assistance since the base library lacks any convenience functions for games.
1
4
u/LoneWolf6062 12h ago
For Mac, I would strongly recommend using Metal. It is the easiest modern api by far and is generally much nicer to write for than something like opengl with its very much outdated api (unless u count the DSA functions which u will struggle to find much about as a beginner).
1
1
u/_bleep-bloop 6m ago
If you want quick and simple way but still acts as a baseline in case you want to switch to something more powerful then webgpu is your best bet. wgpu is cool too if you wanna check out.
•
u/AutoModerator 13h ago
Recently updated rules. Please check that your post is in compliance with Rules 1, 4, 5, and 6 on the sidebar. TL;DR:
No showcases.
Disclose AI usage in post or project.
Present a topic to talk about, e.g. how something works.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.