OpenGL

Revision as of 07:45, 20 January 2007 by Checker (talk | contribs)

I used to be pretty passionate about the OpenGL graphics API, and I spent a fair amount of my time working to make it successful on the PC for games. I still think it's a pretty well designed API, and it's certainly more pleasant to program with than Direct3D, even after all of these years and versions, but the heat has gone out of the issue for me. Direct3D won the war. SGI is basically dead, and Direct3D is the stable and mature platform that drives the features for each generation.

OpenGL still has some advantages, like vendor extensions, the relative niceness of most of its interface (there are really wonky and lame parts of the OpenGL API, one must admit), and the fact that it's cross platform, but if you want to make a 3D game on the PC and you want to have stable access to the latest 3D features...well, you're just screwed. Yes, after 10 years of effort, the 3D graphics situation on the PC is still pretty laughable. You can, without trying very hard, find a serious 3D driver bug within minutes of sitting down to write code with either API.

However, if you want a slightly better chance of getting your code to work using "mainstream cutting edge features" (as of this writing, say lots of render-to-texture, wacky render target pixel formats, etc.), you're probably better off using Direct3D. If you only need to use a safe subset of features and you want the nicer programming experience, or if you want to use the most cutting edge stuff that's only available in vendor extensions, then OpenGL is a fine choice.

Ironically, the collapse of the PC 3D market down to NVidia, ATI, and Intel has actually helped OpenGL be competitive, driver-wise, since those vendors tend to update their OpenGL drivers almost as frequently as their Direct3D drivers. The chance for OpenGL to "win" is long past, though. Direct3D is easily a good enough API now.

Personally, I write almost all of my prototypes in OpenGL, because it's just more agile and toolkit-y. And fun. Don't underestimate the motivational power of having fun while you program.

Here are some old writings about OpenGL and related topics:

  • An Open Letter to Microsoft: Do the Right Thing for the 3D Game Industry
    This was the first article I wrote about the issue. It is a highly technical article about the ways in which OpenGL was better designed than Direct3D. It is now completely out of date. At the time when this article was written, Microsoft could have thrown out Direct3D, embraced-and-extended OpenGL, and the industry would be much better off now. It took years for Microsoft to achieve cluefullness parity about how 3D graphics should work, and the industry paid the price in the interim. There was no technical reason Microsoft needed to continue with Direct3D at this point, despite the immense amount of FUD coming out of Redmond, it was purely for control and power. Much more frustrating to me than Microsoft behaving this way was that game developers just sat there and complained about it but did nothing, for the most part, where I believe we could have banded together and changed the situation over night.
  • Developer Power and the U Word
    This is a link to a speech I gave at the Seattle CGDC. It's about how we can prevent this kind of thing from happening again.
  • /GLSetup
    I spent a few years working on a project called GLSetup, which tried to eliminate the driver install problem for updating OpenGL drivers.
This page was last edited on 16 November 2011, at 19:55.