Personally i prefer DirectX, more on i actually strongly prefer the new DirectX 8.1/9.0 interface instructions ... its alot more code and is much more daunting to start with, but infinately more in the way of features to help development.
That aside you don't need to really use either DirectX, OpenGL, Glide or Open3D ... atleast for your 3D stuff. All they really do is stop you recreating the proverbial 3D wheel everytime you restart development...
you don't have to create your own drivers for cards and such, which really was started with that display program - ack can't remember the name right now, but if you wanted to use any particular features in graphics cards you needed it. was before 3D really... i keep thinking SGI Display but i know that not right. I'm sure someone remembers it.
However that aside, this is only for programming a 3D Engine, unfortunatly what people who use OpenGL tend to forget is that - Networking, Media (like Sound), Controls, etc... are all contained within DirectX and so they end up not only spending longer on getting these functions to work, but also the be compatible with each other as oftenly the libraries you find online conflict with each other... whereas Dx you know it'll work fully functional with all its aspects from the word go. This is the most major reason it is used over anything else.
but still all that aside, there are quite a few pre-OpenGL/DirectX game engines out there - and infact the Quake engine is one of the few out there which shows you true cross platforming + the upgrade steps taken to use both DirectX and OpenGL
if you're every thinking about developing a game that is probably one of the best places to start, because it also teaches you to read the most incomprehendable code you'll ever see (apart from your own)
and the spare comments require you to learn what things learn than stealing them for your own purposes (^_^)
Tsu'va Oni Ni Jyuuko Fiori Sei Tau!
One block follows the suit ... the whole suit of blocks is the path ... what have you found?