#ifndef __SG_EXTENSIONS_HXX
#define __SG_EXTENSIONS_HXX 1
+#if defined(WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__)
+# include <windows.h>
+#else
+# include <dlfcn.h>
+#endif
+
#include <GL/gl.h>
+
#if defined(__cplusplus)
extern "C" {
#endif
void* macosxGetGLProcAddress(const char *func);
#endif
-inline void (*SGLookupFunction(const char *func))() {
-
-#if defined( WIN32 )
- return (void (*)()) wglGetProcAddress(func);
+inline void (*SGLookupFunction(const char *func))()
+{
+#if defined( WIN32 ) && !defined(__CYGWIN__) && !defined(__MINGW32__)
+ return (void (*)()) wglGetProcAddress(func);
#elif defined( __APPLE__ )
- return (void (*)()) macosxGetGLProcAddress(func);
-#else
+ return (void (*)()) macosxGetGLProcAddress(func);
+
+#else // UNIX
+
+ // If the target system s UNIX and the ARB_get_proc_address
+ // GLX extension is *not* guaranteed to be supported. An alternative
+ // dlsym-based approach will be used instead.
- // If the target system s UNIX and the ARB_get_proc_address
- // GLX extension is *not* guaranteed to be supported. An alternative
- // dlsym-based approach will be used instead.
- #if defined( linux ) || defined ( sgi )
- void *libHandle;
- void (*fptr)();
- libHandle = dlopen("libGL.so", RTLD_LAZY);
- fptr = (void (*)()) dlsym(libHandle, func);
- dlclose(libHandle);
- return fptr;
- #else
- return glXGetProcAddressARB(func);
- #endif
+ void *libHandle;
+ void (*fptr)();
+ libHandle = dlopen("libGL.so", RTLD_LAZY);
+ fptr = (void (*)()) dlsym(libHandle, func);
+ dlclose(libHandle);
+ return fptr;
#endif
}