+#define GL_FUNC(ret,fn,params,call,rt) \
+ extern "C" { \
+ static ret GLAPIENTRY (*p##fn) params = NULL; \
+ ret GLAPIENTRY fn params { rt p##fn call; } \
+ }
+#include "glstubs.h"
+#undef GL_FUNC
+
+static bool lookup_glsym(const char *funcname, void **func, const char *libname)
+{
+ *func = SDL_GL_GetProcAddress(funcname);
+ if (*func == NULL)
+ {
+ fprintf(stderr, "Failed to find OpenGL symbol \"%s\" in \"%s\"\n",
+ funcname, libname);
+ return false;
+ }
+ return true;
+}
+
+static bool lookup_all_glsyms(const char *libname)
+{
+ bool retval = true;
+ #define GL_FUNC(ret,fn,params,call,rt) \
+ if (!lookup_glsym(#fn, (void **) &p##fn, libname)) retval = false;
+ #include "glstubs.h"
+ #undef GL_FUNC
+ return retval;
+}
+
+static void GLAPIENTRY glDeleteTextures_doNothing(GLsizei n, const GLuint *textures)
+{
+ // no-op.
+}
+
+
+