#ifndef WIN32
#include <dlfcn.h>
+#else
+#include <windows.h>
#endif
-#include <extensions.hxx>
+#include "extensions.hxx"
bool SGSearchExtensionsString(char *extString, char *extName) {
// Returns GL_TRUE if the *extName string appears in the *extString string,
extName);
}
+#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;
+}
+
+#endif
static bool SGSearchExtensionsString(char *extString, char *extName);
bool SGIsOpenGLExtensionSupported(char *extName);
+#ifdef __APPLE__
+ // don't use an inline function for symbol lookup, since it is too big
+ void* macosxGetGLProcAddress(const char *func);
+#endif
+
inline void (*SGLookupFunction(const char *func))() {
#if defined( WIN32 )
return (void (*)()) wglGetProcAddress(func);
+#elif defined( __APPLE__ )
+ return (void (*)()) macosxGetGLProcAddress(func);
#else
// If the target system s UNIX and the ARB_get_proc_address
/* OpenGL extension declarations */
+#define GL_POINT_SIZE_MIN_EXT 0x8126
+#define GL_DISTANCE_ATTENUATION_EXT 0x8129
+
typedef void (APIENTRY * glPointParameterfProc)(GLenum pname, GLfloat param);
typedef void (APIENTRY * glPointParameterfvProc)(GLenum pname, const GLfloat *params);