-
-#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 )
-
-void *SGGetGLProcAddress(const char *func) {
- static void *libHandle = NULL;
- void *fptr = NULL;
-
- /*
- * Clear the error buffer
- */
- dlerror();
-
- if (libHandle == NULL)
- libHandle = dlopen("libGL.so", RTLD_LAZY);
-
- if (libHandle == NULL)
- libHandle = dlopen("libGL.so.1", 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
-