Wednesday, January 13, 2010

OpenGL revenge!

When I started my gaming life, there were many competing graphics API created by software companies & hardware manufacturers:

  • Direct3D (all: Microsoft)
  • OpenGL (all: open standard, ARB group)
  • Glide (3Dfx only)
  • MeTaL (S3 only)
The last two performed very well, but only on the corresponding hardware. Unreal Tournament & Deus Ex where the best games to test all these render modes in action.
Time passed, and Glide & Metal silently died, leaving GL competing with D3D, having only a single guard: Id Software. I can only guess what would happened to GL at that time if there was no John Carmack (Id lead programmer)... S3 technology was bought my MS that spread S3TC wisdom all over the word.

OpenGL standard developed very slowly, but easy extension mechanism allowed programmers to use all the new features Direct3D contained, and even more. Microsoft performed a massive information attack on GL (see FUD) leaving only cross-platform games alive.

Now there is XNA, Win7 with its DX11 and hordes of MS fans lurking around with their XBox'es. Other camp primarily consists of Unix/Linux systems, Mac OSX and a bunch of smart embedded devices including PS3. As far as I see, the time of revenge has finally come!

OpenGL ES (at least 2.0) has a very successful design: simple, portable, effective. It was developed by Khronos group that is now pushing forward OpenGL-3 standard. Microsoft was not able to spread it's massive OS on mobile devices, and now we have numerous game-dev companies working on iPhone & PS3 games using OpenGL ES only. Moreover, Linux & Unix community grows: they might not be willing to pay for games, but they are developing exclusively on GL. At the same time, we have Mac OSX users that easily afford themselves buying games, forcing major titles being released for this OS (take Dragon Age for example).

The conclusion is: there is no point to develop your engine primarily for Direct3D unless you want to run on XBox. OpenGL successfully covers all other platforms (there is only a little difference between ES and normal GL nowadays), has a clear extensible design and an open standard. Congratilation, my friends, our victory is close! And the world will be a little better place to live soon :)

P.S. Some people say you don't have to choose and support both API anyway. That's true, but don't forget about the future: your choice may shift the balance in this fight giving an initiative to the hands we can't trust.


  1. I've read somewhere that any self-respecting graphical engine will anyways have an abstraction layer over low-level APIs like those in DX and OpenGL. Tho I've got little to no experience in this field, so I'd love to hear your comments about this claim.

  2. 2xeno-by:
    That's true. These engines almost ignore OpenGL/Direct3D war. However, we can only guess how much effort it takes to make an engine that supports both.
    What harm Direct3D brings with its existence:
    -slow AAA game development
    -slow/buggy HW & driver development
    -lack of good games under Linux/Unix(/Mac?)
    -forced Win7 for weak gamers

  3. "slow/buggy HW & driver development". Can you, please, elaborate on this?

    P.S. Would be awesome if I could get email notifications on my comments been answered (like in LJ). Any ideas how to achieve this?

  4. I'm new to blogspot, so have no idea how to achieve notifications here... Nevertheless, don't worry about fast answers, please.

    Hardware manufacturers are forced to adapt for both API's. For example, some might try to introduce D3D Execute Buffers native support, which will add development cost & time.

    More than that, API features (like the ones in OpenGL 3.2 core or DX11) has to be implemented on HW. And it's good when they correlate a bit allowing to share same HW schemes. If they differ - well, bad luck for ATI & NVidia (and finally for us, customers).

    The situation is much worse with drivers. Due to bad support, new features become truly accessible (stable!) only after 0.5-1 year of their specifications. The driver today is a huge program written in millions lines of code (expensive support, more bugs, late features, finally HW cost & time).

  5. OpenGL has never lost its significance outside of the MS world. Part of the reason OGL buzz is on the rise these days is that non-windows platforms gain more and more popularity - smartbooks, handhelds, smartphones - the majority of those do not care about windows, but still care about graphics. This is the irony of deeply proprietary APIs - it does not matter how 'good' they are, if you cannot use them on your platform of choice ; )