#include <string.h>
#include "extensions.hxx"
+#include <simgear/debug/logstream.hxx>
-bool SGSearchExtensionsString(char *extString, char *extName) {
+static bool SGSearchExtensionsString(char *extString, char *extName) {
// Returns GL_TRUE if the *extName string appears in the *extString string,
// surrounded by white spaces, or GL_FALSE otherwise.
// The *extName string must follow the OpenGL extensions naming scheme
// (ie: "GL_type_extension", like GL_EXT_convolution)
- return SGSearchExtensionsString((char *)glGetString(GL_EXTENSIONS),
-extName);
+ return SGSearchExtensionsString((char *)glGetString(GL_EXTENSIONS),extName);
}
#ifdef __APPLE__
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) {
+ 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
+