Joe DeFuria said:
[If?] The GL's design by committe was so great, it wouldn't be behind DX in many repects, given the relative newness of DX relative to GL.
How, where, what? Direct3D has been behind the curve from since its inception until (excluding) DX8.
So you had this
one release that was 'better' in
one area and that then marks the abandoning of OpenGL in the games market? I beg to differ. GL has been under the pressure of mudslinging PR people rephrasing the old "Well, GL is not designed for games, but Direct3D was, you know" up to the point when they started believing it themselves. That's one of the two reasons Direct3D even exists (as in "survived this long"), the other reason being OpenGL itself. Without OpenGL, there would have been no foundation to 'borrow' the fundamental know how from (eg the already mentioned "DX7" hw t&l, but also more basic things such as texture sampling positions and filters, watertight rasterization, the whole combiner paradigm, stenciling, etc).
On the "DX9" techlevel, OpenGL offers the same shader functionality as Direct3D runtime and is less restrictive. High level compilation in DXG, pardon me, just went horribly wrong. There's no point in shipping DXG applications with high level code. Offline tools, that's all you get, albeit in a more complicated way.
That leaves us with the single apparent* benefit of using DX Graphics:
Pixel shaders at the NV2x/R200 tech level are sort of unified. Ie NV2x hardware capabilities were brutalized to put them just below R200, so that a vendor neutral PS1.1~1.3 could be defined. PS1.1 runs on R200 while in OpenGL there is no such common ground. R200 fragment shaders and NV_register_combiners/NV_texture_shader must be explicitly supported in seperate codepaths. This is just a reflection of reality, the hardware is vastly different after all.
From a 'business' pov this certainly makes DXG look more attractive. OTOH it tends to underexpose hardware, which equals performance loss
Add on top of that all the political issues that have spawned from this backwards compatible versioning scheme (3DMark2k1 "advanced pixel shaders"; PS1.4 in 3DMark2k3; PS2.0a anyone?). DX Graphics just isn't fair, particularly not so in the context of neutral benchmarks. Admittedly this is a side issue, but it didn't tilt my sympathy towards DXG.
*adding an ARB_fragment_program backend to my pet project took me eight hours, including debugging, validation and going final. The backend runtime-generates shaders from a rendering state vector and caches them in API objects via hash. Approx 10000 possible permutations. It's not
that much work to support multiple paths.