2. OpenGL
OpenGL is basically to DirectX what Mozilla is to IE. OpenGL is Open source, openly based, openly run, and completely free. Thus why John Carmack used to swear by it (Or because at the time he was quoted blasting DirectX, it sucked so bad no real gaming company would use it). OpenGL (Open Graphics Library) is a little nice program that allows you to do everything from 2D drawing to 3D animation very easily. Personally, I consider it the most realistic of all coding systems, primarily because it's just so damned easy to use. Configurations are simple as pie, and creating a 3D model through straight old code is almost easy enough for a slacker programmer like me to understand.
Now, I need to outline some problems with OpenGL.
PROBLEM THE FIRST: OpenGL, while being very intuitive and up-to-standard, sometimes lags behind DirectX graphically. DirectX has Microsoft, and Microsoft has money, so at the end of the day, DirectX can invent their own pixel shaders and the like- signing up with card companies to specifically support DirectX. So, if you want to make a recreation of, say, Doom 3 or Half Life 2, this may be a problem (Note: Both use OpenGL AND Direct3d. Because I'm not Gabe Newell or John Carmack, I'm not going to do this. This is hard as hell to implement. Kudos to their programmers for doing this, though)
PROBLEM THE SECOND: If you're going to program for a Microsoft Console, you bet your ass you'll be using DirectX. Wonder why it's called the XBOX? The DirectXBOX? Get it? Now you get it. You'll be sitting there with shitty COM code all week, but there you go.
PROBLEM THE THIRD: Getting OpenGL to realistically work is somewhat of a hassle to learn. Unlike DirectX, OpenGL has no big directory of all you want to know on the subject. It has some very nice tutorials, but finding a straight out command list is somewhat hard.
(PS: If you're interested in a looong read about this, go read up on the Wikipedia article here: http://en.wikipedia.org/wiki/Direct3D_vs._OpenGL)