84 comments

[ 2.9 ms ] story [ 143 ms ] thread
I don't see any mention of their deprecation, is the linked page correct?

As an aside, Apple has been pretty good about adding support for WebGL 2.0 and WebGPU to Safari recently. I wonder if this will drive more people to build web apps instead of having to target Metal.

The page shows the current news, here is an archived snapshot from 2018 that talks about the deprecation: https://web.archive.org/web/20181226081443/https://developer...
So wait since they seem to have changed the page, does that mean opengl isn't depricated (or planning on being depricated)?
Sure, if all they care about is the GPU state of art in 2011, because WebGL 2.0 won't go further than a OpenGL ES 3.0 subset.

Also when WebGPU gets released later this year, it will be a subset of version 1.0 from Metal, Vulkan and DX 12.

If you want state of the art graphics on the Web, only via streaming like Unreal Pixel Streaming, GeForce Now or XBox Cloud.

OpenGL can't be deprecated, just like IPv4 or HTTP.

That combined with the fact that VAO that came in version 3 is the last feature makes all threats to force you to update weak at best.

As hardware peaks you can stop worrying about new things and write software that never goes bad.

The wheel has not been rediscovered for a long time. Focus on the vehicle instead = bike.

Yeah, I bet apple just wants to discourage project managers and other deciders from using OpenGL and adopt their new thing.

In the end, those strategies will require more work from developers, and those developers become "locked" on apple. It's a shitty practice.

Wouldn't it make more sense for the developers to target something more universal like Vulkan and then add an abstraction layer like MoltenVK[1] to make it work on MacOS if needed?

[1]: https://github.com/KhronosGroup/MoltenVK

Vulkan takes a lot more effort than OpenGL.
I think there's a confusion of terms, there's a big difference between 'deprecated' and 'obsolete'. They sure can be deprecated, which can be read as "not recommended for use and _may_ be removed in a future release", but that doesn't mean it has been removed/made obsolete.
The joke from when I worked in Google was "deprecated means stable"
that's it, but with a twist: stable with probable serious design flaws that might or might not jeopardise your assomptions and whole work upon it.
(comment deleted)
This reminds me of the horrible state of mac gaming back in the day when almost no games existed for mac. (Minecraft was one of the only decent games I remember being able to play, due to being built on opengl.) Things aren't perfect on that front yet but it's certanily improved a lot. I wonder if them forcing people to use metal for graphics could bring this wall up again to make the bar too high for developers to port it.
As a Mac person, I can report that it still sucks. If I'm lucky, I'll get to play a AAA game, a year and a half after it's released on Windows.

All that sneering at Macs as "toy" computers is ridiculous. It's the worst gaming platform in the world. Linux is better.

I use a Mac because I need to get work done.

Makes me wonder if there's an opportunity to make games for the mac. You can make decent things with a month turnaround if you're proficient and there's a lot of mac users. If they're this desperate it might be a lower hanging fruit than a lot of other SaaS type ideas that you could try to tackle for a side hustle.
> Makes me wonder if there's an opportunity to make games for the mac.

M1 Macs can run the extensive iOS game library. While you won't find many AAA Windows or console games on it, there is no lack of entertainment on the platform.

I don't think there's any market. The only people who buy macs are people that have no intention of playing videogames on that system.

I personally transitioned from Windows -> Linux -> MacOS, and each switch correlated exactly with how much I was playing videogames at that time. I don't play games anymore which is why I'm perfectly content using a mac. If I wanted to play games again I would go back to linux, or all the way back to windows.

For niches like stragey games there's actually a surprisingly high level of support for macOS on Steam. Just don't expect the latest AAA game console ports.
Back in PowerPC days, there used to be a company that would port popular game titles to OS X a few years after they were released for Windows.

I don't remember their name or know whether they're still around, but I believe that at least on Intel Macs, Wine/Crossover have already claimed that niche, and it seems like there are some promising efforts to go on on Apple Silicon (with a combination of Wine system call translation/reimplementation and Rosetta 2 CPU architecture emulation).

Mac folks that want to game just use GeForce Now.
Halo: Combat Evolved was originally a Mac game, before MS bought Bungie. Bungie's earlier games were released on Mac first (and maybe only; I don't recall). Myst was a Mac only game for a few years after its release in 1993.
Yeah, Bungie started off as a Mac-only shop.

They had some really good games (for the time. They would be a bit old-fashioned, these days). I liked the Marathon games (I think they open-sourced them, and you can actually run them, nowadays).

I know that they started developing Halo as a Mac-only game, but didn't realize that they had shipped it, as such, before being borged.

They didn't, the Mac version of CE is a port of the PC port, shows the Gearbox logo on startup.
My partner and I tried for 20 years starting around 1992-ish and released several games that all ended up being basically failures. The biggest thing is that Apple loves deprecation, so we found ourselves having to rewrite everything every 3 years or so, meaning it was all engine work and very little actual storytelling/art/plot/whatever. And it's not just us - the vast majority of the apps and games on my hard drive no longer run.

Personally, I don't endorse any vendor lock-in. If I ever make another game, it will target Steam and whatever Unity or the engine of choice cross-compiles to, maybe Oculus and a few others.

Also mobile ended up being a disaster on multiple fronts. I truly feel that software development lost its magic around the time that iOS and Android forced everyone to use Objective-C and Java. Which also undermined web development because vendors stopped solving actual problems in the browser and passed the buck to frameworks. Now we have the perception that stuff like Electron is somehow bad, which is like saying that higher education or any other quest for a better future is bad. The glorification of ignorance has passed the point of believability.

And yes, I'm a bit saddened that I spent the most productive programming years of my life chasing a dream that didn't pan out. But, I also feel that the world is waking up out of whatever this malaise we've been in is. There's arguably more opportunity to earn a living making software now than ever before.

Just remember that the next recession starts right when you finish your software project, so embrace that idea and build it anyway.

They're not toys. They're jewelry.
(comment deleted)
What work can you get done faster on a Mac than any other computer?
Software developer that doesn't want to fight Linux to get wifi going?
I had more trouble getting wifi going on an M1 Macbook than on my Linux laptop. It didn't want to tell me my password was wrong, it just wouldn't connect. Neither is a huge issue.
Wifi and even sound these days are usually ok. Bluetooth is still (usually) a nightmare though!
I thought Bluetooth was usually a nightmare regardless of OS or device.
Bluetooth is indeed a shitshow. Apparently it's worst on Android.

I enjoyed trying to hunt down a bug only to discover that the BT chipset in circa-2015 Macs is defective.

Good point, I have endless issues regardless of device. Well Apple on Apple is ok, but everything else is a shitshow, with desktop Linux leading the way.

But still, that's a lot of progress for a "toy" OS!

(comment deleted)
"toy" doesn't refer to gaming. It refers to it not being able to do many things expected of a real computer.
Like playing games? Because that's about the only thing that a Mac can't do (mainly because no one writes games for them. The system, itself, does games very well). Otherwise, it's a pretty decent environment for doing "computerish" stuff.
I was one of the original Mac 3rd party developers, I was in their beta developer program in '83. I had a Commodore Computers game company, and my intention was to be one of the first Mac game developer companies. Nope. Apple was deciededly hostile to the concept of published games on their system, and basically drove me away from ever publishing ANY mac software at all. Which I never have. Their development environment simply sucks ass, and then their professional treatment of entertainment software developers is worst. They reaped what they sowed.
> I wonder if them forcing people to use metal for graphics could bring this wall up again to make the bar too high for developers to port it.

FWIW a new engine i'm tinkering on now and then[0][1] has an OpenGL renderer - and not even that fancy new "modern OpenGL" stuff, it is OpenGL 2 (though not out of any real practical reason, i just noticed at some point that after a couple of fixes it could run on the Athlon64+ATI X1950 Pro[2] i used back when i was in school and nowadays use as a 2000s retro PC and decided to just stick with it as a "lowest end" mode). I'm making it for the purpose of making games and my take is basically, if some platform supports OpenGL i'll support it, if not then whatever (though i'm not against using some compatibility layer as long as i can use it from Free Pascal at least).

[0] https://i.imgur.com/DBaqhMo.png

[1] https://i.imgur.com/3lDvt7v.png

[2] https://i.imgur.com/m0pWioN.jpg

OpenGL/CL is officially deprecated in all Macs, but Apple will probably not remove it for quite some time, because of many really important 3D applications (like Autodesk products) having trouble with ditching their OpenGL/CL legacy code.

Even more hilariously, I’ve heard anecdotes that the quality of the OpenGL drivers for M1 are higher than expected and is pretty heavily optimized!

The OpenGL "driver" on the M1 (and on iOS) is just a wrapper around the Metal API, like MoltenVK is doing for Vulkan.
So? It's not like other OpenGL drivers don't have lower level abstraction layers internally and Metal is something Apple apple controls and therefore can extend if the higher level OpenGL driver runs into performance bottlenecks due to the abstraction. And the "just" here is unjustified considering the complexity of a performant OpenGL implementation, no matter what API you have available to build it on - the fact that Apple have bothered to do that considering the deprecation and their general disdain for backwards compatibility is positively surprising.
So... even though OpenGL is deprecated there seems to have been a lot of work going on under the hood to preserve the "status quo" for the future (e.g. Apple's OpenGL implementation now seems to be a shim on top of Metal instead of having a separate low-level driver).

I guess that means we won't see any new GL versions above 4.1 (TBH: good riddance), but what's there now will probably work for a while.

From what I heard, Apple‘s OpenGL driver had a lot of bugs & issues, now that they kind of re-built it as a wrapper, did they they care to replicate the bugs as well? If not I would assume that some Apps might not work with this new wrapper or maybe some even get perf boosts. Or am I understanding things wrong?
From what I'm seeing with my own GL code (fairly basic GL 3.2 stuff), the actual GL implementation is quite ok, but utility classes like NSOpenGLView have been a bit hit and miss in recent years.

I would expect though that their new GL-on-Metal thing is a bug-for-bug compatibility layer for existing applications, otherwise it wouldn't make much sense because new apps shouldn't use GL anyway.

openGL for all it's faults is still miles more preferable then proprietary, only useable on Apple devices, Metal.
OpenGL was practically deprecated on MacOS since 2012. It hasn't been updated since 2011.
The link just points to Apple's general developer news.

It mentions many M1-related stuff so it's impossible that the page dates to 2018.

3D APIs are like GUI toolkits: Use the one supplied by the vendor. Metal on Apple, DirectX on Microsoft, whatever proprietary one comes with the game console(s) you're developing for.

If you're a gamedev, your engine should abstract all these away. If you're a gamedev, you should be using a commercial engine unless you have a John Carmack on staff.

OpenGL and Vulkan are the worst of all worlds and really only make sense on Linux or Android, which have nothing else.

The vendors are the GPU manufacturers. And both AMD and Nvidia offer full support for OpenGL and Vulkan.

There is no reason why I should have to use a different APIs to access the exact same graphics hardware depending on whether I'm running Windows, Linux or MacOS.

OpenGL and Vulkan work just fine.

For various levels of just fine, and cranky tooling.

It only took 20 years to have RenderDoc catch up to PIX, and still nothing comparable to DirectXTK or MetalKit in sight.

And in regards to game consoles even worse.

> And both AMD and Nvidia offer full support for OpenGL and Vulkan

With big fat asterisks for the AMD OpenGL drivers on Windows :-P.

Just recently i read about someone trying Zinc (the OpenGL-on-Vulkan implementation) on AMD hardware under Windows is actually faster than AMD's own drivers (which is on line with what i've observed with my own code between AMD on Windows with AMD's drivers and AMD on Linux with Mesa with the latter being way faster than the former).

You should try out DXVK on Windows; it's usually as fast, if not faster.
I used it to bypass some issues with D3D9 games that AMD's newer drivers had (apparently it isn't OpenGL that takes the short stick anymore, it is just that OpenGL's stick happens to be the shortest :-P). I didn't notice any performance difference.

Regardless, i've switched back to Linux ever since i could run most of my games without needing Steam and Proton (wine-staging with DXVK and VKD3D-Proton - which works on regular Wine too - seems to work perfectly fine).

Gaming on Linux has been a complete joy. Some games do run worse (e.g. No Man's Sky takes a long time to procgen textures), but others run significantly better (10-15% uplift in AOE IV). If a game doesn't work on Linux then I simply don't play it.

My only gripe is VRR under Gnome. I might try Sway out again.

Use Qt for tool GUI.

Write your own game engine, it's fun. Other programmers aren't God.

Use OpenGL ES or Vulkan. Windows, Android, and Linux are really the only platforms that matter.

On the desktop Linux matters very little.
For gaming, Mac matters even less
It matters enough that all major middleware engines support Metal.

GNU/Linux cannot even get ports from AAA games using Android NDK or Stadia, and has to emulate Windows instead, that is how much it matters.

iOS matters enough that the middleware engines support Metal
Might be, still here we have two UNIX based mobile platforms, with most game developers not caring one second about GNU/Linux.
OpenGL is supported by all middlewares and is native to Linux the way Metal is native to Mac. And Mac isn't getting ports of AAA games either.

If supporting Metal means Mac matters, then supporting OpenGL means Linux matters. If Linux having no ports means it doesn't matter, then Mac having no ports means Mac doesn't matter. Either opinion is defensible, but at least be consistent.

Many studios use Macs for the artists responsible to produce those AAA titles, Linux not even that unless we are talking about Hollywood studios that used SGI workstations and don't give a damm about what Linus thinks about NVidia.

You want consistency?

What about GNU/Linux not getting any of the OpenGL ES games from either Android or iOS from the last 10 years.

Artists now? You're moving the goalposts to outer space. What about the websites for those AAA titles that certainly run linux, which has 90%+ of the server market share?

It's clear now you're just here fanboying for your favorite company, so I'll end it here and leave you alone with your thoughts, the only place where the Mac is considered a gaming platform.

You're the one moving goal posts, artists are part of AAA game development the last time I checked.

Should I have explicitly mentioned game developers to make you happy?

We are talking about the desktop here, I am the first to admit defeat in UNIX having won the server room, at least until it doesn't get replaced by unikernels and serverless running in type 1 hypervisors.

My favorite companies for gaming are SEGA, Sony, Nintendo and Microsoft, see how you get it all wrong?

Enjoy Proton, don't let it crash too often.

For gaming, iOS matters more than Android.
iOS, yes. In mobile games market (which let's be honest, is considerably different segment from "desktop/laptop" gaming).

If M1 Macs didn't support running iOS games, remaining Mac ports of games would overlap heavily with games that also have Linux ports (especially after apple killed off all older 32bit Unity titles)

So, at this point, I'd consider mac gaming (not iOS) to start circling Stadia levels outside of Indie games that swallowed the pain of mac port, with things like Valve SteamDeck causing more interest in gaming on Linux than ever.

I like how you disparage OpenGL and promote John Carmack in the same breath. You do realize his opinions right? This is from 2020:

> OpenGL already has a patina of “old tech” like C, but it will almost certainly still be in active use for various things a decade from now. [0]

[0]: https://mobile.twitter.com/id_aa_carmack/status/131388553587...

Quick shout-out to a graphics abstraction library that works quite well: sokol.

https://github.com/floooh/sokol

It has DX11, Metal, and OpenGL backends (with optional shader compilation tool from GLSL to each target), which is probably all you need to get cross-platform support for all desktop and mobile targets. Rewrote my OpenGL code to this, was a pretty nice experience. The subset of graphical features it exposes seems more than good enough for simple 2D games (probably enough for simple 3D ones also). Can't say more than that though, since I haven't seen a shipped 3D game on Steam using it yet.

Though what we ultimately need for the future is a Metal-like API that runs on all platforms (since from what I've heard from other graphics developers Metal's API design is quite nice and finds the right balance between low-level control and high-level usability). The experimental SDL_gpu development (https://gist.github.com/icculus/f731224bef3906e4c5e8cbed6f98...) strives to achieve this, although it's still in the early stages...

WebGPU (wgpu in Rust land) is pretty fantastic as well.
Well… WebGPU is still in the early stages and seems a bit unstable as a target, so I wouldn’t start making an actual game with it right now.
These sorts of games from OS vendors are why everyone still writes VT apps.
This is madness. They simply don't want 3D software, otherwise they would have supported cross platform graphics Apis. No developers gives a damn about Metal on MacOS. They wouldn't give a damn about Metal on iOS, too, if Apple wouldn't have forced their hands.

Even MS allows OpenGL and Vulkan on Windows.

I'd love to see an implementation of Metal on Windows and Linux.
Why??? We have Vulkan and DX12. We can in theory have those on top of Metal. Why would you want Metal on others?
Metal (and MetalKit) is a more humane API. Frankly, I'd rather use old OpenGL than Vulkan. Vulkan feels like it was designed with the hardware in mind rather than developers.

DX12 may be fine, I have no experience with it.

This has been kicking my ass lately as I am trying to build a generic GL abstraction over the past year or so. OpenGL is in such an odd state that the actual graphics hardware hasn’t changed significantly in a decade or more, but the API certainly has grown to be more elegant. OpenGL 2-3 had a nice way of doing things, 3.3-4.1 is a weird and inconsistent API, and 4.3+ is nice again. But good luck finding support for 4.1+ anywhere. Not on macs, not on old cards, not on web, not on mobile.

So in 3.3-4.1 land, you get to do the exact same things you’d do in 4.3 land, but in more tedious ways programmatically, because the drivers and implementations decide how elegant you are able to make your code and abstractions. The commands that end up on the GPU are the exact same regardless but the developer experience is highly variable.

My point is GL versions do not delineate features nor performance enhancements past a certain point, they delineate periods of programmer happiness. It is solely up to the drivers, not the hardware, not the actual machinery, to determine this metric. GL, being a standard rather than an implementation, suffers for this. I happily await webgpu finalization.

What kind of cursed limbo is 4.2 in?
Well, historically, 4.0 was made to be roughly equivalent to 3.3 IIRC. 4.1 didn't add much and 4.2 started seeing changes going in the direction that was roughly complete by 4.5 I'd say. So each version bump in the 4.x range is just a history of getting a slightly cleaner API each version until you get to a version where you can personally say "I'm okay with this now" based on your preferences as a developer. For me personally that version is 4.3, it has the features where I think "this makes sense as an API" and things that came after that were just extra conveniences. But what are just conveniences for some developers are the basic core abstractions for other developers, and where you draw that line is up to you.

In my personal opinion, 4.2 is like, halfway to 4.3

But sometimes it's more comfortable to go none of the way than half of the way, hence me targeting 4.0 in my most recent library.