I talked to Microsoft's new DirectX product manager, Kevin Bachus, today about the misconceptions in the press regarding the recent OpenGL vs. Direct3D debate. Bachus says there is no reason that OpenGL and Direct3D cannot co-exist, and that Microsoft has committed to support OpenGL at the operating system-level for Windows 95, Memphis, and Windows NT. In fact, a group of 3D graphics programmers (three times as large as the Direct3D 5.0 team) was recently consolidated under the DirectX team to tackle these very issues. Having recently come to Microsoft from Mindscape, Bachus offered some interesting insights as someone who has worked in the PC games industry both inside and outside of Microsoft.
But first, some background.
About a year ago, id Software was working on Quake and looked into using DirectX 3.0 for their Windows version. Id programmer John Carmack declared at the time that Direct3D was broken and turned his attentions to OpenGL, a high-end 3D API. OpenGL had only been used in the past with enterprise 3D graphics systems such as SoftImage, which costs $8000 per seat. Grafting a subset of the OpenGL API into Quake, id was able to create a superior looking version of the popular game that would only run on OpenGL-specific video cards. There weren't many at the time, and there still aren't many now. 3DFX, sensing a market opportunity, worked with id to create a proprietary "OpenGL" DLL that supported only the API calls id used in Quake. This OpenGL support is "misleading" however, says Bachus, because it ends up killing the native OpenGL support in Windows 95 when you install it. "The OpenGL screensavers \[in Windows\] won't even run when this DLL is installed."
Direct3D, on the other hand, is Microsoft's answer for the fast, robust and compatible 3D routines that developers need for multimedia and games programming. And the latest version, Direct3D 5.0, answers the complaint that Direct3D programming was too difficult to learn and use with its new "DrawPrimitive" API.
Because id turned to OpenGL when Direct3D didn't meet their needs, Bachus says that Microsoft decided to look into the 3DFX DLL and see if they couldn't do something similar with DirectX themselves. 3DFX maps OpenGL calls to a proprietary hardware API called GLIDE in their DLL, so Microsoft set out to do the same thing, only this time mapping the API calls to Direct3D API calls. The goal was to determine whether it would work at all and, if not, figure out what caused it to break. When it didn't break and this new hybrid Direct3D/GL Quake ran within one FPS of the 3DFX version, Microsoft offered the technology to id, though they have no plans to release it themselves.
"It was an internal test performed by a summer intern with no previous experience in DirectX," says Bachus. "It was completed in three weeks and the performance was equivalent to the OpenGL version. I have no doubt that a native \[Direct3D\] version would be even faster."
Bachus also addressed the biggest concern id and other OpenGL backers have when he discussed the different OpenGL implementations. "Id has been asking for a Mini Client Driver (MCD) for OpenGL," said Bachus, referring to a subset of OpenGL, "but they also wanted to program their own proprietary add-ins \[to OpenGL for Quake\]. This requires an Installable Client Driver (ICD), which we are already supplying. MCD is quick, but a technical dead-end."
"Look, Microsoft loves Quake," he added. "Quake makes Windows look great. Microsoft is happy to work with \[id\] on Direct3D. John's points are not without validity: Direct3D *was* difficult to learn and use \[in the DirectX 3.0 release\]. OpenGL, on the other hand, is orthogonal so it's easier to get started. Once you understand Direct3D, however, you're set. And the new DrawPrimitive in Direct3D 5.0 makes things easier while offering higher performance."
Microsoft's word to games developers is simple: "Tell us what's wrong and we'll fix it." While there is a minority of games coming out soon based on the Quake engine that will not support Direct3D, Valve's upcoming "Half Life" game will utilize it, despite it's Quake roots. And most upcoming games, such as Tomb Raider II, the next Populous, Unreal, Jedi Knight, and Shadows of the Empire will all support Direct3D 5.0. Many flight sims are also being released soon that support the new APIs.
Going forward, Bachus said that the DirectX 6.0 specification would be completed in August and "code complete" in November. A first beta release is now set for December, with a second beta release in February and the final release due in April 1998. "This will give developers a comfort level for Christmas," Bachus added, since they will want to test the new API for a few months before relying on it for their holiday 1998 titles. The feature-set of DirectX 6.0 is "still fluid. There is a laundry list of features we'd like to add that has to be trimmed down. We will focus on stability and performance as always." Bachus added that some video card-specific features may be added, such as multiple-texture mapping on a single polygon capability used by the 3DFX card. This is still up in the air, however.
An interim release, DirectX 5.0a will be released with Memphis but not be made available elsewhere. It will support Memphis-specific hardware such as USB, multiple monitors, DVD, and AGP. This release will be totally API-compatible with the existing DirectX 5.0.
Clearly, Bachus wishes the OpenGL vs. Direct3D debate would come to an end. "John's a smart guy," he says, "and arguing with John Carmack is contrary to our goals.