In lots blogs I've seen rants about how difficult it would be to migrate a 3d engine to Direct3D 10. Most people agree that D3D10 is good and a must-have, but nearly all write that it would be a lot of work or even that they would have to rewrite their 3D engine almost from scratch to make it work with Direct3D 10.
Oh, come on.
The problem is not that D3D10 is that much different (in fact it isn't). The problem is that people are even calling a bunch of poorly written .cxx files which are somehow communicating with the IDirect3D interfaces a 3D engine. And that's just like calling a soap box a race car.
Real 3D engines are all about software design. Ok, speed and features are also important, but they are only secondary. If one component of a well designed software library changes, there should be no need to rewrite the whole library at all. That's the reason people invented paradigms known as OOP, abstraction, encapsulation etc.
Ever wondered why Irrlicht works on that much platforms, with that much drivers, and even with software rasterizers? Hell, it would even work with a ray caster as backend. That's because it was developed using those paradigms known as OOP, abstraction, encapsulation etc. Because of this, it won't be a big deal to migrate Irrlicht to D3D10 at all, it would only add some new features to it. Most of the changes like the removal of the fixed function pipeline, state objects and missing caps won't bother an Irrlicht user at all. The only change for him will be that instead of writing down
| createDevice(EDT_DIRECT3D9);
|
he would write
| createDevice(EDT_DIRECT3D10);
|
And that's it. Everything other will go on behind the scenes, and only make available more effects or better rendering speed etc.
When will Irrlicht add support for D3D10? As soon as Windows Vista and the needed hardware will be available to lots of users, it doesn't make sense for an open source 3d engine to do this earlier.
But meanwhile... What about OpenGL 2.0?