I have a lot of respect for the folks at Wolfire, they’re working on what looks to be quite a cool game with some innovative concepts and their regular blog updates detailing the various element of their engine is always inciteful and interesting.
However a post by David titled ‘Why you should use OpenGL and not DirectX‘ bugged me for a few reasons, it read like a fanboy post and didn’t give any actual reason as to why one should use OpenGL instead of DirectX but instead about Microsoft using hyperbole in marketing and that it has created a ‘vicious cycle’ of developer feedback.
David structured his post by putting his reasons and explaining his rationale behind them and as such this post is similarly structured as his blog post. Of course this is simply a rebuttal article, I’m not trying to sell DirectX but rather highlight in what ways Davids arguments effectively fail by either being irrelevant or misleading.
Why does everyone use DirectX?, actually, not everyone uses DirectX
To answer this we have to acknowledge the question has a major flaw in it: Not everyone uses DirectX, in fact you would be hard pressed to find DirectX to be used in a Computer Aided Design (CAD) field. The ARB, which is the group that defines OpenGL specifications has very little game development influence, it is mostly controlled by companies interested in developing CAD software.
Network effects and vicious cycles, or why DirectX is such a better alternative to OpenGL for games development
So the reason DirectX is so much more popular than OpenGL is because DirectX caught early on and as such has created a ‘vicious cycle’ between vendors and developers where DirectX is continually improved while OpenGL lags behind. This a moot point, I would like to know in what ways, if any, DirectX has held game development back. Microsoft has spent more on developing DirectX as the premier graphics solution for game development than any OpenGL developer has ever, of course the biggest OpenGL developers are not in the games industry. Microsoft has lost money in this area and regardless of what any fanboy would like you to believe most of that money did not go into marketing DirectX but R&D.
FUD about OpenGL and Vista So what?
David claimed that Microsoft spent a lot of time spreading fear and doubt as to the future of OpenGL during its marketing for Windows Vista and DirectX 10. Whether Microsoft correctly or incorrectly spread malicious rumours about OpenGL is debatable, whether OpenGL has given game developers the cold shoulder with a botched 3.0 specification is not as the thread comments indicate. Whatever damage Microsoft may have done to OpenGLs reputation through deceptive advertising could not damage OpenGL as much as when it shot itself in the foot with the 3.0 specifications.
Misleading marketing campaigns ^ as above
The other points brought up are about Microsofts shady marketing tactics, however shady or not does not actually affect the API itself and regardless of what Microsoft says DirectX can do as a developer I would rather concentrate on seeing whether DirectX or OpenGL is more suited towards what I want to do. Let’s face it, if we’re going to avoid products which were backed by marketing using hyperbole we’d still be using the abacus.
While David is happy quoting people like John Carmack saying he doesn’t see a need to jump straight into DirectX 10, a valid argument by all accounts given most highend games released these days are multi-platform console titles he doesn’t say what Carmack thinks of DirectX in general, “Microsoft has done a great job with all this stuff. I mean, I honestly think that DX9 with how it’s implemented on the 360 is a clearer and more open API than OpenGL is.”
In other words: Just because we’re not using DirectX does not mean we don’t think it’s a great API, and when we have to use it we don’t mind it too much. More to the point it highlights the deceptions David uses, he attempts to inflate Carmacks hesitation to move into DirectX 10 as a general dissatisfaction with DirectX as a whole.
OpenGL is more powerful than DirectX, are you a software engineer or an OpenGL fanboy?
This is where I start doubting David is coming up with these opinions because he actually believes DirectX is a weaker API or because he simply dislikes Microsoft. First of all, what is power? OpenGL and DirectX are both specifications, in terms of power they’re little more than ideas with a software layer backing them up. The question is, which API has better support in consumer hardware and therefore will run better. Regardless of the power OpenGL may have, buggy drivers and a poorly conceived API will still bring it down. I don’t know about David but I would gladly lose 20% performance for 30% more clarity.
Now here comes the hypocrisy, while David is happy to attack Microsoft for FUD he does the same thing throughout his post but here in particular: he claims the tessellation feature in DirectX 11 has been an OpenGL extension for three years. I think he will be very, very shocked to find out that the Xbox 360s DirectX based GPU has a tessellation unit built in, something which the Playstation 3 RSX lacks. An OpenGL extension is only as good as the hardware and developer support behind it, ATi put tessellation support into their first batch of DirectX10 graphics cards (the ATI2900’s) as well as the Xbox 360 giving developers these capabilities almost five years ago, two more than OpenGLs 3. Of course who put what feature into graphics technology first doesn’t really matter, I’m merely highlighting the flawed argument David is using when he refers to OpenGL extensions, anyone can extend on specifications.
Now for the final nail to shut this debating point down, since David is so fond of mis-quoting Carmack to sell his own point let’s see why Carmack doesn’t like the idea of ‘power’ saying in 1997: “In any case, the D3D/OpenGL argument hasn’t been about speed, but about usability, robustness, and portability”. He was right back then and he is right today, of course those of you who have been reading rather than skimming up to this point will know Carmack believes DirectX has evolved into a much better API than it was back in 1997.
OpenGL is cross-platform +1 OpenGL
A key advantage OpenGL has over DirectX, however hardly a reason in on itself to use OpenGL over DirectX, especially if you’re fine with developing exclusively for Windows (which a lot of people are). However to add to it, just because OpenGL is cross-platform does not mean you can’t make a cross-platform engine which uses DirectX on one platform and a different API on another. CryEngine 3 and UE3 are two good examples of this.
OpenGL is better for the future of games, actually not really, not at all in fact
As I have stated many times previously, core OpenGL specifications are controlled by the ARB which is made up of a consortium of various developers and hardware manufacturers. While both AMD and nVidia are on the board they are far outnumbered by various groups interested in CAD development. The OpenGL 3.0 spec’s were met with a lot of criticism (even by the fuhrer) by game developers for compromising too much for the benefit of CAD developers afraid of losing backwards compatibility on five year old hardware.
Finally David concludes by saying we need competition and freedom to ‘drive down prices and drive up quality’. Honestly that is little more than rhetoric you’ll hear at a Republican national convention, if Sarah Palin was a programmer she’d argue her point like that. Rhetoric is just that, the truth is however that DirectX is free, it is really easy to use and tuned for game developers.
So can OpenGL recover? Yes, of course it can, but to do that it must break off from the main OpenGL branch. OpenGL ES is a good thing, a separate set of standards meant to benefit game developers. However it has a long way to go and won’t be fully mature until it has re-invented itself as a graphics API for game developers, not a graphics API for CAD developers modified to be more tolerable for game development.
