Open Discontent
Even though I’m now at Microsoft, I’ve always favored OpenGL for its simplicity and ease of getting things working. It’s what I started my professional career on, and something I’ve stuck with for 16 years.
Back around DX7, it was no contest. OpenGL was always easier and more enjoyable to use, if a little out-moded. The only time I’d use DirectX was when a client required it — and usually only because of how crappy certain (usually Intel) OpenGL driver implementations turned out to be. My clients in those cases would rather limit themselves to Windows-only code than deal with asking their customers to "go update your drivers" to make our code work on their machines.
But as hardware features grew, OpenGL, with its diverse and deliberative committee-style leadership, had trouble keeping up with change and was forced to add bandaid on top of bandaid to keep pace with DirectX 9 and 10 class features. Each bandaid made the API more complex and specialized, thus hobbling the advantages of OpenGL.
And then came the long-promised OpenGL 3.0 — the brand new release that was meant to cut free that old baggage and start fresh with a simpler and more modern approach.
Now, I never agreed with their decision to only expose a C version of an internally object oriented system without even offering an official C++ wrapper. But they went much further than that — they failed to really improve the API at all.
Instead, what they did is offer a bridge release that keeps all of the old API and adds even more bandaids, which essentially doubles the size and complexity of the API, and doesn’t offer the new stuff until some future date, somewhere between 3.1 and 4.0 from what I can tell.
They did this, reportedly, to accomodate CAD developers who didn’t want to switch to the new ideas just yet. And in the process, they probably alienated an untold number of game and virtual world developers who are the ones clamoring for the new hardware features and selling the most video cards.
What they could have done, and can still do, is take stock of what people are telling them. Offer a 2.2/2.3 release with some new features in the old model, and ship a whole new library called 3.0 that has only the new features and none of the cruft. Anyone wanting to stick to the old model would simply compile against the old-style library, for years if they wanted, as long as they don’t need the new features. And then they can switch over too.
As it stands, I’m concened that OpenGL may have really dug itself a gant hole on this one, from which only developers will escape. That said, with the advent of truly general-purpose graphics hardware, even Direct3D’s days may be numbered, and both APIs will be reduced to their various shading languages and some common setup code, which wouldn’t be that horrible a result in the end.
For me, I’ll gladly be using DirectX for now as part of my new job anyway. But it’s a sad day for OpenGL developers and ultmately end users. And I can only imagine what the sessions at SIGGRAPH are turning out to be.
Discussion Area - Leave a Comment