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.
OpenGL seems like a no-brainer for future survival as MSFT platform dominance exhibits entropy.
The PS3 used a proprietary API based on OpenGL 1.0.
http://www.eurogamer.net/articles/digitalfoundry-how-the-cre...
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.
http://www.zdnet.com/latest-os-share-data-shows-windows-stil...What game developer say to themselves,
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.
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.
We've got plenty of directx support for those too. What are they again? Surface? Windows phone? I think I know one guy who has one.
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.
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.