/* WGL loader generated by glad 0.1.25 on Mon Jul 23 02:57:35 2018. Language/Generator: C/C++ Specification: wgl APIs: wgl=1.0 Profile: - Extensions: WGL_ARB_create_context, WGL_ARB_create_context_profile, WGL_ARB_extensions_string, WGL_ARB_pixel_format, WGL_EXT_extensions_string, WGL_EXT_swap_control Loader: True Local files: False Omit khrplatform: False Commandline: --api="wgl=1.0" --generator="c" --spec="wgl" --extensions="WGL_ARB_create_context,WGL_ARB_create_context_profile,WGL_ARB_extensions_string,WGL_ARB_pixel_format,WGL_EXT_extensions_string,WGL_EXT_swap_control" Online: http://glad.dav1d.de/#language=c&specification=wgl&loader=on&api=wgl%3D1.0&extensions=WGL_ARB_create_context&extensions=WGL_ARB_create_context_profile&extensions=WGL_ARB_extensions_string&extensions=WGL_ARB_pixel_format&extensions=WGL_EXT_extensions_string&extensions=WGL_EXT_swap_control */ #include #include #include #include static void* get_proc(const char *namez); #if defined(_WIN32) || defined(__CYGWIN__) #include static HMODULE libGL; typedef void* (APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char*); static PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; #ifdef _MSC_VER #ifdef __has_include #if __has_include() #define HAVE_WINAPIFAMILY 1 #endif #elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ #define HAVE_WINAPIFAMILY 1 #endif #endif #ifdef HAVE_WINAPIFAMILY #include #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #define IS_UWP 1 #endif #endif static int open_gl(void) { #ifndef IS_UWP libGL = LoadLibraryW(L"opengl32.dll"); if(libGL != NULL) { void (* tmp)(void); tmp = (void(*)(void)) GetProcAddress(libGL, "wglGetProcAddress"); gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE) tmp; return gladGetProcAddressPtr != NULL; } #endif return 0; } static void close_gl(void) { if(libGL != NULL) { FreeLibrary((HMODULE) libGL); libGL = NULL; } } #else #include static void* libGL; #ifndef __APPLE__ typedef void* (APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char*); static PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; #endif static int open_gl(void) { #ifdef __APPLE__ static const char *NAMES[] = { "../Frameworks/OpenGL.framework/OpenGL", "/Library/Frameworks/OpenGL.framework/OpenGL", "/System/Library/Frameworks/OpenGL.framework/OpenGL", "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL" }; #else static const char *NAMES[] = {"libGL.so.1", "libGL.so"}; #endif unsigned int index = 0; for(index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) { libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL); if(libGL != NULL) { #ifdef __APPLE__ return 1; #else gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL, "glXGetProcAddressARB"); return gladGetProcAddressPtr != NULL; #endif } } return 0; } static void close_gl(void) { if(libGL != NULL) { dlclose(libGL); libGL = NULL; } } #endif static void* get_proc(const char *namez) { void* result = NULL; if(libGL == NULL) return NULL; #ifndef __APPLE__ if(gladGetProcAddressPtr != NULL) { result = gladGetProcAddressPtr(namez); } #endif if(result == NULL) { #if defined(_WIN32) || defined(__CYGWIN__) result = (void*)GetProcAddress((HMODULE) libGL, namez); #else result = dlsym(libGL, namez); #endif } return result; } int gladLoadWGL(HDC hdc) { int status = 0; if(open_gl()) { status = gladLoadWGLLoader((GLADloadproc)get_proc, hdc); close_gl(); } return status; } static HDC GLADWGLhdc = (HDC)INVALID_HANDLE_VALUE; static int get_exts(void) { return 1; } static void free_exts(void) { return; } static int has_ext(const char *ext) { const char *terminator; const char *loc; const char *extensions; if(wglGetExtensionsStringEXT == NULL && wglGetExtensionsStringARB == NULL) return 0; if(wglGetExtensionsStringARB == NULL || GLADWGLhdc == INVALID_HANDLE_VALUE) extensions = wglGetExtensionsStringEXT(); else extensions = wglGetExtensionsStringARB(GLADWGLhdc); if(extensions == NULL || ext == NULL) return 0; while(1) { loc = strstr(extensions, ext); if(loc == NULL) break; terminator = loc + strlen(ext); if((loc == extensions || *(loc - 1) == ' ') && (*terminator == ' ' || *terminator == '\0')) { return 1; } extensions = terminator; } return 0; } int GLAD_WGL_VERSION_1_0; int GLAD_WGL_EXT_swap_control; int GLAD_WGL_ARB_pixel_format; int GLAD_WGL_ARB_create_context_profile; int GLAD_WGL_ARB_create_context; int GLAD_WGL_ARB_extensions_string; int GLAD_WGL_EXT_extensions_string; PFNWGLCREATECONTEXTATTRIBSARBPROC glad_wglCreateContextAttribsARB; PFNWGLGETEXTENSIONSSTRINGARBPROC glad_wglGetExtensionsStringARB; PFNWGLGETPIXELFORMATATTRIBIVARBPROC glad_wglGetPixelFormatAttribivARB; PFNWGLGETPIXELFORMATATTRIBFVARBPROC glad_wglGetPixelFormatAttribfvARB; PFNWGLCHOOSEPIXELFORMATARBPROC glad_wglChoosePixelFormatARB; PFNWGLGETEXTENSIONSSTRINGEXTPROC glad_wglGetExtensionsStringEXT; PFNWGLSWAPINTERVALEXTPROC glad_wglSwapIntervalEXT; PFNWGLGETSWAPINTERVALEXTPROC glad_wglGetSwapIntervalEXT; static void load_WGL_ARB_create_context(GLADloadproc load) { if(!GLAD_WGL_ARB_create_context) return; glad_wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)load("wglCreateContextAttribsARB"); } static void load_WGL_ARB_extensions_string(GLADloadproc load) { if(!GLAD_WGL_ARB_extensions_string) return; glad_wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)load("wglGetExtensionsStringARB"); } static void load_WGL_ARB_pixel_format(GLADloadproc load) { if(!GLAD_WGL_ARB_pixel_format) return; glad_wglGetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC)load("wglGetPixelFormatAttribivARB"); glad_wglGetPixelFormatAttribfvARB = (PFNWGLGETPIXELFORMATATTRIBFVARBPROC)load("wglGetPixelFormatAttribfvARB"); glad_wglChoosePixelFormatARB = (PFNWGLCHOOSEPIXELFORMATARBPROC)load("wglChoosePixelFormatARB"); } static void load_WGL_EXT_extensions_string(GLADloadproc load) { if(!GLAD_WGL_EXT_extensions_string) return; glad_wglGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)load("wglGetExtensionsStringEXT"); } static void load_WGL_EXT_swap_control(GLADloadproc load) { if(!GLAD_WGL_EXT_swap_control) return; glad_wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)load("wglSwapIntervalEXT"); glad_wglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC)load("wglGetSwapIntervalEXT"); } static int find_extensionsWGL(void) { if (!get_exts()) return 0; GLAD_WGL_ARB_create_context = has_ext("WGL_ARB_create_context"); GLAD_WGL_ARB_create_context_profile = has_ext("WGL_ARB_create_context_profile"); GLAD_WGL_ARB_extensions_string = has_ext("WGL_ARB_extensions_string"); GLAD_WGL_ARB_pixel_format = has_ext("WGL_ARB_pixel_format"); GLAD_WGL_EXT_extensions_string = has_ext("WGL_EXT_extensions_string"); GLAD_WGL_EXT_swap_control = has_ext("WGL_EXT_swap_control"); free_exts(); return 1; } static void find_coreWGL(HDC hdc) { GLADWGLhdc = hdc; } int gladLoadWGLLoader(GLADloadproc load, HDC hdc) { wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)load("wglGetExtensionsStringARB"); wglGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)load("wglGetExtensionsStringEXT"); if(wglGetExtensionsStringARB == NULL && wglGetExtensionsStringEXT == NULL) return 0; find_coreWGL(hdc); if (!find_extensionsWGL()) return 0; load_WGL_ARB_create_context(load); load_WGL_ARB_extensions_string(load); load_WGL_ARB_pixel_format(load); load_WGL_EXT_extensions_string(load); load_WGL_EXT_swap_control(load); return 1; }