What are DirectX and OpenGL (part 2)

Continued from this post.

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”.

3 Responses to “What are DirectX and OpenGL (part 2)”

  1. Chewbaaca Says:

    [quote]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. [/quote]

    For the record Direct X 10 is actually backwards compatible, meaning if you have a DX 9 video card it will be able to run it. Of course your DX 9 card won’t utilize DX 10 features it will however make better use of DX 9, also DX is both a graphics pipeline and a programming language in case anyone was wondering.

    I’m not too knowledgeable on Open GL, but from what I understand its as amazing as DX technology. The minute differences between both pipelines is how they render on screen objects, Open GL renders curves and triangles but lacks creation of solidity. Direct X is the opposite it renders in polygons, thus you hear the term poly count in games like Medal of Honor or Oblivion. Direct X renders scenes in blocky textures and uses borrowed methods and or forms from Open GL to give depth and height some angular cohesion, it reforms edgy textures to create curvatures. Problem with Direct X is it renders scenes beautifully with some hint of blockiness, however the problem lies within texture edges and the actual shape rendered. On some older cards these textures appear jagged and or seem like they have clipping issues!!

  2. Jason Says:

    OpenGL can render in both 2D and 3D using different functions. OpenGL has functions to define what exactly you are trying to draw as well. Everything from a simple 3D (or 2D) triangle through to a multi-textured, lit, polygon.

    There are actually almost no differences between what OpenGL and Direct3D/Draw (together) do, the difference is mostly in the functions they provide. Even the underlying render pipeline is defined on the graphics card, not by the API.

  3. Tom Says:

    I have a new HP PC win7 ultimate with a Graphic Card
    called ATI Radeon HD 4350 (512)

    Im considering Purchasing Brice (2D,3D)software 6.3 but one of there requirements is an OpenGL compatible graphics card. Is my ATI Raradeon an X type or Open type and or will it be able run Brice software?
    Also Im not a gamer I just like to draw.


Leave a reply to Chewbaaca Cancel reply