Wot Baker said, basically. The sole reason why DirectQ existed in the first place (there are other reasons now) was that I wanted to play Quake on my laptop. Every OpenGL engine I tried hard-locked the OS by sending the driver into an infinite loop on me. Every one; the driver was that bad. So I said "fuck it, I'm porting Quake to Direct3D". The intended audience was one person - me.
Of course I could have used software Quake instead, but I was still a gfx weenie at the time (I have since seen the light) and I wanted a fancy particle system. I also wanted to learn D3D because learning new things broadens your horizons, enriches your experience, and gets you out of the ghetto of any comfort zone you may be in. So I did a D3D port. And it ran at 3 times the speed of OpenGL and never hard-locked once. The OpenGL driver really was that bad (and this was a reasonably popular Intel chip).
There are other advantages of D3D over OpenGL, but they lie behind the scenes and affect the coder rather than the player. It's vertex buffer, shader and render-to-texture APIs are a LOT cleaner and easier to use than OpenGL, for example. It has proper capabilities querying. It doesn't arbitrarily fall back to software emulation. It comes with it's own image loading and window management code. Etc.
Don't get me wrong, portability is great, and what I'm working on now is fully portable and will run on Windows, Linux and MacOS, but sometimes you really do need to make the decision between using a portable API on the one hand and using an API that Just Bloody Works on the other.
Of course I could have used software Quake instead, but I was still a gfx weenie at the time (I have since seen the light) and I wanted a fancy particle system. I also wanted to learn D3D because learning new things broadens your horizons, enriches your experience, and gets you out of the ghetto of any comfort zone you may be in. So I did a D3D port. And it ran at 3 times the speed of OpenGL and never hard-locked once. The OpenGL driver really was that bad (and this was a reasonably popular Intel chip).
There are other advantages of D3D over OpenGL, but they lie behind the scenes and affect the coder rather than the player. It's vertex buffer, shader and render-to-texture APIs are a LOT cleaner and easier to use than OpenGL, for example. It has proper capabilities querying. It doesn't arbitrarily fall back to software emulation. It comes with it's own image loading and window management code. Etc.
Don't get me wrong, portability is great, and what I'm working on now is fully portable and will run on Windows, Linux and MacOS, but sometimes you really do need to make the decision between using a portable API on the one hand and using an API that Just Bloody Works on the other.
Comment