Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
wgl.c
Go to the documentation of this file.
1/**
2 * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0
3 */
4#include <stdio.h>
5#include <stdlib.h>
6#include <string.h>
7#include <glad/wgl.h>
8
9#ifndef GLAD_IMPL_UTIL_C_
10#define GLAD_IMPL_UTIL_C_
11
12#ifdef _MSC_VER
13#define GLAD_IMPL_UTIL_SSCANF sscanf_s
14#else
15#define GLAD_IMPL_UTIL_SSCANF sscanf
16#endif
17
18#endif /* GLAD_IMPL_UTIL_C_ */
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24
25
30
31
32
35
36
39 glad_wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) load(userptr, "wglGetExtensionsStringARB");
40}
43 glad_wglGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC) load(userptr, "wglGetExtensionsStringEXT");
44}
45
46
47
48static int glad_wgl_has_extension(HDC hdc, const char *ext) {
49 const char *terminator;
50 const char *loc;
51 const char *extensions;
52
54 return 0;
55
57 extensions = wglGetExtensionsStringEXT();
58 else
59 extensions = wglGetExtensionsStringARB(hdc);
60
61 if(extensions == NULL || ext == NULL)
62 return 0;
63
64 while(1) {
65 loc = strstr(extensions, ext);
66 if(loc == NULL)
67 break;
68
69 terminator = loc + strlen(ext);
70 if((loc == extensions || *(loc - 1) == ' ') &&
71 (*terminator == ' ' || *terminator == '\0'))
72 {
73 return 1;
74 }
75 extensions = terminator;
76 }
77
78 return 0;
79}
80
81static GLADapiproc glad_wgl_get_proc_from_userptr(void *userptr, const char* name) {
82 return (GLAD_GNUC_EXTENSION (GLADapiproc (*)(const char *name)) userptr)(name);
83}
84
85static int glad_wgl_find_extensions_wgl(HDC hdc) {
86 GLAD_WGL_ARB_extensions_string = glad_wgl_has_extension(hdc, "WGL_ARB_extensions_string");
87 GLAD_WGL_ARB_multisample = glad_wgl_has_extension(hdc, "WGL_ARB_multisample");
88 GLAD_WGL_EXT_extensions_string = glad_wgl_has_extension(hdc, "WGL_EXT_extensions_string");
89 return 1;
90}
91
92static int glad_wgl_find_core_wgl(void) {
93 int major = 1, minor = 0;
94 GLAD_WGL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1;
95 return GLAD_MAKE_VERSION(major, minor);
96}
97
98int gladLoadWGLUserPtr(HDC hdc, GLADuserptrloadfunc load, void *userptr) {
99 int version;
100 wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) load(userptr, "wglGetExtensionsStringARB");
101 wglGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC) load(userptr, "wglGetExtensionsStringEXT");
103 version = glad_wgl_find_core_wgl();
104
105
106 if (!glad_wgl_find_extensions_wgl(hdc)) return 0;
109
110
111 return version;
112}
113
114int gladLoadWGL(HDC hdc, GLADloadfunc load) {
116}
117
118
119#ifdef GLAD_WGL
120
121static GLADapiproc glad_wgl_get_proc(void *vuserptr, const char* name) {
122 GLAD_UNUSED(vuserptr);
123 return GLAD_GNUC_EXTENSION (GLADapiproc) wglGetProcAddress(name);
124}
125
126int gladLoaderLoadWGL(HDC hdc) {
128}
129
130
131#endif /* GLAD_WGL */
132
133#ifdef __cplusplus
134}
135#endif
char name[80]
Definition TGX11.cxx:148
#define INVALID_HANDLE_VALUE
Definition TMapFile.cxx:84
#define NULL
Definition ZInflate.c:15
GLADapiproc(* GLADuserptrloadfunc)(void *userptr, const char *name)
Definition gl.h:172
void(* GLADapiproc)(void)
Definition gl.h:169
#define GLAD_UNUSED(x)
Definition gl.h:119
#define GLAD_MAKE_VERSION(major, minor)
Definition gl.h:163
#define GLAD_GNUC_EXTENSION
Definition gl.h:116
GLADapiproc(* GLADloadfunc)(const char *name)
Definition gl.h:171
static void glad_wgl_load_WGL_EXT_extensions_string(GLADuserptrloadfunc load, void *userptr)
Definition wgl.c:41
static int glad_wgl_find_extensions_wgl(HDC hdc)
Definition wgl.c:85
static void glad_wgl_load_WGL_ARB_extensions_string(GLADuserptrloadfunc load, void *userptr)
Definition wgl.c:37
static GLADapiproc glad_wgl_get_proc(void *vuserptr, const char *name)
Definition wgl.c:121
static GLADapiproc glad_wgl_get_proc_from_userptr(void *userptr, const char *name)
Definition wgl.c:81
int gladLoadWGL(HDC hdc, GLADloadfunc load)
Definition wgl.c:114
int gladLoadWGLUserPtr(HDC hdc, GLADuserptrloadfunc load, void *userptr)
Definition wgl.c:98
static int glad_wgl_find_core_wgl(void)
Definition wgl.c:92
static int glad_wgl_has_extension(HDC hdc, const char *ext)
Definition wgl.c:48
int gladLoaderLoadWGL(HDC hdc)
Definition wgl.c:126
PFNWGLGETEXTENSIONSSTRINGARBPROC glad_wglGetExtensionsStringARB
Definition wgl.c:33
#define wglGetExtensionsStringEXT
Definition wgl.h:285
const char *(* PFNWGLGETEXTENSIONSSTRINGEXTPROC)(void)
Definition wgl.h:267
PFNWGLGETEXTENSIONSSTRINGEXTPROC glad_wglGetExtensionsStringEXT
Definition wgl.c:34
int GLAD_WGL_ARB_multisample
Definition wgl.c:28
int GLAD_WGL_EXT_extensions_string
Definition wgl.c:29
int GLAD_WGL_VERSION_1_0
Definition wgl.c:26
const char *(* PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC hdc)
Definition wgl.h:266
#define wglGetExtensionsStringARB
Definition wgl.h:283
int GLAD_WGL_ARB_extensions_string
Definition wgl.c:27