Apple deprecates OpenGL so I guess I'm learning Vulkan

2018-06-07

Apple have decided that - with the release of macOS 10.14 - that they’re going to deprecate OpenGL. Their reasoning is that their Metal API is significantly better, which is true. Unfortunately, this means that there is no longer one graphics API that is supported across all major platforms. It’s also rather inconsiderate to developers with released games that can’t easily port them away from OpenGL.

Now of course, just because it’s deprecated doesn’t mean you can’t use it. But it’s only a matter of time before they drop it completely.

So, as a Rust developer, where does this leave us?

Kvark, one of gfx’s developers, put it well in this post here. Specifically:

“If you care about long-term and willing to put up with minor API changes and perhaps filing some bug reports, I’d recommend going with gfx-hal. If not, just continue using GL.”

Here are two other relevant quotes - the first from me:

“So my choices are: 1. Learn Vulkan - I’m not touching that one just yet…”

… and another from Kvark:

“gfx-hal is … basically Vulkan now.”

Cool.

It actually is cool though

It’s worth pointing out that there are other alternatives. I could just use OpenGL until it stops working on macOS. I could also write a second rendering backend to my game that uses Metal. I could just not release on macOS (though since I develop on a Mac, that’s not ideal).

But honestly, I do want to learn Vulkan. It just seemed more effort than it was worth at the time. Given that gfx-hal is my best bet for cross-platform Rust graphics that don’t have a doomed future, it’s a lot more worth it now.

My actual game development will slow down a little while I learn Vulkan, and gfx-hal specifically. I’ll probably write about both of those, mostly for my own benefit, but hopefully it helps other people.

So far, I’m enjoying it. Vulkan is… verbose to say the least. But it does seem well designed, and once I get it, I think I’ll prefer it to OpenGL anyway. It’ll just take some time, that’s all.