I'll preface this by saying I am (almost) exclusively an OpenGL user. I found DirectX cumbersome, as I tried to learn it simultaneously with C++ - this was out of a 10 year old book, so I imagine it was something like DX7 and a lot less streamlined. OpenGL automagically
worked for me at the time, so I never honestly looked back. I still kept up with research, however. Ironically, this automagic property of OpenGL has almost universally been deprecated, but I digress.
The reason why I am opening this discussion is because the information about these issues is so spread and muddled with opinions. My goal is to more centralize the subject of OpenGL and DirectX for convenience. Also given the blistering fast pace of both OpenGL and DirectX changes in games, I want the latest perspectives.
Besides choosing one API over the other due to being unable to use the other (say, D3D for working with your favorite engine, or OpenGL for a wii game) there is no objective means of choosing one or the other, and so all you can
ever hope to get is a wide spread and opinion muddled set of responses. I can say that most major game developers favor D3D because it's the traditional API that has been in use for quite some time. Familiarizing yourself with it from a professional game development standpoint is a wise decision... but OpenGL targets dozens of platforms, whereas D3D is quite limited. If you care at all about portability, D3D becomes a very poor choice.
Is OpenGL going to involve more advanced work for the game developer, yet greater flexibility in the long term?
Arguably. OpenGL is very minimalist, especially since 3.1. There are several "handy dandy" things that it simply does not do for you the way D3D does. It's still just as capable of doing them, but OpenGL does not define a default way of doing it (copying a texture to a texture, for instance, requires you to use framebuffers or pixelbuffers - the closest thing, glCopyTexImage2D, draws from the bound buffer) nor is the ARB interested in adding many convenience features. The difference in difficulty between D3D and OpenGL in this regard boils down to an occasional dozen or so lines of code. Not much, but "arguably" more.
It is also arguably more flexible, but only in that it is significantly more portable. Writing linux or mac games in D3D instantly makes WINE necessary at a cost to FPS (as WINE must redirect D3D calls to OpenGL), and I'm not sure if the Wii and PS3 support D3D at all. But while they had significant differences in the past, now they're both effectively equivalent in features. Games using one API do not suffer graphically over another - however, some designers may prefer the "style" or "approach" one API uses over the other, and like me, find it annoying to use the conflicting style.
Doesn't the hardware accelerated 3D nature of OpenGL offer more potential for game features because software processing could be run simultaneously with hardware acceleration to broaden the game engine base - so to speak? Isn't hardware acceleration offering the most potential for game performance and more 3D objects and 2D textures allowable?
They're both hardware accelerated, and most often have very close benchmarks. One might outperform the other at some specific operation or other, but overall there is no speed advantage to either. This is
not an advantage for OpenGL.
Three questions answer which API to use:
--Looking to be familiar with rendering schemes of major AAA titles ? DirectX : Either //neither is better, but traditionally D3D is used. OpenGL is also used, but much less.
--portability matters ? OpenGL : Either //DirectX has no portability
--Prefer OpenGL Style ? OpenGL : DirectX //Purely your opinion
Remember, however, that DirectX is more than D3D. If for whatever reason you hate all DirectSound alternatives (FMOD, OpenAL, ect) or DirectInput alternatives, then DirectX trumps OpenGL by virtue of your project
already using it elsewhere.