If you're want to have access to everything, Objective-C++ is easier.
Where C++ reigns in Metal is being the shading language.
If you're want to have access to everything, Objective-C++ is easier.
Where C++ reigns in Metal is being the shading language.
I get a headache even thinking about projects that affect, like, three different teams within my own company. I can’t imagine the kind of migraine I’d get from trying to push a completely new standard out to multiple CPU architectures, operating systems, and GPU vendors across multiple companies.
If anything, Mantle inspired Apple.
I think of the timeline like this: Mantle comes out and it shows that you can deliver performance improvements with a new API that more closely reflects the hardware. Microsoft goes off and starts working on DirectX 12, to bring those benefits to DirectX. OpenGL starts working on a new version of OpenGL, to bring those benefits to OpenGL, but the progress is somewhat slower. Apple works on Metal internally, so it doesn’t have to wait for a new OpenGL and doesn’t have to deal with committees. Khronos sees that they’re being left behind, and kicks off OpenGL Next.
Rough timeline:
2013: AMD makes Mantle (no GA).
2014: OpenGL AZDO talks. Apple delivers Metal 1.0. Khronos kicks off the Vulkan project, then named OpenGL Next.
2015: OpenGL Next renamed as Vulkan. Microsoft delivers DirectX 12.
2016: Vulkan 1.0.
As Long Peaks experience has shown, had not been for AMD, and Khronos would still be wondering how OpenGL vNext was supposed to look like.
This is why Apple has issues with Khronos, they didn't like what happened to OpenCL after giving it to Khronos.
Even Microsoft efforts with .NET are half hearted, with the goal to sell Azure, Windows and Visual Studio licences.
Using .NET outside Windows means leaving behind several frameworks that will never be ported, a VSCode subpar experience vs VS (unless you buy Rider instead), relying on the community for GUI frameworks,...
So they get better libraries (from more dev usage) and more native software on macos.
The knock against .NET is strange. Does Google need to make a cross platform GUI framework in Go for Go to not be half-hearted?
Go did not start as a Linux only product for 15 years, and then only got ported half the ecosystem to other platforms, while keeping the key IDE, the one with experience to rule them all, Linux only.
Rather Microsoft's upper management, see the hot code reload attempt removal from dotnet watch, the new .NET plugins for VSCode with the same VS license, or the recent killing of VS4Mac.
Microsoft's management is also on the record in a couple of places, that VS Code will never have feature parity with VS, or that the best dev experience is VS/Windows.
Metal on Windows would not help much because the GPU hardware is what's different.
A metal compatibility layer would encourage developers to start using it for games etc. Doesn't really matter if it performs a little worse - it just has to work.
Apple shipped Intel Macs with Intel/AMD GPUs until quite recently, so hardware might not matter significantly.