OpenGL vs Direct3D… YAWN…
So on the eve of Microsoft announcing DirectX 12, Nvidia, AMD and Intel join together to do a panel at the GDC extolling the performance virtues of OpenGL and as usual the media imagines that this is an ENDORSEMENT for OpenGL.
Nothing could be further from the truth, this was a cry of desperation from some of Microsoft’s biggest hardware partners trying to get Microsoft to stop actively destroying the PC gaming ecosystem and instead focus on doing things that enable Windows to be a better gaming platform instead of crippling it. None of these guys WANT to be making API’s like Mantle or to be splitting their driver development teams between competing 3D API’s. None of them want wild wild-west 3D drivers that nobody tests and fragments the market for their products. They have to do this to keep Microsoft from utterly neglecting their interests and spending its energy sabotaging the PC as a consumer platform pursuing abstract hair brained stratagems instead of sticking to the basics of making quality products people actually enjoy using. They know Microsoft isn’t motivated by taking pride in a customer oriented culture or by any sense of obligation to their customers and partners, Microsoft responds to competition.
Does anybody really believe that every 3D engineer in the game industry isn’t familiar with the OpenGL API and its performance characteristics by now? Of course they are, it’s easy to be fast when you have no quality assurance standards for your drivers and no need to prevent hardware OEM’s from fragmenting the market with divergent graphics features. The ARB is controlled by the hardware OEM’s.
The reason that almost all PC games use DirectX instead of OpenGL despite OpenGL’s “theoretical” performance benefits is simple business.
1) Microsoft tests and certifies Direct3D drivers to ensure they aren’t the unstable crap that hardware OEM’s tend to churn out to perform well on game benchmarks but were as stable as an old lady with a cane.
2) Direct3D imposes tougher constraints on hardware standards to ensure that 3D chip makers can innovate within a narrow beam that doesn’t fragment the PC game market into games that rely on one chip architecture to play over another.
The consequence of these BUSINESS features of Direct3D is that the same games work on all hardware and NEW games can be trusted to work on OLD hardware. Thus the PC market for Direct3D games is bigger and lower cost for game publishers to support, thus more profitable for everybody involved. This vital strength of the DirectX API family breaks down when Microsoft is not a vigilant steward of the API and the interests of the market it should be serving. As the Anadtech article correctly points out, when Microsoft is proactive about advancing the DirectX API and takes a leadership role in innovation and standards it works well for everybody involved. When Microsoft is lazy about this important role and directs is energies to competing with its partners, picking winners and sabotaging its own platform that relationship breaks down and the consumers, partners and game developers are forced to divert their energies to other platforms.
I don’t know of a single game developer who is THRILLED to be using OpenGL ES on Android mobile devices. It’s a disaster for developers with a market flooded with divergent mobile devices and unreliable OpenGL drivers. Unlike Windows, Android is not an actual platform for games because Google does not take an active role in defining, standardizing and certifying the drivers for Android device resulting in a Gumbo of incompatible hardware and unreliable drivers. Unlike Android Apple uses the same 3D chip across its devices and tests one OpenGL implementation across them thus ensuring that within its closed market IOS developers only need a small number of devices to test against. The more work an OpenGL developer invests in optimizing their code for a particular OpenGL hardware and driver configuration, the more likely it is to break or perform inconsistently on other hardware or as the result of a driver update.
A friend of mine brought his teenage son by my home the other day to meet me. The kid is a HUGE gamer and was eager to share the performance characteristics of his custom built gamer rig with me. We geeked out on graphics hardware for a while before he mentioned to me that his rig could render certain games at hundreds of frames per second and asked how my machines performed on similar benchmarks. I remarked that I didn’t concern myself with it after 60fps because I was too old to have enough reaction time to benefit from more. The kid said that he thought he could perceive differences in frame rates between 60fps and 120fps. I pointed out that his monitor could only display 60fps so it was unlikely that he had ever actually SEEN a game rendering at 120fps. This revelation was a shock to him. He said that he thought that he saw fewer tearing lines on his screen at 120fps. I explained that tearing lines are an artifact of the game updating the screen FASTER than the screens refresh rate and that it had become common practice for games NOT to try to synchronize drawing new video frames at the screens refresh rate so that they could be used for performance benchmarks like the ones the kid was using and because hard core gamers liked to see games report high frame rates on their hardware even though they couldn’t see them. I explained that designing games to overload the graphics pipeline was an approach to future proofing them in the rapidly evolving PC game market because at the time that a new game is released it may be pressing the performance limits of graphics hardware currently in the market and struggling to hit 60fps but as the game aged, new hardware would come along that could run it faster enabling consumers to manually dial-up the games resolution and other rendering features without the game needing an update. Thus achieving maximum possible performance across the broadest range of installed hardware was only a major priority in the first months of a new games release… as the game aged, newer PC’s and graphics hardware would make the optimization obsolete and what was more important to the games longevity was its stability across lots of unknown FUTURE hardware that would be released AFTER the game had been shipped.
If you were a BIG game publisher like EA you could afford to keep a team working on a game long after its release to continue to update it, but for small developers being able to rely on DirectX to work the same way from chip generation to chip generation was essential to keeping the PC game market open to lots of game developers who don’t have the testing resources that a big publisher like EA may have. Hence PC games are designed to scale up as they age whereas console and mobile games are largely baked to the limits of the hardware currently in the market at the time they ship. In that environment raw performance is much more important than the games longevity or ability to scale to use future unknown hardware configurations. In other words, Direct3D is the only API of choice for the PC market because of its consistency across hardware generations. The Direct3D API is more limited in its short term performance in order to enable game developers to devote more of their resources to game content and future hardware scalability.
Some of the complexity of the Direct3D API that OpenGL lacks is there for the purpose of future proofing games to work and benefit from NEW hardware released after the game ships.
Ironically it is actually in the markets interest for Microsoft NOT to iterate the Direct3D API so frequently that game developers are forced to constantly devote resources to adapting to the changes instead of shipping their games.
None of this is an excuse for Microsoft to completely neglect the API or worse to actively subvert it in the interests of competing with their own partners and customers as they have been doing most recently in Windows 8 by spending their energy trying to force game developers into their closed proprietary (and unproven) app market ecosystem at the expense of the many successful and established Windows online game developers and publishers. This behavior, as famously illustrated by Valve abandoning Windows to create its own gaming OS and the company I founded, WildTangent Inc. being increasingly forced to focus on mobile game publishing, resulting in a diminishing population of game developers, publishers and consumers interested in Windows as a gaming platform. As the many successful online game publishers on Windows have demonstrated over the years, it’s perfectly feasible to create a HUGE game market on Windows completely voluntarily simply by making a great product. It’s a shame Microsoft seems to lack the courage to TRY to make products and services for its own platform that are actually good enough to succeed on their own merits, and seems willing to casually discard the tremendous benefits of being a relatively open publishing market to developers INSTEAD of a closed one as Apple has chosen to become.
*Note that I believe that Apple’s choice to be a closed market is a SMART decision for Apple but a DUMB decision for Microsoft because it was Microsoft’s openness as a publishing platform that differentiated them from Apple despite the security and stability challenges that being open creates that Apple does not suffer. There were smarter ways for Microsoft to deal with this than by trying to emulate Apple. Apple sells HARDWARE, Microsoft sells SOFTWARE, Microsoft can charge more for Windows when it has MORE games available for it. They don’t have to try to take a cut directly from every game developer to profit from their platform.
Regrettably Microsoft seems to have increasingly taken the view that Apple’s incredible growth and success in recent years is the result of Apple owning and controlling a closed ecosystem which has resulted in Microsoft increasingly investing in making proprietary hardware products to their own detriment. (Zune, Surface, Xbox One, etc.) While getting bracketed out of the mobile market by Apple on one side with a closed proprietary mobile ecosystem and Google on the other with a relatively open wild-west standards-less ecosystem. Clearly BOTH strategies had their merits and potential for success, but Microsoft chose NEITHER approach, opting to make a heavy-handed EXPENSIVE mobile OS that was neither a seamless, beautifully integrated Apple experience nor a low cost open Android experience.
Several years ago I was invited to interview for a role at Microsoft working on their mobile platform which was described to me as trying to build a UI experience that could beat Apple. I declined the opportunity, which I of course appreciated, because I believed at the time that it was a bad strategy for them to pursue and I wasn’t interested in being fired a second time for going to battle ( and winning as DirectX did ) with my own employer over the merits of religious consumer and developer focus. At the time I wrote them a slide presentation on the mobile strategy I believed they SHOULD pursue which was to focus on making a low cost, broadly appealing mobile OS targeting market share over sex appeal. This was long BEFORE Android had become huge doing exactly that. Years later the result appears to have been massive success for Google and the Metro catastrophe for Microsoft. It’s ironic now that the most anticipated feature of Windows 9 is NO METRO UI. We’ll see if that happens… You wouldn’t think that it would be so difficult to sell a company like Microsoft on leveraging its own proven core strengths instead of chasing those of its competitors.
…but I digress from the riveting subject of DirectX vs OpenGL. My point is that while Microsoft has largely abandoned partners like Nvidia, AMD and Intel that have made it great to pursue narrow, vertically integrated product niches that it has no track record of succeeding with in the apparent belief that it needs to start emulating Apple to win in the consumer market, these guys are firing warning shots across Microsoft’ bow that it’s losing them to. They don’t WANT OpenGL, they want a healthy consumer ecosystem that they can ALL thrive in, which has worked great for them when Microsoft has taken a leadership position in being the steward for free market competition. Absent Microsoft’s leadership they have little choice but to fabricate their own API’s and standards which has historically resulted in market fragmentation and decline. What does an API standards body dominated by hardware vendors agree on?
1) Doing nothing so nobody has an advantage over the other
2) Enabling everything they all want ensuring fragmentation and smaller markets for all of them
Neither of these scenarios is a desirable outcome for anybody.