- Separation of world and view matrices.
- Explicit and easy-to-get information about the hardware.
- Extensive libraries
- Render target objects!!! (thank goodness)
- Cool effects system (that I'm still looking into)
- Consistent on different hardware
- Very clear and superfluous documentation
- Many other things...
Obviously, I'm coming from OpenGL. If you are an independant game developer and want to get something produced, I recommend using DX over OpenGL. The advantages are almost endless.
Understand that I used DX for a while about 2 years ago, and I hated it. The complicated function calls, amount of complex structures, etc. that it required was just too much and too complicated. I switched over to OpenGL and said, "Thank God, who the heck would use DX?" I was an inexperienced newbie. All I wanted was to render stuff. Then I eventually got involved in more complex stuff such as render targets, vertex buffers, material systems, etc. everything that OpenGL does rather poorly. I found my code sloppy and inconsistent. Now that I've switched back to DX, I love its extensive library and ease of use (comparatively for advanced things). I feel like I can get something done that is quite advanced now.
At least that was my experience. I can understand OpenGL's use for some applications but the amount of time you spend researching other libraries, or even writing your own, to fulfill the other needs of the application the OpenGL totally neglects, it's too much. I want to spend more time on actually programming the algorithms.
So anyway, agree with me or not. I dunno. I'm just happy now (with my programming), and I haven't been that way for while.