#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);
- // 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
+#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.
+
+ void *libHandle;
+ void (*fptr)();
+ libHandle = dlopen("libGL.so", RTLD_LAZY);
+ fptr = (void (*)()) dlsym(libHandle, func);
+ dlclose(libHandle);
+ return fptr;
#endif
}
/* OpenGL extension declarations */
+#ifndef GL_EXT_point_parameters
#define GL_POINT_SIZE_MIN_EXT 0x8126
#define GL_DISTANCE_ATTENUATION_EXT 0x8129
+#endif
+
+#ifndef GL_ARB_point_parameters
+#define GL_POINT_SIZE_MIN_ARB 0x8126
+#define GL_DISTANCE_ATTENUATION_ARB 0x8129
+#endif
typedef void (APIENTRY * glPointParameterfProc)(GLenum pname, GLfloat param);
typedef void (APIENTRY * glPointParameterfvProc)(GLenum pname, const GLfloat *params);