John Carmack admits that DirectX has become the better API, but he's still sticking with OpenGL.
id Software mad scientist and first-person shooter "granddaddy" John Carmack said that DirectX has matured to the point where it's now a better API than OpenGL. It handles multi-threading better and newer versions manage state better. But he doesn't have plans in moving to DirectX any time soon, blaming inertia for the studio's continued use of OpenGL.
"OpenGL still works fine," Carmack told Bit-Tech, "and we wouldn’t get any huge benefits by making the switch, so I can’t work up much enthusiasm for cleaning it out of our codebase. If it was just a matter of the game code, we could quite quickly produce a DirectX PC executable, but all of our tool code has to share resources with the game renderer, and I wouldn’t care to go over all of that for a dubious win."
Very few titles still rely on OpenGL to render GPU-dependant visuals, seemingly fallen out of favor with top-end PC developers. Microsoft has essentially taken the throne as the leading 3D PC gaming graphics innovator, a 180-degree turnaround when compared to the early days of DirectX lagging behind and playing catch-up with OpenGL's innovations.
The current success of DirectX is largely due to Microsoft's courage to continue making significant incompatible changes to improve the API. OpenGL has been held back by compatibility concerns, Carmack said.
AMD's GPU worldwide developer relations manager, Richard Huddy, agrees. He added that the actual innovation in graphics has been driven by Microsoft in the last ten or so years. "OpenGL has largely been tracking that, rather than coming up with new methods," he said. "The geometry shader, for example, which came in with Vista and DirectX 10, is wholly Microsoft's invention in the first place."
Given Carmack's dedication to OpenGL, it's safe to assume the API will be used in RAGE, DOOM 4 and other 3rd-party games which will use the id Tech 5 engine. If anything, OpenGL has seen a resurgence on mobile devices via OpenGL ES. The latest version (2.0) supports vertex and fragment shaders, and doesn't use transformation, lighting, texturing, and fog calculations, breaking backwards-compatibility to versions 1.0 and 1.1.