Unfortunately said OpenGL extensions are hardware specific so you lose some of that cross platform scalability, (which is order and less sensible to maintain for games these days) you also get "extension wars" between the card OEMs and the API gets polluted as both strive to make their card look the best.
It also means enumerating the extensions looking for the right one and then falling back if its not there, or just falling out, or horror of horrors running an emulation of it, sometimes thats just not possible, so you end up locking yourself into a chipset/extension, however a lot of it depends on the application.
As for DX being COM not much of a big deal, its a preference issue i suppose, same as OO, you don't have to write OO code with either, or you can with both. Thats like saying C++ is bad because its designed with OO in mind, you can also write non OO code in C++, same as you can write OO in assembler, I don't see the problem there beyond personal preference.
Also DX supports extensions as well, and there are a number of hardware specific sub versions of DX to support specific hardware, also the versions come out a lot faster to support the new cards.
But the most interesting stuff is shaders, this is where you get the real hardware benefits and both APIs support their own forms.
Both DX and OpenGL are close enough in terms of what they do, as that it really doesn't matter anymore ( outside cross platform but thats getting harder and harder to maintain as well as less useful to some, but that really depends on the type of application and the target market )
Cross platform is useful if you need it.
|