These days you could just ask a bot to port your stuff from OpenGL to a newer API.

Backward compatibility is less of an issue when fixing legacy stuff takes $25 in tokens.

Unfortunately there is no universally supported newer API thanks to Apple.

There's some libraries like wgpu that can fill this gap in practice

Minecraft has been moving to Vulkan and using MoltenVK to run the same backend on Mac.

In that case maybe the answer is $200 in tokens to make a metal OpenGL shim and then share it to the community on GitHub.

Given the comparable performance of OpenGL and Metal on the same hardware I was under the impression that is how Apple had been implementing OpenGL for quite a while.

OpenGL on Apple GPUs is implemented on top of Metal with some private extensions to be closer to OpenGL behaviour. Making things work performantly on top of regular Metal is quite a bit harder.

Not sure why this is downvoted, it's true: https://rosenzweig.io/blog/asahi-gpu-part-6.html

> Comparing traces, the render pass "OpenGL mode" sets an unknown bit in this kernel-processed block. If we set the same bit in our OpenGL driver, we find the clip space changes to -1/1.

Isn't https://github.com/google/angle just that?

Edit: I guess no, Angle is OpenGL ES. My bad.

> Angle is OpenGL ES

In practice this is sufficient for the overwhelming majority of apps. Apple never went past GL 4.1 on the desktop side, and doesn't support most of the interesting desktop-only features (tessellation and geometry shaders, mostly), so ES 3.1 targets desktop macOS fairly cleanly.

Metal is universally supported among Apple's product lines.

Just as useful as DirectX being universally supported in Microsoft's product lines.

The point of OpenGL was to have an API universally supported everywhere

That's a bad analogy

How so?

Both are os-specific graphics apis. It seems pretty comparable to me.

Wrong

Could you explain how?

Why is it a bad analogy? I don't have experience on either of the libraries, so I may be missing something.

Everything is universally supported in a small enough universe.

Shouldn't Apple be the one spending the $25 to deliver a product that works?

I can port _my_ stuff away from OpenGL, but can't port 3rd party or legacy software that I use.

"Why have X when Y costs $N in tokens" is becoming a tired thought-terminating cliche.

It shouldn't be user's responsibility to have to get their binaries to work at all costs.

How about they spend $25 in tokens to fix what they broke?

Why, yes, of course, have all the devs in the world spend $25 and tons of time each, because Apple doesn't care about devs nor users.

/s