MSVC and Apple OS X fixes
This commit is contained in:
@@ -26,9 +26,11 @@
|
|||||||
|
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
#else
|
||||||
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <extensions.hxx>
|
#include "extensions.hxx"
|
||||||
|
|
||||||
bool SGSearchExtensionsString(char *extString, char *extName) {
|
bool SGSearchExtensionsString(char *extString, char *extName) {
|
||||||
// Returns GL_TRUE if the *extName string appears in the *extString string,
|
// Returns GL_TRUE if the *extName string appears in the *extString string,
|
||||||
@@ -64,3 +66,37 @@ bool SGIsOpenGLExtensionSupported(char *extName) {
|
|||||||
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
|
||||||
|
|||||||
@@ -37,11 +37,18 @@ extern "C" {
|
|||||||
static bool SGSearchExtensionsString(char *extString, char *extName);
|
static bool SGSearchExtensionsString(char *extString, char *extName);
|
||||||
bool SGIsOpenGLExtensionSupported(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))() {
|
inline void (*SGLookupFunction(const char *func))() {
|
||||||
|
|
||||||
#if defined( WIN32 )
|
#if defined( WIN32 )
|
||||||
return (void (*)()) wglGetProcAddress(func);
|
return (void (*)()) wglGetProcAddress(func);
|
||||||
|
|
||||||
|
#elif defined( __APPLE__ )
|
||||||
|
return (void (*)()) macosxGetGLProcAddress(func);
|
||||||
#else
|
#else
|
||||||
|
|
||||||
// If the target system s UNIX and the ARB_get_proc_address
|
// 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 */
|
/* 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 * glPointParameterfProc)(GLenum pname, GLfloat param);
|
||||||
typedef void (APIENTRY * glPointParameterfvProc)(GLenum pname, const GLfloat *params);
|
typedef void (APIENTRY * glPointParameterfvProc)(GLenum pname, const GLfloat *params);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user