]> git.mxchange.org Git - simgear.git/blobdiff - simgear/screen/extensions.cxx
Add a function which might return whether a texture is in video memory, delete the...
[simgear.git] / simgear / screen / extensions.cxx
index aeab8998520201aa546ff1bf3a33a66a46270289..99a170866c2b38819139b922f8dcd809dda7070b 100644 (file)
 
 #include <string.h>
 
-#ifndef WIN32
-#include <dlfcn.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,
@@ -64,3 +60,37 @@ bool SGIsOpenGLExtensionSupported(char *extName) {
 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