So here is where I answer some of the big questions:
What is the difference between DirectX and OpenGL? The answer to this one is: everything. OpenGL was designed ages ago (pre 1990), while DirectX 1 was build (1994) specifically to draw game developers from DOS onto the new Windows 95 platform. DirectX is (to all intensive purposes) a Windows / Mircrosoft only solution, while OpenGL runs on most desktop operating systems that exist (including a variety of embedded platforms). While DirectX provides strong support for many features outside of 2D and 3D Graphics, OpenGL relies on external systems to provide that functionality (potential systems include: SDL, OpenAL, GLUT (OpenGL Utility Toolkit), or even DirectX).
What does DirectX Compatible mean? When a graphics card is DirectX 9 Compatible, it means that it supports the DirectX 9 specification and can run software built to run on top of DirectX 9. Due to it’s history, each version of DirectX breaks compatibility with the previous version. As a devloper, I see this as a nightmare for Microsoft and the developers that work with DirectX. Mainly for a developer: if you are qualified in DirectX 10, you need to learn how to drive DirectX 11.
Why is there only OpenGL 1 and 2? Considering that OpenGL is the older of the two, these numbers make OpenGL seem way out of date. The simple answer to this question is: Extensions. Where DirectX revises the entire platform with each release to incorporate new features, OpenGL has a system called Extensions. This allowed graphics card vendors to add new functionality without changing OpenGL itself. Those applications and games that needed the Extension can look ask the OpenGL system for the Extension, if it doesn’t exist: the game can work around not having the Extension, or explain to the user that their graphics card cannot support it. Major Extensions in recent years include:
- Multitexturing
- Normal Mapping
- Shaders
Why is there no such thing as an “OpenGL compatible” graphics card? Again the answer is Extensions. Because the core OpenGL specification is so simple, almost any graphics card that is capable of any 3D graphics is OpenGL compatible. For that reason, no-one bothers with the idea of “OpenGL Compatible”.