API use was shifted in favor of DirectX
by Microsoft's two-pronged DirectX
campaign around the launch of XBox
360 and Windows Vista, including the
spread of FUD (fear, uncertainty and doubt)
about the future of OpenGL, and wild
exaggeration of the merits of DirectX.
I thought it was because that, at the time, the OpenGL API was shit [1].
By the time of OpenGL 2.1, OpenGL was
running into a problem. It had a lot of
legacy cruft. The API wasn't easy to
use anymore. There were 5 ways to do
things, and no idea which was the fastest.
And really, the author of the blog post should have known this when the blog post was written...
And yet, it was locked by SE mods as out of topic. While I love Stack Exchange and I'm thankful for the value it brought in so many ways, this policy of locking reasonable and valid questions is just upsetting.
It's also a legacy issue: once developers start using DirectX, it's harder for them to go back, and traditionally PC development has been Windows-only (more or less) for many years. Now that the market is becoming fragmented again between different platforms, there is more incentive to go for a cross-platform API than before - and that's where standards matter.
Not really 'legacy' per se either... good luck running OpenGL on Microsoft's consoles or as a ModernUI application! DirectX being a broader and, in my opinion, better designed API certainly doesn't hurt it's adoption either.
What about OSX? Does DirectX work (at all/well) on it? Linux? How feasible is it to program with DirectX on any non-MS platform?
Edit: I guess the point I'm making is, OpenGL runs on non-MS as well as MS platforms (perfectly/badly is another question), but DirectX is locked to Microsoft only. That is what makes it of little to no value for people like me who need to care about cross-platform products and support.
I wonder what the percentage is when you figure the entire "computer" gaming market (eg. consoles, tablets, and phones). I suspect Microsoft's dominance on gaming is (and will become even more) weaker than we believe.
OpenGL seems like a no-brainer for future survival as MSFT platform dominance exhibits entropy.
Is PS3/PS4 development OGL or a proprietary API? Because if it is OGL then yes that makes said API far more useful for sheer amount of access to hardware.
It looks like in 10 years, Linux and OSX adoption will _probably_ approach 50% market share. Therefore, the best choice for my new game, which will be released in 3-4 years, is to choose OpenGL
I'm not a game developer, but I would bet they are interested in where the market will be in the medium term, and there is no indication Linux/OS X will suddenly dominate within that timeframe.
On traditional PCs and Macs, Microsoft
still owns an overwhelming market share,
with 91.8 percent of all traffic coming
from Windows-based machines. Among non-
Microsoft operating systems, both OS X
and Linux have stalled since October
2011, hovering around 6.9 percent and
1.2 percent, respectively.
Market share if one thing, but we are looking at a segment of gamers which may be split differently. Who says there isn't a larger proportion of Linux gamers in that segment, for example? If Humble Bundle is any indication, it looks like the Mac gamers segment and the Linux gamer segment is actually pretty close in size.
> as well as MS platforms (perfectly/badly is another question)
Not all of them unless you count using an OpenGL-to-DirectX wrapper library. "Cross platform" sometimes means writing all the platform specific code yourself.
Not an Apple or Google product? Gotta be awful! Love how people treat competition as something awful when it doesn't follow their own brand loyalty.
Edit: It looks like the authors snark isn't as obvious to others as it was to me. I'm all for cross platform development and doing whatever makes sense your company/brand in terms of development, all my side projects use tools that make them as portable as possible.
He didn't say anything about the quality of Windows RT / Windows Phone products. Sounds like he was just implying that they have a relatively small installed base compared to iOS / Android products. That's pretty hard to argue with.
But... this is not very important anyway. There's no reason to have a "brand loyalty" flame war. Arguing and flaming about this on the internet is not productive. Let's just have a practical discussion about how to target multiple mobile platforms.
If I was serious about writing a cross-platform mobile game, I would use some middle-ware like Unity, Unreal Engine, Cocos (yes there is a version for Windows Phone), etc. This takes care of the underlying differences between OpenGL ES and Direct 3D, so the developer can focus on the game itself and not worry too much about the rendering engine or graphics API.
If I was writing some other app that used OpenGL ES, I could still make a port for Windows Phone / Windows RT by using a wrapper for the graphics-specific code. Such wrappers already exist, and it is not too terribly difficult to roll your own if you prefer.
A lot of times, when you see a big game that is available on iOS, Android, AND Windows Phone / RT, usually they have done this:
- Use middle-ware as discussed above already
AND / OR:
- Write the majority of the logic in C++ (all of these platforms have ways of utilizing C++ code), and use a graphics wrapper that isolates the rendering code, so you can work with OpenGL ES or Direct 3D interchangeably.
I suspect there isn't a huge intersection between phone/tablet developers and desktop/console developers. I haven't played a game in a while, but it seems like the two markets are still very different.
And to continue the story started from the stackexchange post, again the depreciation turned out to be a good decision. Guess what OpenGL ES that is used today on mobile devices and WebGL in browsers basically is?
OpenGL was not in any way shit when DirectX started overtaking OpenGL.
It became so around the time GPUs started being programmed by shaders - prior to that era OpenGL was quite pleasant compared to DirectX, yet DirectX mostly overtook OpenGL
I'm not sure I agree with your last point. With the exception of Direct3D, pretty much everything from DirectX has been deprecated at one point or another and replaced with external libraries that usually originate from Xbox development.
DirectInput, for instance. Over-engineered and badly designed, then virtually abandoned (because who ever gets promoted for fixing bugs? You get promoted for features). Definitely not what anyone really wanted from an input API.
[1] http://programmers.stackexchange.com/a/88055/7067
[2] http://en.wikipedia.org/wiki/OpenGL#OpenGL_2.1