-
-#ifdef __APPLE__
-
-#include <CoreFoundation/CoreFoundation.h>
-
-void* macosxGetGLProcAddress(const char *func) {
-
- /* We may want to cache the bundleRef at some point */
- static CFBundleRef bundle = 0;
-
- if (!bundle) {
-
- CFURLRef bundleURL = CFURLCreateWithFileSystemPath (kCFAllocatorDefault,
- CFSTR("/System/Library/Frameworks/OpenGL.framework"), kCFURLPOSIXPathStyle, true);
-
- bundle = CFBundleCreate (kCFAllocatorDefault, bundleURL);
- CFRelease (bundleURL);
- }
-
- if (!bundle)
- return 0;
-
- CFStringRef functionName = CFStringCreateWithCString
- (kCFAllocatorDefault, func, kCFStringEncodingASCII);
-
- void *function;
-
- function = CFBundleGetFunctionPointerForName (bundle, functionName);
-
- CFRelease (functionName);
-
- return function;
-}
-
-#elif !defined( WIN32 ) && !defined(GLX_VERSION_1_4)
-
-void *SGGetGLProcAddress(const char *func) {
- static void *libHandle = NULL;
- void *fptr = NULL;
-
- /*
- * Clear the error buffer
- */
- dlerror();
-
- /*
- * Since libGL must be linked to the binary we run on, this is the
- * right handle. That 'current binary' handle also avoids conflicts which
- * arise from linking with a different libGL at link time an than later
- * use the standard libGL at runtime ...
- */
- if (libHandle == NULL)
- libHandle = dlopen(NULL, RTLD_LAZY);
-
- if (libHandle != NULL) {
- fptr = dlsym(libHandle, func);
-
-#if defined (__FreeBSD__)
- const char *error = dlerror();
-#else
- char *error = dlerror();
-#endif
- if (error)
- SG_LOG(SG_GENERAL, SG_INFO, error);
- }
-
- return fptr;
-}
-
-#endif
-