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

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


Reply via email to