No more was heard of OpenGL 3 until August 2008 at the SIGGRAPH conference. But while some people were expecting a pleasant surprise, Khronos had a serious disillusionment in store for fans of OpenGL. Not only was the API nearly a year late, but to top it all off, most of the new aspects of Longs Peak had been completely abandoned. After the OpenGL 2.0 fiasco, which really delivered only an OpenGL 1.6 with a different name, this OpenGL 3.0 was beginning to look like no more than version 2.2. The unpleasant surprise, coupled with the absence of communication for several months, resulted in some very aggressive reactions toward the Khronos group on forums everywhere. Faced with the storm of reaction, Khronos responded on the official OpenGL forum through Barthold Lichtenbelt of Nvidia. His highly detailed response at least provided a little insight into what had been going on in the wings. We learned, for example, that certain points of implementation weren’t decided on in time, and that in parallel, a lot of people felt that it had become urgent to enable OpenGL support for the latest GPUs. So the plan was modified in order to extend OpenGL 2 to include Direct3D 10 functionality.
Even if the argument holds up, Khronos can still be criticized for not trying to put out the fire immediately rather than suddenly cutting off all communication with the outside world. And the similarity with what happened six years earlier with OpenGL 2.0 doesn’t really inspire optimism for the future. After two promises to rewrite the API—both of them failures—how are we supposed to have faith in the future of OpenGL? Finally, a comment by John Carmack at the latest QuakeCon didn’t really help the situation. Asked about the status of OpenGL 3, he answered in terms that were a lot less politically correct than Mr. Lichtenbelt’s statement.
According to Carmack, OpenGL 3’s falling short of what it was supposed to be is mainly the fault of certain CAD software developers who weren’t really favorable to Longs Peak. They were afraid of problems with compatibility and their applications due to the disappearance of certain older functions. That version was tacitly confirmed by Lichtenbelt: “ During the Longs Peak design phase, we ran into disagreement over what features to remove from the API...The disagreements happened because of different market needs...We discovered we couldn’t do one API to serve all..”
So in the end, OpenGL 3 is nothing more than an incremental update. The API hasn’t really been changed. Khronos has simply marked certain capabilities as being deprecated and created a context in which using those functions will cause errors. That’s a far cry from what was promised (driver developers still need to provide support), but it is a step forward since it allows developers to prepare for future versions that may finally offer a true Lean and Mean mode. OpenGL 3 also introduces the notion of profiles. For the moment there’s only one profile, but the plan calls for creating a profile for games and another for CAD, for example, with each profile supporting a different subset of functions.
Aside from that, the features offered by OpenGL 3 are pretty much the same as what Direct3D 10 offers, except for Geometry Shaders and Geometry Instancing, which have been added to the API as an extension. But some features of Direct3D 10.1, like independent blending modes for MRTs, are also supported.