[wined3d] Converting Wined3d to use WGL instead of GLX

Lionel Ulmer lionel.ulmer at free.fr
Sat Dec 17 05:43:50 CST 2005

On Wed, Dec 14, 2005 at 03:53:12AM +0000, Aric Cyr wrote:
> So now I am stuck...  if I use wglGetProcAddress for OpenGL extensions I get
> crashes in most D3D9 applications.  If I use glXGetProcAddress in wined3d
> everything works fine, but then wined3d is still dependent on glx.

The answer is easy (did not read the complete thread in details to know if
you found out the solution or not): basically, 'wglGetProcAddress' returns
functions as expected by Win32 applications, so using the 'stdcall' calling
convention whereas 'glXGetProcAddress' returns them in the standard Unix
calling convention 'cdecl'.

So you basically have the same problem with GL extensions that you had with
direct linking to OpenGL32.DLL instead of to libGL.so => all the calls going
through function pointers that you retrieved via 'wglGetProcAddress' will go
through thunks to change the calling convention (at the price of a slight
performance hit).

Moreover, you will have a nice 'header' head-ache as you won't be able to
rely on the Linux distribution's version of 'glext.h' but on a version
compatible with Windows that adds the proper 'STDCALL' types to the function
pointer prototypes.


		 Lionel Ulmer - http://www.bbrox.org/

More information about the wine-devel mailing list