medfall

A super great game engine
Log | Files | Refs

__init__.py (2963B)


      1 
      2 LOAD_OPENGL_DLL = '''
      3 %(pre)s void* %(proc)s(const char *namez);
      4 
      5 #ifdef _WIN32
      6 #include <windows.h>
      7 static HMODULE libGL;
      8 
      9 typedef void* (APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char*);
     10 PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr;
     11 
     12 %(pre)s
     13 int %(init)s(void) {
     14     libGL = LoadLibraryW(L"opengl32.dll");
     15     if(libGL != NULL) {
     16         gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE)GetProcAddress(
     17                 libGL, "wglGetProcAddress");
     18         return gladGetProcAddressPtr != NULL;
     19     }
     20 
     21     return 0;
     22 }
     23 
     24 %(pre)s
     25 void %(terminate)s(void) {
     26     if(libGL != NULL) {
     27         FreeLibrary(libGL);
     28         libGL = NULL;
     29     }
     30 }
     31 #else
     32 #include <dlfcn.h>
     33 static void* libGL;
     34 
     35 #ifndef __APPLE__
     36 typedef void* (APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char*);
     37 PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr;
     38 #endif
     39 
     40 %(pre)s
     41 int %(init)s(void) {
     42 #ifdef __APPLE__
     43     static const char *NAMES[] = {
     44         "../Frameworks/OpenGL.framework/OpenGL",
     45         "/Library/Frameworks/OpenGL.framework/OpenGL",
     46         "/System/Library/Frameworks/OpenGL.framework/OpenGL",
     47         "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL"
     48     };
     49 #else
     50     static const char *NAMES[] = {"libGL.so.1", "libGL.so"};
     51 #endif
     52 
     53     unsigned int index = 0;
     54     for(index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) {
     55         libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL);
     56 
     57         if(libGL != NULL) {
     58 #ifdef __APPLE__
     59             return 1;
     60 #else
     61             gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL,
     62                 "glXGetProcAddressARB");
     63             return gladGetProcAddressPtr != NULL;
     64 #endif
     65         }
     66     }
     67 
     68     return 0;
     69 }
     70 
     71 %(pre)s
     72 void %(terminate)s() {
     73     if(libGL != NULL) {
     74         dlclose(libGL);
     75         libGL = NULL;
     76     }
     77 }
     78 #endif
     79 
     80 %(pre)s
     81 void* %(proc)s(const char *namez) {
     82     void* result = NULL;
     83     if(libGL == NULL) return NULL;
     84 
     85 #ifndef __APPLE__
     86     if(gladGetProcAddressPtr != NULL) {
     87         result = gladGetProcAddressPtr(namez);
     88     }
     89 #endif
     90     if(result == NULL) {
     91 #ifdef _WIN32
     92         result = (void*)GetProcAddress(libGL, namez);
     93 #else
     94         result = dlsym(libGL, namez);
     95 #endif
     96     }
     97 
     98     return result;
     99 }
    100 '''
    101 
    102 LOAD_OPENGL_DLL_H = '''
    103 '''
    104 
    105 LOAD_OPENGL_GLAPI_H = '''
    106 #ifndef GLAPI
    107 # if defined(GLAD_GLAPI_EXPORT)
    108 #  if defined(WIN32) || defined(__CYGWIN__)
    109 #   if defined(GLAD_GLAPI_EXPORT_BUILD)
    110 #    if defined(__GNUC__)
    111 #     define GLAPI __attribute__ ((dllexport)) extern
    112 #    else
    113 #     define GLAPI __declspec(dllexport) extern
    114 #    endif
    115 #   else
    116 #    if defined(__GNUC__)
    117 #     define GLAPI __attribute__ ((dllimport)) extern
    118 #    else
    119 #     define GLAPI __declspec(dllimport) extern
    120 #    endif
    121 #   endif
    122 #  elif defined(__GNUC__) && defined(GLAD_GLAPI_EXPORT_BUILD)
    123 #   define GLAPI __attribute__ ((visibility ("default"))) extern
    124 #  else
    125 #   define GLAPI extern
    126 #  endif
    127 # else
    128 #  define GLAPI extern
    129 # endif
    130 #endif
    131 '''
    132