skeletonbow: Just found an interesting commentary which is a comparison between OpenGL and Direct3D as they evolved over time since inception and the ups and downs both interfaces have had over time which ultimately lead developers of particular software to choose one API over the other depending on what their needs and priorities were.
https://programmers.stackexchange.com/questions/60544/why-do-game-developers-prefer-windows?answertab=votes#tab-top shmerl: This was already linked above :)
Oh... heh. Kind of funny as I didn't see that in the thread (didn't read the entire thread), and I googled around to see if I could find some other useful things and found that and thought it post worthy. Probably should have scanned the thread more carefully. :)
dirtyharry50: I think it is not realistic to expect there will be a singular graphics API that personal computer operating systems and console operating systems as well will all use. That is very unlikely to happen.
shmerl: Why not? Modern GPU use pretty common logic which abstracts pretty well with APIs like Vulkan. If you paid attention, both Metal and DX12 are very close to Vulkan in design. Not just because they all used Mantle as their base, but also because that's how GPUs work. I.e. those APIs abstract the common hardware design of modern day GPUs. So there is no reason why there can't be one common abstraction.
I completely agree from an ideal theoretical point that a single API for anything could ultimately exist and make competing APIs irrelevant over time. However there are things that can block that from happening too, such as individual entities such as corporations or other organizations rejecting standardization to a common API outright whether it is because they dislike the implementation, dislike the pace with which something is happening (ie: design by commitee) or some other factors. Microsoft and Apple are notorious for designing their own solutions and often completely rejecting open public standards or implementing them in a minimal way for compatibility as an inferior product, or even embracing and extending them incompatibly.
So while it is theoretically possible that a single API could exist for this and be evolved by all players, in order for that to actually happen, all of the players that need such an API have to all agree at some point that the pros of working together on the common standard is not just best for developers using the API and consumers etc. but that it is also the best solution for themselves in the end.
If they don't perceive that, and they think they can do better and have their own solution become popular and also provide some vendor lock-in along the way (such as DirectX does), then they're likely to continue to embrace that approach as it clearly works for them and their own business interests.
As long as Microsoft Windows dominates the desktop PC market as it does now, and Microsoft continues to design and build new versions of their DirectX APIs and possibly provide features in it that are superior to other solutions or even simply to make such functionality exist in their solution before it is available in other solutions, or provide some other value-add selling point to use their APIs, then developers out there will line up to use Microsoft's solution they end up perceiving that it will help them solve problems better than other competing solutions.
There are many many APIs, protocols, standards, data formats out there that this happens with too due to various companies out there ignoring standards (Microsoft and Apple spring highly to mind). The OPUS audio codec, FLAC audio codec, WebM video codec, OpenAL, various web standards such as WebRTC, and many many more.
Folks like you and I and many others see a strong value in open public standards and that single standards provide a great deal of value, but companies like Microsoft may see standards as impeding their progress and goals, or that they give a level playing field for all companies rather than keeping Microsoft in a position where they are dominant.
In some cases public standards have won the war so to speak, and in other cases companies like Microsoft continue to essentially crush public standards even if they happen to be superior in every way to other existing solutions.
In this case all we can do as consumers and developers is keep fighting the fight, and promoting open standards and using them in light of what Microsoft does. That formula has worked at changing things in the past, but it can be a hard ride. :)
dirtyharry50: It would be redundant when they already have Metal.
shmerl: Apple are free to kill off Metal if they worry about redundancy. It will help everyone, and developers primarily. AMD are killing off Mantle now, because they see Vulkan as a clearly better single alternative. But as you know Apple have a very strong NIH bend a lot of times, so I personally doubt they'll kill off Metal.
I agree and think that the same arguments could be applied in both directions for Direct3D too in that Microsoft can see OpenGL as redundant when they have Direct3D, as well as your statements substituting Microsoft+Direct3D with Apple+Metal.
These companies can go their own way, but ultimately they only succeed in these forced-play games if developers sign up and go along with it. If developers forcibly respond and use something else eventually the proprietary solutions die off. A perfect example of technology that dominated the landscape for a particular problem-space for a long long time which is now quickly falling out of favour and will become extinct in the near future as it is replaced entirely by open public standards and/or other solutions is Adobe Flash. Flash is used for less and less web content online and less likely to be used in new projects as web designers lean towards favouring HTML5 technologies over proprietary solutions like Flash/Java/Silverlight.
It'd be nice to see OpenGL/Vulkan get to that point as well. One thing that I personally think could make that a much higher possibility would be to see Linux usage become much more mainstream than it traditionally has. Not just on all the portable devices and embedded devices, server backends and farms, etc. but right on modern desktops, gaming platforms (like SteamOS) becoming highly popular and it really picking up significantly in head count.
If (or perhaps
as) that happens, I think we'll see more and more developers want cross-platform solutions backed by seeing larger percentages of their customers and thus their revenue streams using such solutions and bringing more importance to them.
Right now if a developer gets 90-100% of their sales on the Windows platform they're likely to not consider cross-platform very important for their goals and to favour the Microsoft solution's benefits as better for their purposes. But if 50% of their sales come from Linux and other platforms, they may favour writing code once to run on all platforms as higher than to have to support multiple solutions and may switch to OpenGL/OpenAL etc.
Hopefully that happens eventually, as it's been a long time coming. :)