]> git.mxchange.org Git - simgear.git/commitdiff
MSVC and Apple OS X fixes
authorehofman <ehofman>
Thu, 19 Jun 2003 07:40:54 +0000 (07:40 +0000)
committerehofman <ehofman>
Thu, 19 Jun 2003 07:40:54 +0000 (07:40 +0000)
simgear/screen/extensions.cxx
simgear/screen/extensions.hxx

index aeab8998520201aa546ff1bf3a33a66a46270289..e6c17ea24e36d9ed3b09974468b87c6615a9ee21 100644 (file)
 
 #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,
@@ -64,3 +66,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
index 77efd3c3af93a584cce905e880780660170773be..cbf4c2314c21b07f4951d47e0c49c2eaa7183e71 100644 (file)
@@ -37,11 +37,18 @@ extern "C" {
 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
@@ -63,6 +70,9 @@ inline void (*SGLookupFunction(const char *func))() {
 
 
 /* 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);