On my current 3D engine, I’m supporting both Direct3D 9 with HLSL and OpenGL with CG.
With some effort, I managed to get a hold on the CG interface for OpenGL.. cool !
Then I noticed that Microsoft is starting to push Direct3D 10. D3D 10 seems to make some effort to deal with state changes in an efficient way, and generally to keep up to date with the evolution of 3D hardware, while also removing a lot of ambiguities with the infamous “caps” and forcing hardware manufacturer to include a base set of capabilities on any hardware that wants to be certified as D3D 10 compatible.
cool cool.. what’s uncool is that OpenGL is starting to look very old ! I was once a great supporter of OpenGL, back when D3D was a real pain to use. D3D used to be almost as painful to use as DirectShow (be DS damned in hell !), but eventually grew to become actually more clean than OpenGL.
OpenGL is continuously developed by a committee, which takes ages to implement anything. Implementing a decent off-screen rendering interface took ages. There so so much bureaucracy.. bha ! Its main problem is that it’s stuck with a design thought for a client-server system, where a client terminal makes API calls to a server that renders. We are talking ancient times, stuff that suited SGI hardware (which BTW just recently filed chapter 11.. sad !). OpenGL functions don’t deal with structures, which are sometimes very useful, and don’t have return values, which makes error checking rather painful.
So I’ve been thinking on ditching OpenGL ! (imagine, me doing that !). The only valid argument for using OpenGL is if I want to write portable code for MacOS X and Linux and PS3. But.. that’s pretty much a bunch of horseshit ! The “portable API” is a joke when dealing with advanced 3D graphics. Plus, who cares about MacOS X and Linux ? It’s a geeky excuse. As for PS3.. who knows what sort of extensions does its OpenGL use ? Writing an engine on top of D3D and OpenGL is inevitably going to have to penalize one side of the porting while taking a lot of time to keep the development in synch: not worth it.
ummmmm.. I wrote a lot and it’s late. I actually meant to leave the second part of the update for something completely different. But that will have to go on the next bat-update on this same bat-site !
Posted by Davide Pasca in Programming, 3D Graphics
