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.
Ha ha, no. The macOS 10.14 SDK deprecated OpenGL in 2018, and the page currently shows what's new in macOS 12. Here is a live page with the macOS 10.14 release notes showing the deprecation: https://developer.apple.com/documentation/macos-release-note...
The newer WebGL support in Safari is unrelated to the system OpenGL implementation. Instead WebGL in Safari is now built on top of ANGLE which has "new-ish" Metal backend:
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?
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.
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.
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).
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.
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.
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.
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.
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!
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).
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!
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.
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.
> 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).
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.
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?
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.
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...
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.
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.
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.
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.
84 comments
[ 2.9 ms ] story [ 143 ms ] threadAs 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.
I have been getting into metal, but maybe I should be looking more into Vulcan
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.
https://chromium.googlesource.com/angle/angle/+/refs/heads/m...
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.
In the end, those strategies will require more work from developers, and those developers become "locked" on apple. It's a shitty practice.
[1]: https://github.com/KhronosGroup/MoltenVK
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.
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 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.
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).
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.
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.
I enjoyed trying to hunt down a bug only to discover that the BT chipset in circa-2015 Macs is defective.
But still, that's a lot of progress for a "toy" OS!
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
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!
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.
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.
It mentions many M1-related stuff so it's impossible that the page dates to 2018.
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.
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.
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.
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).
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).
My only gripe is VRR under Gnome. I might try Sway out again.
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.
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.
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.
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.
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.
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.
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.
> 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...
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...
Even MS allows OpenGL and Vulkan on Windows.
DX12 may be fine, I have no experience with it.
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.
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.