Originally posted by V-man:
[b]leeman’s first paragraph is correct but it’s not complete.
On WinXP, MS redid opengl32.dll, what was once a software implementation of GL 1.1
It is a wrapper that makes D3D calls.
[/b]
Almost. On XP there’s a very limited OpenGL-over-D3D implementation, which normally kicks in only when you play quake3 or similar.
For the rest of the cases, you get the usual software GDI implementation .
[b]
Of course, if you have drivers installed from a manufacturer, opengl32.dll routes GL function calls to the video driver which may or may not be a wrapper.
3D labs, NVidia, ATI and other don’t use a wrapper. Matrox uses a wrapper.
I don’t know any others.[/b]
There’s another datapoint here, some Win9x ICDs use DirectX functionality. For example, I believe Nvidia required DirectDraw for their ICD to work (I had to suffer a problem related to that , only fixed when you ran some D3D app before any OpenGL app, others had the same problem).
The reason to require DirectDraw I believe is related to the need to lock the frontbuffer to avoid race conditions with GDI when rendering to the frontbuffer, although in some implementations it may also be used to deal with the video memory in general (DirectDraw used to provide a video heap manager).
IIRC Microsoft’s implementation also makes use of DirectDraw in order to render to the frontbuffer (you can easily see that opengl32.dll depends on ddraw.dll, maybe that’s what the reference of the original poster meant).
Finally, Longhorn is said to have an improved OpenGL-over-D3D layer, as well as the normal ICD path. See David Blythe's Windows Graphics Foundation presentation at Winhec 2004 for a diagram.