1 module glad.gl.loader;
2 
3 
4 private import glad.gl.funcs;
5 private import glad.gl.ext;
6 private import glad.gl.enums;
7 private import glad.gl.types;
8 alias Loader = void* delegate(const(char)*);
9 
10 version(Windows) {
11     private import core.sys.windows.windows;
12 } else {
13     private import core.sys.posix.dlfcn;
14 }
15 
16 version(Windows) {
17     private __gshared HMODULE libGL;
18 } else {
19     private __gshared void* libGL;
20 }
21 extern(System) private @nogc alias gladGetProcAddressPtrType = void* function(const(char)*);
22 private __gshared gladGetProcAddressPtrType gladGetProcAddressPtr;
23 
24 private
25 bool open_gl() @nogc {
26 	version(WebAssembly)return false;
27     else version(Windows) {
28         libGL = LoadLibraryA("opengl32.dll");
29         if(libGL !is null) {
30             gladGetProcAddressPtr = cast(typeof(gladGetProcAddressPtr))GetProcAddress(
31                 libGL, "wglGetProcAddress");
32             return gladGetProcAddressPtr !is null;
33         }
34 
35         return false;
36     } else {
37         version(OSX) {
38             enum const(char)*[4] NAMES = [
39                 "../Frameworks/OpenGL.framework/OpenGL",
40                 "/Library/Frameworks/OpenGL.framework/OpenGL",
41                 "/System/Library/Frameworks/OpenGL.framework/OpenGL",
42                 "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL"
43             ];
44         } else {
45             enum const(char)*[2] NAMES = ["libGL.so.1", "libGL.so"];
46         }
47 
48         foreach(name; NAMES) {
49             libGL = dlopen(name, RTLD_NOW | RTLD_GLOBAL);
50             if(libGL !is null) {
51                 version(OSX) {
52                     return true;
53                 } else {
54                     gladGetProcAddressPtr = cast(typeof(gladGetProcAddressPtr))dlsym(libGL,
55                         "glXGetProcAddressARB");
56                     return gladGetProcAddressPtr !is null;
57                 }
58             }
59         }
60 
61         return false;
62     }
63 }
64 
65 private
66 void* get_proc(const(char)* namez) @nogc {
67     if(libGL is null) return null;
68     void* result;
69 
70     if(gladGetProcAddressPtr !is null) {
71         result = gladGetProcAddressPtr(namez);
72     }
73     if(result is null) {
74         version(WebAssembly)return result;
75     	else version(Windows) {
76             result = GetProcAddress(libGL, namez);
77         } else {
78             result = dlsym(libGL, namez);
79         }
80     }
81 
82     return result;
83 }
84 
85 private
86 void close_gl() @nogc {
87     version(WebAssembly){}
88     else version(Windows) {
89         if(libGL !is null) {
90             FreeLibrary(libGL);
91             libGL = null;
92         }
93     } else {
94         if(libGL !is null) {
95             dlclose(libGL);
96             libGL = null;
97         }
98     }
99 }
100 
101 bool gladLoadGL() {
102     bool status = false;
103 
104     if(open_gl()) {
105         status = gladLoadGL(x => get_proc(x));
106         close_gl();
107     }
108 
109     return status;
110 }
111 
112 __gshared struct GLVersion { __gshared int major = 0; __gshared int minor = 0; }
113 private extern(C) char* strstr(const(char)*, const(char)*) @nogc;
114 private extern(C) int strcmp(const(char)*, const(char)*) @nogc;
115 private extern(C) int strncmp(const(char)*, const(char)*, size_t) @nogc;
116 private extern(C) size_t strlen(const(char)*) @nogc;
117 private bool has_ext(const(char)* ext) @nogc {
118     if(GLVersion.major < 3) {
119         const(char)* extensions = cast(const(char)*)glGetString(GL_EXTENSIONS);
120         const(char)* loc;
121         const(char)* terminator;
122 
123         if(extensions is null || ext is null) {
124             return false;
125         }
126 
127         while(1) {
128             loc = strstr(extensions, ext);
129             if(loc is null) {
130                 return false;
131             }
132 
133             terminator = loc + strlen(ext);
134             if((loc is extensions || *(loc - 1) == ' ') &&
135                 (*terminator == ' ' || *terminator == '\0')) {
136                 return true;
137             }
138             extensions = terminator;
139         }
140     } else {
141         int num;
142         glGetIntegerv(GL_NUM_EXTENSIONS, &num);
143 
144         for(uint i=0; i < cast(uint)num; i++) {
145             if(strcmp(cast(const(char)*)glGetStringi(GL_EXTENSIONS, i), ext) == 0) {
146                 return true;
147             }
148         }
149     }
150 
151     return false;
152 }
153 bool gladLoadGL(Loader load) {
154 	glGetString = cast(typeof(glGetString))load("glGetString");
155 	if(glGetString is null) { return false; }
156 	if(glGetString(GL_VERSION) is null) { return false; }
157 
158 	find_coreGL();
159 	load_GL_VERSION_1_0(load);
160 	load_GL_VERSION_1_1(load);
161 	load_GL_VERSION_1_2(load);
162 	load_GL_VERSION_1_3(load);
163 	load_GL_VERSION_1_4(load);
164 	load_GL_VERSION_1_5(load);
165 	load_GL_VERSION_2_0(load);
166 	load_GL_VERSION_2_1(load);
167 	load_GL_VERSION_3_0(load);
168 	load_GL_VERSION_3_1(load);
169 	load_GL_VERSION_3_2(load);
170 	load_GL_VERSION_3_3(load);
171 
172 	find_extensionsGL();
173 	return GLVersion.major != 0 || GLVersion.minor != 0;
174 }
175 
176 private {
177 
178 void find_coreGL() {
179 
180     // Thank you @elmindreda
181     // https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176
182     // https://github.com/glfw/glfw/blob/master/src/context.c#L36
183     int i;
184     const(char)* glversion;
185     const(char)*[3] prefixes = [
186         "OpenGL ES-CM ".ptr,
187         "OpenGL ES-CL ".ptr,
188         "OpenGL ES ".ptr,
189     ];
190 
191     glversion = cast(const(char)*)glGetString(GL_VERSION);
192     if (glversion is null) return;
193 
194     foreach(prefix; prefixes) {
195         size_t length = strlen(prefix);
196         if (strncmp(glversion, prefix, length) == 0) {
197             glversion += length;
198             break;
199         }
200     }
201 
202     int major = glversion[0] - '0';
203     int minor = glversion[2] - '0';
204     GLVersion.major = major; GLVersion.minor = minor;
205 	GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1;
206 	GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1;
207 	GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1;
208 	GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1;
209 	GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1;
210 	GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1;
211 	GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2;
212 	GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2;
213 	GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3;
214 	GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3;
215 	GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3;
216 	GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3;
217 	return;
218 }
219 
220 void find_extensionsGL() {
221 	return;
222 }
223 
224 void load_GL_VERSION_1_0(Loader load) {
225 	if(!GL_VERSION_1_0) return;
226 	glCullFace = cast(typeof(glCullFace))load("glCullFace");
227 	glFrontFace = cast(typeof(glFrontFace))load("glFrontFace");
228 	glHint = cast(typeof(glHint))load("glHint");
229 	glLineWidth = cast(typeof(glLineWidth))load("glLineWidth");
230 	glPointSize = cast(typeof(glPointSize))load("glPointSize");
231 	glPolygonMode = cast(typeof(glPolygonMode))load("glPolygonMode");
232 	glScissor = cast(typeof(glScissor))load("glScissor");
233 	glTexParameterf = cast(typeof(glTexParameterf))load("glTexParameterf");
234 	glTexParameterfv = cast(typeof(glTexParameterfv))load("glTexParameterfv");
235 	glTexParameteri = cast(typeof(glTexParameteri))load("glTexParameteri");
236 	glTexParameteriv = cast(typeof(glTexParameteriv))load("glTexParameteriv");
237 	glTexImage1D = cast(typeof(glTexImage1D))load("glTexImage1D");
238 	glTexImage2D = cast(typeof(glTexImage2D))load("glTexImage2D");
239 	glDrawBuffer = cast(typeof(glDrawBuffer))load("glDrawBuffer");
240 	glClear = cast(typeof(glClear))load("glClear");
241 	glClearColor = cast(typeof(glClearColor))load("glClearColor");
242 	glClearStencil = cast(typeof(glClearStencil))load("glClearStencil");
243 	glClearDepth = cast(typeof(glClearDepth))load("glClearDepth");
244 	glStencilMask = cast(typeof(glStencilMask))load("glStencilMask");
245 	glColorMask = cast(typeof(glColorMask))load("glColorMask");
246 	glDepthMask = cast(typeof(glDepthMask))load("glDepthMask");
247 	glDisable = cast(typeof(glDisable))load("glDisable");
248 	glEnable = cast(typeof(glEnable))load("glEnable");
249 	glFinish = cast(typeof(glFinish))load("glFinish");
250 	glFlush = cast(typeof(glFlush))load("glFlush");
251 	glBlendFunc = cast(typeof(glBlendFunc))load("glBlendFunc");
252 	glLogicOp = cast(typeof(glLogicOp))load("glLogicOp");
253 	glStencilFunc = cast(typeof(glStencilFunc))load("glStencilFunc");
254 	glStencilOp = cast(typeof(glStencilOp))load("glStencilOp");
255 	glDepthFunc = cast(typeof(glDepthFunc))load("glDepthFunc");
256 	glPixelStoref = cast(typeof(glPixelStoref))load("glPixelStoref");
257 	glPixelStorei = cast(typeof(glPixelStorei))load("glPixelStorei");
258 	glReadBuffer = cast(typeof(glReadBuffer))load("glReadBuffer");
259 	glReadPixels = cast(typeof(glReadPixels))load("glReadPixels");
260 	glGetBooleanv = cast(typeof(glGetBooleanv))load("glGetBooleanv");
261 	glGetDoublev = cast(typeof(glGetDoublev))load("glGetDoublev");
262 	glGetError = cast(typeof(glGetError))load("glGetError");
263 	glGetFloatv = cast(typeof(glGetFloatv))load("glGetFloatv");
264 	glGetIntegerv = cast(typeof(glGetIntegerv))load("glGetIntegerv");
265 	glGetString = cast(typeof(glGetString))load("glGetString");
266 	glGetTexImage = cast(typeof(glGetTexImage))load("glGetTexImage");
267 	glGetTexParameterfv = cast(typeof(glGetTexParameterfv))load("glGetTexParameterfv");
268 	glGetTexParameteriv = cast(typeof(glGetTexParameteriv))load("glGetTexParameteriv");
269 	glGetTexLevelParameterfv = cast(typeof(glGetTexLevelParameterfv))load("glGetTexLevelParameterfv");
270 	glGetTexLevelParameteriv = cast(typeof(glGetTexLevelParameteriv))load("glGetTexLevelParameteriv");
271 	glIsEnabled = cast(typeof(glIsEnabled))load("glIsEnabled");
272 	glDepthRange = cast(typeof(glDepthRange))load("glDepthRange");
273 	glViewport = cast(typeof(glViewport))load("glViewport");
274 	glNewList = cast(typeof(glNewList))load("glNewList");
275 	glEndList = cast(typeof(glEndList))load("glEndList");
276 	glCallList = cast(typeof(glCallList))load("glCallList");
277 	glCallLists = cast(typeof(glCallLists))load("glCallLists");
278 	glDeleteLists = cast(typeof(glDeleteLists))load("glDeleteLists");
279 	glGenLists = cast(typeof(glGenLists))load("glGenLists");
280 	glListBase = cast(typeof(glListBase))load("glListBase");
281 	glBegin = cast(typeof(glBegin))load("glBegin");
282 	glBitmap = cast(typeof(glBitmap))load("glBitmap");
283 	glColor3b = cast(typeof(glColor3b))load("glColor3b");
284 	glColor3bv = cast(typeof(glColor3bv))load("glColor3bv");
285 	glColor3d = cast(typeof(glColor3d))load("glColor3d");
286 	glColor3dv = cast(typeof(glColor3dv))load("glColor3dv");
287 	glColor3f = cast(typeof(glColor3f))load("glColor3f");
288 	glColor3fv = cast(typeof(glColor3fv))load("glColor3fv");
289 	glColor3i = cast(typeof(glColor3i))load("glColor3i");
290 	glColor3iv = cast(typeof(glColor3iv))load("glColor3iv");
291 	glColor3s = cast(typeof(glColor3s))load("glColor3s");
292 	glColor3sv = cast(typeof(glColor3sv))load("glColor3sv");
293 	glColor3ub = cast(typeof(glColor3ub))load("glColor3ub");
294 	glColor3ubv = cast(typeof(glColor3ubv))load("glColor3ubv");
295 	glColor3ui = cast(typeof(glColor3ui))load("glColor3ui");
296 	glColor3uiv = cast(typeof(glColor3uiv))load("glColor3uiv");
297 	glColor3us = cast(typeof(glColor3us))load("glColor3us");
298 	glColor3usv = cast(typeof(glColor3usv))load("glColor3usv");
299 	glColor4b = cast(typeof(glColor4b))load("glColor4b");
300 	glColor4bv = cast(typeof(glColor4bv))load("glColor4bv");
301 	glColor4d = cast(typeof(glColor4d))load("glColor4d");
302 	glColor4dv = cast(typeof(glColor4dv))load("glColor4dv");
303 	glColor4f = cast(typeof(glColor4f))load("glColor4f");
304 	glColor4fv = cast(typeof(glColor4fv))load("glColor4fv");
305 	glColor4i = cast(typeof(glColor4i))load("glColor4i");
306 	glColor4iv = cast(typeof(glColor4iv))load("glColor4iv");
307 	glColor4s = cast(typeof(glColor4s))load("glColor4s");
308 	glColor4sv = cast(typeof(glColor4sv))load("glColor4sv");
309 	glColor4ub = cast(typeof(glColor4ub))load("glColor4ub");
310 	glColor4ubv = cast(typeof(glColor4ubv))load("glColor4ubv");
311 	glColor4ui = cast(typeof(glColor4ui))load("glColor4ui");
312 	glColor4uiv = cast(typeof(glColor4uiv))load("glColor4uiv");
313 	glColor4us = cast(typeof(glColor4us))load("glColor4us");
314 	glColor4usv = cast(typeof(glColor4usv))load("glColor4usv");
315 	glEdgeFlag = cast(typeof(glEdgeFlag))load("glEdgeFlag");
316 	glEdgeFlagv = cast(typeof(glEdgeFlagv))load("glEdgeFlagv");
317 	glEnd = cast(typeof(glEnd))load("glEnd");
318 	glIndexd = cast(typeof(glIndexd))load("glIndexd");
319 	glIndexdv = cast(typeof(glIndexdv))load("glIndexdv");
320 	glIndexf = cast(typeof(glIndexf))load("glIndexf");
321 	glIndexfv = cast(typeof(glIndexfv))load("glIndexfv");
322 	glIndexi = cast(typeof(glIndexi))load("glIndexi");
323 	glIndexiv = cast(typeof(glIndexiv))load("glIndexiv");
324 	glIndexs = cast(typeof(glIndexs))load("glIndexs");
325 	glIndexsv = cast(typeof(glIndexsv))load("glIndexsv");
326 	glNormal3b = cast(typeof(glNormal3b))load("glNormal3b");
327 	glNormal3bv = cast(typeof(glNormal3bv))load("glNormal3bv");
328 	glNormal3d = cast(typeof(glNormal3d))load("glNormal3d");
329 	glNormal3dv = cast(typeof(glNormal3dv))load("glNormal3dv");
330 	glNormal3f = cast(typeof(glNormal3f))load("glNormal3f");
331 	glNormal3fv = cast(typeof(glNormal3fv))load("glNormal3fv");
332 	glNormal3i = cast(typeof(glNormal3i))load("glNormal3i");
333 	glNormal3iv = cast(typeof(glNormal3iv))load("glNormal3iv");
334 	glNormal3s = cast(typeof(glNormal3s))load("glNormal3s");
335 	glNormal3sv = cast(typeof(glNormal3sv))load("glNormal3sv");
336 	glRasterPos2d = cast(typeof(glRasterPos2d))load("glRasterPos2d");
337 	glRasterPos2dv = cast(typeof(glRasterPos2dv))load("glRasterPos2dv");
338 	glRasterPos2f = cast(typeof(glRasterPos2f))load("glRasterPos2f");
339 	glRasterPos2fv = cast(typeof(glRasterPos2fv))load("glRasterPos2fv");
340 	glRasterPos2i = cast(typeof(glRasterPos2i))load("glRasterPos2i");
341 	glRasterPos2iv = cast(typeof(glRasterPos2iv))load("glRasterPos2iv");
342 	glRasterPos2s = cast(typeof(glRasterPos2s))load("glRasterPos2s");
343 	glRasterPos2sv = cast(typeof(glRasterPos2sv))load("glRasterPos2sv");
344 	glRasterPos3d = cast(typeof(glRasterPos3d))load("glRasterPos3d");
345 	glRasterPos3dv = cast(typeof(glRasterPos3dv))load("glRasterPos3dv");
346 	glRasterPos3f = cast(typeof(glRasterPos3f))load("glRasterPos3f");
347 	glRasterPos3fv = cast(typeof(glRasterPos3fv))load("glRasterPos3fv");
348 	glRasterPos3i = cast(typeof(glRasterPos3i))load("glRasterPos3i");
349 	glRasterPos3iv = cast(typeof(glRasterPos3iv))load("glRasterPos3iv");
350 	glRasterPos3s = cast(typeof(glRasterPos3s))load("glRasterPos3s");
351 	glRasterPos3sv = cast(typeof(glRasterPos3sv))load("glRasterPos3sv");
352 	glRasterPos4d = cast(typeof(glRasterPos4d))load("glRasterPos4d");
353 	glRasterPos4dv = cast(typeof(glRasterPos4dv))load("glRasterPos4dv");
354 	glRasterPos4f = cast(typeof(glRasterPos4f))load("glRasterPos4f");
355 	glRasterPos4fv = cast(typeof(glRasterPos4fv))load("glRasterPos4fv");
356 	glRasterPos4i = cast(typeof(glRasterPos4i))load("glRasterPos4i");
357 	glRasterPos4iv = cast(typeof(glRasterPos4iv))load("glRasterPos4iv");
358 	glRasterPos4s = cast(typeof(glRasterPos4s))load("glRasterPos4s");
359 	glRasterPos4sv = cast(typeof(glRasterPos4sv))load("glRasterPos4sv");
360 	glRectd = cast(typeof(glRectd))load("glRectd");
361 	glRectdv = cast(typeof(glRectdv))load("glRectdv");
362 	glRectf = cast(typeof(glRectf))load("glRectf");
363 	glRectfv = cast(typeof(glRectfv))load("glRectfv");
364 	glRecti = cast(typeof(glRecti))load("glRecti");
365 	glRectiv = cast(typeof(glRectiv))load("glRectiv");
366 	glRects = cast(typeof(glRects))load("glRects");
367 	glRectsv = cast(typeof(glRectsv))load("glRectsv");
368 	glTexCoord1d = cast(typeof(glTexCoord1d))load("glTexCoord1d");
369 	glTexCoord1dv = cast(typeof(glTexCoord1dv))load("glTexCoord1dv");
370 	glTexCoord1f = cast(typeof(glTexCoord1f))load("glTexCoord1f");
371 	glTexCoord1fv = cast(typeof(glTexCoord1fv))load("glTexCoord1fv");
372 	glTexCoord1i = cast(typeof(glTexCoord1i))load("glTexCoord1i");
373 	glTexCoord1iv = cast(typeof(glTexCoord1iv))load("glTexCoord1iv");
374 	glTexCoord1s = cast(typeof(glTexCoord1s))load("glTexCoord1s");
375 	glTexCoord1sv = cast(typeof(glTexCoord1sv))load("glTexCoord1sv");
376 	glTexCoord2d = cast(typeof(glTexCoord2d))load("glTexCoord2d");
377 	glTexCoord2dv = cast(typeof(glTexCoord2dv))load("glTexCoord2dv");
378 	glTexCoord2f = cast(typeof(glTexCoord2f))load("glTexCoord2f");
379 	glTexCoord2fv = cast(typeof(glTexCoord2fv))load("glTexCoord2fv");
380 	glTexCoord2i = cast(typeof(glTexCoord2i))load("glTexCoord2i");
381 	glTexCoord2iv = cast(typeof(glTexCoord2iv))load("glTexCoord2iv");
382 	glTexCoord2s = cast(typeof(glTexCoord2s))load("glTexCoord2s");
383 	glTexCoord2sv = cast(typeof(glTexCoord2sv))load("glTexCoord2sv");
384 	glTexCoord3d = cast(typeof(glTexCoord3d))load("glTexCoord3d");
385 	glTexCoord3dv = cast(typeof(glTexCoord3dv))load("glTexCoord3dv");
386 	glTexCoord3f = cast(typeof(glTexCoord3f))load("glTexCoord3f");
387 	glTexCoord3fv = cast(typeof(glTexCoord3fv))load("glTexCoord3fv");
388 	glTexCoord3i = cast(typeof(glTexCoord3i))load("glTexCoord3i");
389 	glTexCoord3iv = cast(typeof(glTexCoord3iv))load("glTexCoord3iv");
390 	glTexCoord3s = cast(typeof(glTexCoord3s))load("glTexCoord3s");
391 	glTexCoord3sv = cast(typeof(glTexCoord3sv))load("glTexCoord3sv");
392 	glTexCoord4d = cast(typeof(glTexCoord4d))load("glTexCoord4d");
393 	glTexCoord4dv = cast(typeof(glTexCoord4dv))load("glTexCoord4dv");
394 	glTexCoord4f = cast(typeof(glTexCoord4f))load("glTexCoord4f");
395 	glTexCoord4fv = cast(typeof(glTexCoord4fv))load("glTexCoord4fv");
396 	glTexCoord4i = cast(typeof(glTexCoord4i))load("glTexCoord4i");
397 	glTexCoord4iv = cast(typeof(glTexCoord4iv))load("glTexCoord4iv");
398 	glTexCoord4s = cast(typeof(glTexCoord4s))load("glTexCoord4s");
399 	glTexCoord4sv = cast(typeof(glTexCoord4sv))load("glTexCoord4sv");
400 	glVertex2d = cast(typeof(glVertex2d))load("glVertex2d");
401 	glVertex2dv = cast(typeof(glVertex2dv))load("glVertex2dv");
402 	glVertex2f = cast(typeof(glVertex2f))load("glVertex2f");
403 	glVertex2fv = cast(typeof(glVertex2fv))load("glVertex2fv");
404 	glVertex2i = cast(typeof(glVertex2i))load("glVertex2i");
405 	glVertex2iv = cast(typeof(glVertex2iv))load("glVertex2iv");
406 	glVertex2s = cast(typeof(glVertex2s))load("glVertex2s");
407 	glVertex2sv = cast(typeof(glVertex2sv))load("glVertex2sv");
408 	glVertex3d = cast(typeof(glVertex3d))load("glVertex3d");
409 	glVertex3dv = cast(typeof(glVertex3dv))load("glVertex3dv");
410 	glVertex3f = cast(typeof(glVertex3f))load("glVertex3f");
411 	glVertex3fv = cast(typeof(glVertex3fv))load("glVertex3fv");
412 	glVertex3i = cast(typeof(glVertex3i))load("glVertex3i");
413 	glVertex3iv = cast(typeof(glVertex3iv))load("glVertex3iv");
414 	glVertex3s = cast(typeof(glVertex3s))load("glVertex3s");
415 	glVertex3sv = cast(typeof(glVertex3sv))load("glVertex3sv");
416 	glVertex4d = cast(typeof(glVertex4d))load("glVertex4d");
417 	glVertex4dv = cast(typeof(glVertex4dv))load("glVertex4dv");
418 	glVertex4f = cast(typeof(glVertex4f))load("glVertex4f");
419 	glVertex4fv = cast(typeof(glVertex4fv))load("glVertex4fv");
420 	glVertex4i = cast(typeof(glVertex4i))load("glVertex4i");
421 	glVertex4iv = cast(typeof(glVertex4iv))load("glVertex4iv");
422 	glVertex4s = cast(typeof(glVertex4s))load("glVertex4s");
423 	glVertex4sv = cast(typeof(glVertex4sv))load("glVertex4sv");
424 	glClipPlane = cast(typeof(glClipPlane))load("glClipPlane");
425 	glColorMaterial = cast(typeof(glColorMaterial))load("glColorMaterial");
426 	glFogf = cast(typeof(glFogf))load("glFogf");
427 	glFogfv = cast(typeof(glFogfv))load("glFogfv");
428 	glFogi = cast(typeof(glFogi))load("glFogi");
429 	glFogiv = cast(typeof(glFogiv))load("glFogiv");
430 	glLightf = cast(typeof(glLightf))load("glLightf");
431 	glLightfv = cast(typeof(glLightfv))load("glLightfv");
432 	glLighti = cast(typeof(glLighti))load("glLighti");
433 	glLightiv = cast(typeof(glLightiv))load("glLightiv");
434 	glLightModelf = cast(typeof(glLightModelf))load("glLightModelf");
435 	glLightModelfv = cast(typeof(glLightModelfv))load("glLightModelfv");
436 	glLightModeli = cast(typeof(glLightModeli))load("glLightModeli");
437 	glLightModeliv = cast(typeof(glLightModeliv))load("glLightModeliv");
438 	glLineStipple = cast(typeof(glLineStipple))load("glLineStipple");
439 	glMaterialf = cast(typeof(glMaterialf))load("glMaterialf");
440 	glMaterialfv = cast(typeof(glMaterialfv))load("glMaterialfv");
441 	glMateriali = cast(typeof(glMateriali))load("glMateriali");
442 	glMaterialiv = cast(typeof(glMaterialiv))load("glMaterialiv");
443 	glPolygonStipple = cast(typeof(glPolygonStipple))load("glPolygonStipple");
444 	glShadeModel = cast(typeof(glShadeModel))load("glShadeModel");
445 	glTexEnvf = cast(typeof(glTexEnvf))load("glTexEnvf");
446 	glTexEnvfv = cast(typeof(glTexEnvfv))load("glTexEnvfv");
447 	glTexEnvi = cast(typeof(glTexEnvi))load("glTexEnvi");
448 	glTexEnviv = cast(typeof(glTexEnviv))load("glTexEnviv");
449 	glTexGend = cast(typeof(glTexGend))load("glTexGend");
450 	glTexGendv = cast(typeof(glTexGendv))load("glTexGendv");
451 	glTexGenf = cast(typeof(glTexGenf))load("glTexGenf");
452 	glTexGenfv = cast(typeof(glTexGenfv))load("glTexGenfv");
453 	glTexGeni = cast(typeof(glTexGeni))load("glTexGeni");
454 	glTexGeniv = cast(typeof(glTexGeniv))load("glTexGeniv");
455 	glFeedbackBuffer = cast(typeof(glFeedbackBuffer))load("glFeedbackBuffer");
456 	glSelectBuffer = cast(typeof(glSelectBuffer))load("glSelectBuffer");
457 	glRenderMode = cast(typeof(glRenderMode))load("glRenderMode");
458 	glInitNames = cast(typeof(glInitNames))load("glInitNames");
459 	glLoadName = cast(typeof(glLoadName))load("glLoadName");
460 	glPassThrough = cast(typeof(glPassThrough))load("glPassThrough");
461 	glPopName = cast(typeof(glPopName))load("glPopName");
462 	glPushName = cast(typeof(glPushName))load("glPushName");
463 	glClearAccum = cast(typeof(glClearAccum))load("glClearAccum");
464 	glClearIndex = cast(typeof(glClearIndex))load("glClearIndex");
465 	glIndexMask = cast(typeof(glIndexMask))load("glIndexMask");
466 	glAccum = cast(typeof(glAccum))load("glAccum");
467 	glPopAttrib = cast(typeof(glPopAttrib))load("glPopAttrib");
468 	glPushAttrib = cast(typeof(glPushAttrib))load("glPushAttrib");
469 	glMap1d = cast(typeof(glMap1d))load("glMap1d");
470 	glMap1f = cast(typeof(glMap1f))load("glMap1f");
471 	glMap2d = cast(typeof(glMap2d))load("glMap2d");
472 	glMap2f = cast(typeof(glMap2f))load("glMap2f");
473 	glMapGrid1d = cast(typeof(glMapGrid1d))load("glMapGrid1d");
474 	glMapGrid1f = cast(typeof(glMapGrid1f))load("glMapGrid1f");
475 	glMapGrid2d = cast(typeof(glMapGrid2d))load("glMapGrid2d");
476 	glMapGrid2f = cast(typeof(glMapGrid2f))load("glMapGrid2f");
477 	glEvalCoord1d = cast(typeof(glEvalCoord1d))load("glEvalCoord1d");
478 	glEvalCoord1dv = cast(typeof(glEvalCoord1dv))load("glEvalCoord1dv");
479 	glEvalCoord1f = cast(typeof(glEvalCoord1f))load("glEvalCoord1f");
480 	glEvalCoord1fv = cast(typeof(glEvalCoord1fv))load("glEvalCoord1fv");
481 	glEvalCoord2d = cast(typeof(glEvalCoord2d))load("glEvalCoord2d");
482 	glEvalCoord2dv = cast(typeof(glEvalCoord2dv))load("glEvalCoord2dv");
483 	glEvalCoord2f = cast(typeof(glEvalCoord2f))load("glEvalCoord2f");
484 	glEvalCoord2fv = cast(typeof(glEvalCoord2fv))load("glEvalCoord2fv");
485 	glEvalMesh1 = cast(typeof(glEvalMesh1))load("glEvalMesh1");
486 	glEvalPoint1 = cast(typeof(glEvalPoint1))load("glEvalPoint1");
487 	glEvalMesh2 = cast(typeof(glEvalMesh2))load("glEvalMesh2");
488 	glEvalPoint2 = cast(typeof(glEvalPoint2))load("glEvalPoint2");
489 	glAlphaFunc = cast(typeof(glAlphaFunc))load("glAlphaFunc");
490 	glPixelZoom = cast(typeof(glPixelZoom))load("glPixelZoom");
491 	glPixelTransferf = cast(typeof(glPixelTransferf))load("glPixelTransferf");
492 	glPixelTransferi = cast(typeof(glPixelTransferi))load("glPixelTransferi");
493 	glPixelMapfv = cast(typeof(glPixelMapfv))load("glPixelMapfv");
494 	glPixelMapuiv = cast(typeof(glPixelMapuiv))load("glPixelMapuiv");
495 	glPixelMapusv = cast(typeof(glPixelMapusv))load("glPixelMapusv");
496 	glCopyPixels = cast(typeof(glCopyPixels))load("glCopyPixels");
497 	glDrawPixels = cast(typeof(glDrawPixels))load("glDrawPixels");
498 	glGetClipPlane = cast(typeof(glGetClipPlane))load("glGetClipPlane");
499 	glGetLightfv = cast(typeof(glGetLightfv))load("glGetLightfv");
500 	glGetLightiv = cast(typeof(glGetLightiv))load("glGetLightiv");
501 	glGetMapdv = cast(typeof(glGetMapdv))load("glGetMapdv");
502 	glGetMapfv = cast(typeof(glGetMapfv))load("glGetMapfv");
503 	glGetMapiv = cast(typeof(glGetMapiv))load("glGetMapiv");
504 	glGetMaterialfv = cast(typeof(glGetMaterialfv))load("glGetMaterialfv");
505 	glGetMaterialiv = cast(typeof(glGetMaterialiv))load("glGetMaterialiv");
506 	glGetPixelMapfv = cast(typeof(glGetPixelMapfv))load("glGetPixelMapfv");
507 	glGetPixelMapuiv = cast(typeof(glGetPixelMapuiv))load("glGetPixelMapuiv");
508 	glGetPixelMapusv = cast(typeof(glGetPixelMapusv))load("glGetPixelMapusv");
509 	glGetPolygonStipple = cast(typeof(glGetPolygonStipple))load("glGetPolygonStipple");
510 	glGetTexEnvfv = cast(typeof(glGetTexEnvfv))load("glGetTexEnvfv");
511 	glGetTexEnviv = cast(typeof(glGetTexEnviv))load("glGetTexEnviv");
512 	glGetTexGendv = cast(typeof(glGetTexGendv))load("glGetTexGendv");
513 	glGetTexGenfv = cast(typeof(glGetTexGenfv))load("glGetTexGenfv");
514 	glGetTexGeniv = cast(typeof(glGetTexGeniv))load("glGetTexGeniv");
515 	glIsList = cast(typeof(glIsList))load("glIsList");
516 	glFrustum = cast(typeof(glFrustum))load("glFrustum");
517 	glLoadIdentity = cast(typeof(glLoadIdentity))load("glLoadIdentity");
518 	glLoadMatrixf = cast(typeof(glLoadMatrixf))load("glLoadMatrixf");
519 	glLoadMatrixd = cast(typeof(glLoadMatrixd))load("glLoadMatrixd");
520 	glMatrixMode = cast(typeof(glMatrixMode))load("glMatrixMode");
521 	glMultMatrixf = cast(typeof(glMultMatrixf))load("glMultMatrixf");
522 	glMultMatrixd = cast(typeof(glMultMatrixd))load("glMultMatrixd");
523 	glOrtho = cast(typeof(glOrtho))load("glOrtho");
524 	glPopMatrix = cast(typeof(glPopMatrix))load("glPopMatrix");
525 	glPushMatrix = cast(typeof(glPushMatrix))load("glPushMatrix");
526 	glRotated = cast(typeof(glRotated))load("glRotated");
527 	glRotatef = cast(typeof(glRotatef))load("glRotatef");
528 	glScaled = cast(typeof(glScaled))load("glScaled");
529 	glScalef = cast(typeof(glScalef))load("glScalef");
530 	glTranslated = cast(typeof(glTranslated))load("glTranslated");
531 	glTranslatef = cast(typeof(glTranslatef))load("glTranslatef");
532 	return;
533 }
534 
535 void load_GL_VERSION_1_1(Loader load) {
536 	if(!GL_VERSION_1_1) return;
537 	glDrawArrays = cast(typeof(glDrawArrays))load("glDrawArrays");
538 	glDrawElements = cast(typeof(glDrawElements))load("glDrawElements");
539 	glGetPointerv = cast(typeof(glGetPointerv))load("glGetPointerv");
540 	glPolygonOffset = cast(typeof(glPolygonOffset))load("glPolygonOffset");
541 	glCopyTexImage1D = cast(typeof(glCopyTexImage1D))load("glCopyTexImage1D");
542 	glCopyTexImage2D = cast(typeof(glCopyTexImage2D))load("glCopyTexImage2D");
543 	glCopyTexSubImage1D = cast(typeof(glCopyTexSubImage1D))load("glCopyTexSubImage1D");
544 	glCopyTexSubImage2D = cast(typeof(glCopyTexSubImage2D))load("glCopyTexSubImage2D");
545 	glTexSubImage1D = cast(typeof(glTexSubImage1D))load("glTexSubImage1D");
546 	glTexSubImage2D = cast(typeof(glTexSubImage2D))load("glTexSubImage2D");
547 	glBindTexture = cast(typeof(glBindTexture))load("glBindTexture");
548 	glDeleteTextures = cast(typeof(glDeleteTextures))load("glDeleteTextures");
549 	glGenTextures = cast(typeof(glGenTextures))load("glGenTextures");
550 	glIsTexture = cast(typeof(glIsTexture))load("glIsTexture");
551 	glArrayElement = cast(typeof(glArrayElement))load("glArrayElement");
552 	glColorPointer = cast(typeof(glColorPointer))load("glColorPointer");
553 	glDisableClientState = cast(typeof(glDisableClientState))load("glDisableClientState");
554 	glEdgeFlagPointer = cast(typeof(glEdgeFlagPointer))load("glEdgeFlagPointer");
555 	glEnableClientState = cast(typeof(glEnableClientState))load("glEnableClientState");
556 	glIndexPointer = cast(typeof(glIndexPointer))load("glIndexPointer");
557 	glInterleavedArrays = cast(typeof(glInterleavedArrays))load("glInterleavedArrays");
558 	glNormalPointer = cast(typeof(glNormalPointer))load("glNormalPointer");
559 	glTexCoordPointer = cast(typeof(glTexCoordPointer))load("glTexCoordPointer");
560 	glVertexPointer = cast(typeof(glVertexPointer))load("glVertexPointer");
561 	glAreTexturesResident = cast(typeof(glAreTexturesResident))load("glAreTexturesResident");
562 	glPrioritizeTextures = cast(typeof(glPrioritizeTextures))load("glPrioritizeTextures");
563 	glIndexub = cast(typeof(glIndexub))load("glIndexub");
564 	glIndexubv = cast(typeof(glIndexubv))load("glIndexubv");
565 	glPopClientAttrib = cast(typeof(glPopClientAttrib))load("glPopClientAttrib");
566 	glPushClientAttrib = cast(typeof(glPushClientAttrib))load("glPushClientAttrib");
567 	return;
568 }
569 
570 void load_GL_VERSION_1_2(Loader load) {
571 	if(!GL_VERSION_1_2) return;
572 	glDrawRangeElements = cast(typeof(glDrawRangeElements))load("glDrawRangeElements");
573 	glTexImage3D = cast(typeof(glTexImage3D))load("glTexImage3D");
574 	glTexSubImage3D = cast(typeof(glTexSubImage3D))load("glTexSubImage3D");
575 	glCopyTexSubImage3D = cast(typeof(glCopyTexSubImage3D))load("glCopyTexSubImage3D");
576 	return;
577 }
578 
579 void load_GL_VERSION_1_3(Loader load) {
580 	if(!GL_VERSION_1_3) return;
581 	glActiveTexture = cast(typeof(glActiveTexture))load("glActiveTexture");
582 	glSampleCoverage = cast(typeof(glSampleCoverage))load("glSampleCoverage");
583 	glCompressedTexImage3D = cast(typeof(glCompressedTexImage3D))load("glCompressedTexImage3D");
584 	glCompressedTexImage2D = cast(typeof(glCompressedTexImage2D))load("glCompressedTexImage2D");
585 	glCompressedTexImage1D = cast(typeof(glCompressedTexImage1D))load("glCompressedTexImage1D");
586 	glCompressedTexSubImage3D = cast(typeof(glCompressedTexSubImage3D))load("glCompressedTexSubImage3D");
587 	glCompressedTexSubImage2D = cast(typeof(glCompressedTexSubImage2D))load("glCompressedTexSubImage2D");
588 	glCompressedTexSubImage1D = cast(typeof(glCompressedTexSubImage1D))load("glCompressedTexSubImage1D");
589 	glGetCompressedTexImage = cast(typeof(glGetCompressedTexImage))load("glGetCompressedTexImage");
590 	glClientActiveTexture = cast(typeof(glClientActiveTexture))load("glClientActiveTexture");
591 	glMultiTexCoord1d = cast(typeof(glMultiTexCoord1d))load("glMultiTexCoord1d");
592 	glMultiTexCoord1dv = cast(typeof(glMultiTexCoord1dv))load("glMultiTexCoord1dv");
593 	glMultiTexCoord1f = cast(typeof(glMultiTexCoord1f))load("glMultiTexCoord1f");
594 	glMultiTexCoord1fv = cast(typeof(glMultiTexCoord1fv))load("glMultiTexCoord1fv");
595 	glMultiTexCoord1i = cast(typeof(glMultiTexCoord1i))load("glMultiTexCoord1i");
596 	glMultiTexCoord1iv = cast(typeof(glMultiTexCoord1iv))load("glMultiTexCoord1iv");
597 	glMultiTexCoord1s = cast(typeof(glMultiTexCoord1s))load("glMultiTexCoord1s");
598 	glMultiTexCoord1sv = cast(typeof(glMultiTexCoord1sv))load("glMultiTexCoord1sv");
599 	glMultiTexCoord2d = cast(typeof(glMultiTexCoord2d))load("glMultiTexCoord2d");
600 	glMultiTexCoord2dv = cast(typeof(glMultiTexCoord2dv))load("glMultiTexCoord2dv");
601 	glMultiTexCoord2f = cast(typeof(glMultiTexCoord2f))load("glMultiTexCoord2f");
602 	glMultiTexCoord2fv = cast(typeof(glMultiTexCoord2fv))load("glMultiTexCoord2fv");
603 	glMultiTexCoord2i = cast(typeof(glMultiTexCoord2i))load("glMultiTexCoord2i");
604 	glMultiTexCoord2iv = cast(typeof(glMultiTexCoord2iv))load("glMultiTexCoord2iv");
605 	glMultiTexCoord2s = cast(typeof(glMultiTexCoord2s))load("glMultiTexCoord2s");
606 	glMultiTexCoord2sv = cast(typeof(glMultiTexCoord2sv))load("glMultiTexCoord2sv");
607 	glMultiTexCoord3d = cast(typeof(glMultiTexCoord3d))load("glMultiTexCoord3d");
608 	glMultiTexCoord3dv = cast(typeof(glMultiTexCoord3dv))load("glMultiTexCoord3dv");
609 	glMultiTexCoord3f = cast(typeof(glMultiTexCoord3f))load("glMultiTexCoord3f");
610 	glMultiTexCoord3fv = cast(typeof(glMultiTexCoord3fv))load("glMultiTexCoord3fv");
611 	glMultiTexCoord3i = cast(typeof(glMultiTexCoord3i))load("glMultiTexCoord3i");
612 	glMultiTexCoord3iv = cast(typeof(glMultiTexCoord3iv))load("glMultiTexCoord3iv");
613 	glMultiTexCoord3s = cast(typeof(glMultiTexCoord3s))load("glMultiTexCoord3s");
614 	glMultiTexCoord3sv = cast(typeof(glMultiTexCoord3sv))load("glMultiTexCoord3sv");
615 	glMultiTexCoord4d = cast(typeof(glMultiTexCoord4d))load("glMultiTexCoord4d");
616 	glMultiTexCoord4dv = cast(typeof(glMultiTexCoord4dv))load("glMultiTexCoord4dv");
617 	glMultiTexCoord4f = cast(typeof(glMultiTexCoord4f))load("glMultiTexCoord4f");
618 	glMultiTexCoord4fv = cast(typeof(glMultiTexCoord4fv))load("glMultiTexCoord4fv");
619 	glMultiTexCoord4i = cast(typeof(glMultiTexCoord4i))load("glMultiTexCoord4i");
620 	glMultiTexCoord4iv = cast(typeof(glMultiTexCoord4iv))load("glMultiTexCoord4iv");
621 	glMultiTexCoord4s = cast(typeof(glMultiTexCoord4s))load("glMultiTexCoord4s");
622 	glMultiTexCoord4sv = cast(typeof(glMultiTexCoord4sv))load("glMultiTexCoord4sv");
623 	glLoadTransposeMatrixf = cast(typeof(glLoadTransposeMatrixf))load("glLoadTransposeMatrixf");
624 	glLoadTransposeMatrixd = cast(typeof(glLoadTransposeMatrixd))load("glLoadTransposeMatrixd");
625 	glMultTransposeMatrixf = cast(typeof(glMultTransposeMatrixf))load("glMultTransposeMatrixf");
626 	glMultTransposeMatrixd = cast(typeof(glMultTransposeMatrixd))load("glMultTransposeMatrixd");
627 	return;
628 }
629 
630 void load_GL_VERSION_1_4(Loader load) {
631 	if(!GL_VERSION_1_4) return;
632 	glBlendFuncSeparate = cast(typeof(glBlendFuncSeparate))load("glBlendFuncSeparate");
633 	glMultiDrawArrays = cast(typeof(glMultiDrawArrays))load("glMultiDrawArrays");
634 	glMultiDrawElements = cast(typeof(glMultiDrawElements))load("glMultiDrawElements");
635 	glPointParameterf = cast(typeof(glPointParameterf))load("glPointParameterf");
636 	glPointParameterfv = cast(typeof(glPointParameterfv))load("glPointParameterfv");
637 	glPointParameteri = cast(typeof(glPointParameteri))load("glPointParameteri");
638 	glPointParameteriv = cast(typeof(glPointParameteriv))load("glPointParameteriv");
639 	glFogCoordf = cast(typeof(glFogCoordf))load("glFogCoordf");
640 	glFogCoordfv = cast(typeof(glFogCoordfv))load("glFogCoordfv");
641 	glFogCoordd = cast(typeof(glFogCoordd))load("glFogCoordd");
642 	glFogCoorddv = cast(typeof(glFogCoorddv))load("glFogCoorddv");
643 	glFogCoordPointer = cast(typeof(glFogCoordPointer))load("glFogCoordPointer");
644 	glSecondaryColor3b = cast(typeof(glSecondaryColor3b))load("glSecondaryColor3b");
645 	glSecondaryColor3bv = cast(typeof(glSecondaryColor3bv))load("glSecondaryColor3bv");
646 	glSecondaryColor3d = cast(typeof(glSecondaryColor3d))load("glSecondaryColor3d");
647 	glSecondaryColor3dv = cast(typeof(glSecondaryColor3dv))load("glSecondaryColor3dv");
648 	glSecondaryColor3f = cast(typeof(glSecondaryColor3f))load("glSecondaryColor3f");
649 	glSecondaryColor3fv = cast(typeof(glSecondaryColor3fv))load("glSecondaryColor3fv");
650 	glSecondaryColor3i = cast(typeof(glSecondaryColor3i))load("glSecondaryColor3i");
651 	glSecondaryColor3iv = cast(typeof(glSecondaryColor3iv))load("glSecondaryColor3iv");
652 	glSecondaryColor3s = cast(typeof(glSecondaryColor3s))load("glSecondaryColor3s");
653 	glSecondaryColor3sv = cast(typeof(glSecondaryColor3sv))load("glSecondaryColor3sv");
654 	glSecondaryColor3ub = cast(typeof(glSecondaryColor3ub))load("glSecondaryColor3ub");
655 	glSecondaryColor3ubv = cast(typeof(glSecondaryColor3ubv))load("glSecondaryColor3ubv");
656 	glSecondaryColor3ui = cast(typeof(glSecondaryColor3ui))load("glSecondaryColor3ui");
657 	glSecondaryColor3uiv = cast(typeof(glSecondaryColor3uiv))load("glSecondaryColor3uiv");
658 	glSecondaryColor3us = cast(typeof(glSecondaryColor3us))load("glSecondaryColor3us");
659 	glSecondaryColor3usv = cast(typeof(glSecondaryColor3usv))load("glSecondaryColor3usv");
660 	glSecondaryColorPointer = cast(typeof(glSecondaryColorPointer))load("glSecondaryColorPointer");
661 	glWindowPos2d = cast(typeof(glWindowPos2d))load("glWindowPos2d");
662 	glWindowPos2dv = cast(typeof(glWindowPos2dv))load("glWindowPos2dv");
663 	glWindowPos2f = cast(typeof(glWindowPos2f))load("glWindowPos2f");
664 	glWindowPos2fv = cast(typeof(glWindowPos2fv))load("glWindowPos2fv");
665 	glWindowPos2i = cast(typeof(glWindowPos2i))load("glWindowPos2i");
666 	glWindowPos2iv = cast(typeof(glWindowPos2iv))load("glWindowPos2iv");
667 	glWindowPos2s = cast(typeof(glWindowPos2s))load("glWindowPos2s");
668 	glWindowPos2sv = cast(typeof(glWindowPos2sv))load("glWindowPos2sv");
669 	glWindowPos3d = cast(typeof(glWindowPos3d))load("glWindowPos3d");
670 	glWindowPos3dv = cast(typeof(glWindowPos3dv))load("glWindowPos3dv");
671 	glWindowPos3f = cast(typeof(glWindowPos3f))load("glWindowPos3f");
672 	glWindowPos3fv = cast(typeof(glWindowPos3fv))load("glWindowPos3fv");
673 	glWindowPos3i = cast(typeof(glWindowPos3i))load("glWindowPos3i");
674 	glWindowPos3iv = cast(typeof(glWindowPos3iv))load("glWindowPos3iv");
675 	glWindowPos3s = cast(typeof(glWindowPos3s))load("glWindowPos3s");
676 	glWindowPos3sv = cast(typeof(glWindowPos3sv))load("glWindowPos3sv");
677 	glBlendColor = cast(typeof(glBlendColor))load("glBlendColor");
678 	glBlendEquation = cast(typeof(glBlendEquation))load("glBlendEquation");
679 	return;
680 }
681 
682 void load_GL_VERSION_1_5(Loader load) {
683 	if(!GL_VERSION_1_5) return;
684 	glGenQueries = cast(typeof(glGenQueries))load("glGenQueries");
685 	glDeleteQueries = cast(typeof(glDeleteQueries))load("glDeleteQueries");
686 	glIsQuery = cast(typeof(glIsQuery))load("glIsQuery");
687 	glBeginQuery = cast(typeof(glBeginQuery))load("glBeginQuery");
688 	glEndQuery = cast(typeof(glEndQuery))load("glEndQuery");
689 	glGetQueryiv = cast(typeof(glGetQueryiv))load("glGetQueryiv");
690 	glGetQueryObjectiv = cast(typeof(glGetQueryObjectiv))load("glGetQueryObjectiv");
691 	glGetQueryObjectuiv = cast(typeof(glGetQueryObjectuiv))load("glGetQueryObjectuiv");
692 	glBindBuffer = cast(typeof(glBindBuffer))load("glBindBuffer");
693 	glDeleteBuffers = cast(typeof(glDeleteBuffers))load("glDeleteBuffers");
694 	glGenBuffers = cast(typeof(glGenBuffers))load("glGenBuffers");
695 	glIsBuffer = cast(typeof(glIsBuffer))load("glIsBuffer");
696 	glBufferData = cast(typeof(glBufferData))load("glBufferData");
697 	glBufferSubData = cast(typeof(glBufferSubData))load("glBufferSubData");
698 	glGetBufferSubData = cast(typeof(glGetBufferSubData))load("glGetBufferSubData");
699 	glMapBuffer = cast(typeof(glMapBuffer))load("glMapBuffer");
700 	glUnmapBuffer = cast(typeof(glUnmapBuffer))load("glUnmapBuffer");
701 	glGetBufferParameteriv = cast(typeof(glGetBufferParameteriv))load("glGetBufferParameteriv");
702 	glGetBufferPointerv = cast(typeof(glGetBufferPointerv))load("glGetBufferPointerv");
703 	return;
704 }
705 
706 void load_GL_VERSION_2_0(Loader load) {
707 	if(!GL_VERSION_2_0) return;
708 	glBlendEquationSeparate = cast(typeof(glBlendEquationSeparate))load("glBlendEquationSeparate");
709 	glDrawBuffers = cast(typeof(glDrawBuffers))load("glDrawBuffers");
710 	glStencilOpSeparate = cast(typeof(glStencilOpSeparate))load("glStencilOpSeparate");
711 	glStencilFuncSeparate = cast(typeof(glStencilFuncSeparate))load("glStencilFuncSeparate");
712 	glStencilMaskSeparate = cast(typeof(glStencilMaskSeparate))load("glStencilMaskSeparate");
713 	glAttachShader = cast(typeof(glAttachShader))load("glAttachShader");
714 	glBindAttribLocation = cast(typeof(glBindAttribLocation))load("glBindAttribLocation");
715 	glCompileShader = cast(typeof(glCompileShader))load("glCompileShader");
716 	glCreateProgram = cast(typeof(glCreateProgram))load("glCreateProgram");
717 	glCreateShader = cast(typeof(glCreateShader))load("glCreateShader");
718 	glDeleteProgram = cast(typeof(glDeleteProgram))load("glDeleteProgram");
719 	glDeleteShader = cast(typeof(glDeleteShader))load("glDeleteShader");
720 	glDetachShader = cast(typeof(glDetachShader))load("glDetachShader");
721 	glDisableVertexAttribArray = cast(typeof(glDisableVertexAttribArray))load("glDisableVertexAttribArray");
722 	glEnableVertexAttribArray = cast(typeof(glEnableVertexAttribArray))load("glEnableVertexAttribArray");
723 	glGetActiveAttrib = cast(typeof(glGetActiveAttrib))load("glGetActiveAttrib");
724 	glGetActiveUniform = cast(typeof(glGetActiveUniform))load("glGetActiveUniform");
725 	glGetAttachedShaders = cast(typeof(glGetAttachedShaders))load("glGetAttachedShaders");
726 	glGetAttribLocation = cast(typeof(glGetAttribLocation))load("glGetAttribLocation");
727 	glGetProgramiv = cast(typeof(glGetProgramiv))load("glGetProgramiv");
728 	glGetProgramInfoLog = cast(typeof(glGetProgramInfoLog))load("glGetProgramInfoLog");
729 	glGetShaderiv = cast(typeof(glGetShaderiv))load("glGetShaderiv");
730 	glGetShaderInfoLog = cast(typeof(glGetShaderInfoLog))load("glGetShaderInfoLog");
731 	glGetShaderSource = cast(typeof(glGetShaderSource))load("glGetShaderSource");
732 	glGetUniformLocation = cast(typeof(glGetUniformLocation))load("glGetUniformLocation");
733 	glGetUniformfv = cast(typeof(glGetUniformfv))load("glGetUniformfv");
734 	glGetUniformiv = cast(typeof(glGetUniformiv))load("glGetUniformiv");
735 	glGetVertexAttribdv = cast(typeof(glGetVertexAttribdv))load("glGetVertexAttribdv");
736 	glGetVertexAttribfv = cast(typeof(glGetVertexAttribfv))load("glGetVertexAttribfv");
737 	glGetVertexAttribiv = cast(typeof(glGetVertexAttribiv))load("glGetVertexAttribiv");
738 	glGetVertexAttribPointerv = cast(typeof(glGetVertexAttribPointerv))load("glGetVertexAttribPointerv");
739 	glIsProgram = cast(typeof(glIsProgram))load("glIsProgram");
740 	glIsShader = cast(typeof(glIsShader))load("glIsShader");
741 	glLinkProgram = cast(typeof(glLinkProgram))load("glLinkProgram");
742 	glShaderSource = cast(typeof(glShaderSource))load("glShaderSource");
743 	glUseProgram = cast(typeof(glUseProgram))load("glUseProgram");
744 	glUniform1f = cast(typeof(glUniform1f))load("glUniform1f");
745 	glUniform2f = cast(typeof(glUniform2f))load("glUniform2f");
746 	glUniform3f = cast(typeof(glUniform3f))load("glUniform3f");
747 	glUniform4f = cast(typeof(glUniform4f))load("glUniform4f");
748 	glUniform1i = cast(typeof(glUniform1i))load("glUniform1i");
749 	glUniform2i = cast(typeof(glUniform2i))load("glUniform2i");
750 	glUniform3i = cast(typeof(glUniform3i))load("glUniform3i");
751 	glUniform4i = cast(typeof(glUniform4i))load("glUniform4i");
752 	glUniform1fv = cast(typeof(glUniform1fv))load("glUniform1fv");
753 	glUniform2fv = cast(typeof(glUniform2fv))load("glUniform2fv");
754 	glUniform3fv = cast(typeof(glUniform3fv))load("glUniform3fv");
755 	glUniform4fv = cast(typeof(glUniform4fv))load("glUniform4fv");
756 	glUniform1iv = cast(typeof(glUniform1iv))load("glUniform1iv");
757 	glUniform2iv = cast(typeof(glUniform2iv))load("glUniform2iv");
758 	glUniform3iv = cast(typeof(glUniform3iv))load("glUniform3iv");
759 	glUniform4iv = cast(typeof(glUniform4iv))load("glUniform4iv");
760 	glUniformMatrix2fv = cast(typeof(glUniformMatrix2fv))load("glUniformMatrix2fv");
761 	glUniformMatrix3fv = cast(typeof(glUniformMatrix3fv))load("glUniformMatrix3fv");
762 	glUniformMatrix4fv = cast(typeof(glUniformMatrix4fv))load("glUniformMatrix4fv");
763 	glValidateProgram = cast(typeof(glValidateProgram))load("glValidateProgram");
764 	glVertexAttrib1d = cast(typeof(glVertexAttrib1d))load("glVertexAttrib1d");
765 	glVertexAttrib1dv = cast(typeof(glVertexAttrib1dv))load("glVertexAttrib1dv");
766 	glVertexAttrib1f = cast(typeof(glVertexAttrib1f))load("glVertexAttrib1f");
767 	glVertexAttrib1fv = cast(typeof(glVertexAttrib1fv))load("glVertexAttrib1fv");
768 	glVertexAttrib1s = cast(typeof(glVertexAttrib1s))load("glVertexAttrib1s");
769 	glVertexAttrib1sv = cast(typeof(glVertexAttrib1sv))load("glVertexAttrib1sv");
770 	glVertexAttrib2d = cast(typeof(glVertexAttrib2d))load("glVertexAttrib2d");
771 	glVertexAttrib2dv = cast(typeof(glVertexAttrib2dv))load("glVertexAttrib2dv");
772 	glVertexAttrib2f = cast(typeof(glVertexAttrib2f))load("glVertexAttrib2f");
773 	glVertexAttrib2fv = cast(typeof(glVertexAttrib2fv))load("glVertexAttrib2fv");
774 	glVertexAttrib2s = cast(typeof(glVertexAttrib2s))load("glVertexAttrib2s");
775 	glVertexAttrib2sv = cast(typeof(glVertexAttrib2sv))load("glVertexAttrib2sv");
776 	glVertexAttrib3d = cast(typeof(glVertexAttrib3d))load("glVertexAttrib3d");
777 	glVertexAttrib3dv = cast(typeof(glVertexAttrib3dv))load("glVertexAttrib3dv");
778 	glVertexAttrib3f = cast(typeof(glVertexAttrib3f))load("glVertexAttrib3f");
779 	glVertexAttrib3fv = cast(typeof(glVertexAttrib3fv))load("glVertexAttrib3fv");
780 	glVertexAttrib3s = cast(typeof(glVertexAttrib3s))load("glVertexAttrib3s");
781 	glVertexAttrib3sv = cast(typeof(glVertexAttrib3sv))load("glVertexAttrib3sv");
782 	glVertexAttrib4Nbv = cast(typeof(glVertexAttrib4Nbv))load("glVertexAttrib4Nbv");
783 	glVertexAttrib4Niv = cast(typeof(glVertexAttrib4Niv))load("glVertexAttrib4Niv");
784 	glVertexAttrib4Nsv = cast(typeof(glVertexAttrib4Nsv))load("glVertexAttrib4Nsv");
785 	glVertexAttrib4Nub = cast(typeof(glVertexAttrib4Nub))load("glVertexAttrib4Nub");
786 	glVertexAttrib4Nubv = cast(typeof(glVertexAttrib4Nubv))load("glVertexAttrib4Nubv");
787 	glVertexAttrib4Nuiv = cast(typeof(glVertexAttrib4Nuiv))load("glVertexAttrib4Nuiv");
788 	glVertexAttrib4Nusv = cast(typeof(glVertexAttrib4Nusv))load("glVertexAttrib4Nusv");
789 	glVertexAttrib4bv = cast(typeof(glVertexAttrib4bv))load("glVertexAttrib4bv");
790 	glVertexAttrib4d = cast(typeof(glVertexAttrib4d))load("glVertexAttrib4d");
791 	glVertexAttrib4dv = cast(typeof(glVertexAttrib4dv))load("glVertexAttrib4dv");
792 	glVertexAttrib4f = cast(typeof(glVertexAttrib4f))load("glVertexAttrib4f");
793 	glVertexAttrib4fv = cast(typeof(glVertexAttrib4fv))load("glVertexAttrib4fv");
794 	glVertexAttrib4iv = cast(typeof(glVertexAttrib4iv))load("glVertexAttrib4iv");
795 	glVertexAttrib4s = cast(typeof(glVertexAttrib4s))load("glVertexAttrib4s");
796 	glVertexAttrib4sv = cast(typeof(glVertexAttrib4sv))load("glVertexAttrib4sv");
797 	glVertexAttrib4ubv = cast(typeof(glVertexAttrib4ubv))load("glVertexAttrib4ubv");
798 	glVertexAttrib4uiv = cast(typeof(glVertexAttrib4uiv))load("glVertexAttrib4uiv");
799 	glVertexAttrib4usv = cast(typeof(glVertexAttrib4usv))load("glVertexAttrib4usv");
800 	glVertexAttribPointer = cast(typeof(glVertexAttribPointer))load("glVertexAttribPointer");
801 	return;
802 }
803 
804 void load_GL_VERSION_2_1(Loader load) {
805 	if(!GL_VERSION_2_1) return;
806 	glUniformMatrix2x3fv = cast(typeof(glUniformMatrix2x3fv))load("glUniformMatrix2x3fv");
807 	glUniformMatrix3x2fv = cast(typeof(glUniformMatrix3x2fv))load("glUniformMatrix3x2fv");
808 	glUniformMatrix2x4fv = cast(typeof(glUniformMatrix2x4fv))load("glUniformMatrix2x4fv");
809 	glUniformMatrix4x2fv = cast(typeof(glUniformMatrix4x2fv))load("glUniformMatrix4x2fv");
810 	glUniformMatrix3x4fv = cast(typeof(glUniformMatrix3x4fv))load("glUniformMatrix3x4fv");
811 	glUniformMatrix4x3fv = cast(typeof(glUniformMatrix4x3fv))load("glUniformMatrix4x3fv");
812 	return;
813 }
814 
815 void load_GL_VERSION_3_0(Loader load) {
816 	if(!GL_VERSION_3_0) return;
817 	glColorMaski = cast(typeof(glColorMaski))load("glColorMaski");
818 	glGetBooleani_v = cast(typeof(glGetBooleani_v))load("glGetBooleani_v");
819 	glGetIntegeri_v = cast(typeof(glGetIntegeri_v))load("glGetIntegeri_v");
820 	glEnablei = cast(typeof(glEnablei))load("glEnablei");
821 	glDisablei = cast(typeof(glDisablei))load("glDisablei");
822 	glIsEnabledi = cast(typeof(glIsEnabledi))load("glIsEnabledi");
823 	glBeginTransformFeedback = cast(typeof(glBeginTransformFeedback))load("glBeginTransformFeedback");
824 	glEndTransformFeedback = cast(typeof(glEndTransformFeedback))load("glEndTransformFeedback");
825 	glBindBufferRange = cast(typeof(glBindBufferRange))load("glBindBufferRange");
826 	glBindBufferBase = cast(typeof(glBindBufferBase))load("glBindBufferBase");
827 	glTransformFeedbackVaryings = cast(typeof(glTransformFeedbackVaryings))load("glTransformFeedbackVaryings");
828 	glGetTransformFeedbackVarying = cast(typeof(glGetTransformFeedbackVarying))load("glGetTransformFeedbackVarying");
829 	glClampColor = cast(typeof(glClampColor))load("glClampColor");
830 	glBeginConditionalRender = cast(typeof(glBeginConditionalRender))load("glBeginConditionalRender");
831 	glEndConditionalRender = cast(typeof(glEndConditionalRender))load("glEndConditionalRender");
832 	glVertexAttribIPointer = cast(typeof(glVertexAttribIPointer))load("glVertexAttribIPointer");
833 	glGetVertexAttribIiv = cast(typeof(glGetVertexAttribIiv))load("glGetVertexAttribIiv");
834 	glGetVertexAttribIuiv = cast(typeof(glGetVertexAttribIuiv))load("glGetVertexAttribIuiv");
835 	glVertexAttribI1i = cast(typeof(glVertexAttribI1i))load("glVertexAttribI1i");
836 	glVertexAttribI2i = cast(typeof(glVertexAttribI2i))load("glVertexAttribI2i");
837 	glVertexAttribI3i = cast(typeof(glVertexAttribI3i))load("glVertexAttribI3i");
838 	glVertexAttribI4i = cast(typeof(glVertexAttribI4i))load("glVertexAttribI4i");
839 	glVertexAttribI1ui = cast(typeof(glVertexAttribI1ui))load("glVertexAttribI1ui");
840 	glVertexAttribI2ui = cast(typeof(glVertexAttribI2ui))load("glVertexAttribI2ui");
841 	glVertexAttribI3ui = cast(typeof(glVertexAttribI3ui))load("glVertexAttribI3ui");
842 	glVertexAttribI4ui = cast(typeof(glVertexAttribI4ui))load("glVertexAttribI4ui");
843 	glVertexAttribI1iv = cast(typeof(glVertexAttribI1iv))load("glVertexAttribI1iv");
844 	glVertexAttribI2iv = cast(typeof(glVertexAttribI2iv))load("glVertexAttribI2iv");
845 	glVertexAttribI3iv = cast(typeof(glVertexAttribI3iv))load("glVertexAttribI3iv");
846 	glVertexAttribI4iv = cast(typeof(glVertexAttribI4iv))load("glVertexAttribI4iv");
847 	glVertexAttribI1uiv = cast(typeof(glVertexAttribI1uiv))load("glVertexAttribI1uiv");
848 	glVertexAttribI2uiv = cast(typeof(glVertexAttribI2uiv))load("glVertexAttribI2uiv");
849 	glVertexAttribI3uiv = cast(typeof(glVertexAttribI3uiv))load("glVertexAttribI3uiv");
850 	glVertexAttribI4uiv = cast(typeof(glVertexAttribI4uiv))load("glVertexAttribI4uiv");
851 	glVertexAttribI4bv = cast(typeof(glVertexAttribI4bv))load("glVertexAttribI4bv");
852 	glVertexAttribI4sv = cast(typeof(glVertexAttribI4sv))load("glVertexAttribI4sv");
853 	glVertexAttribI4ubv = cast(typeof(glVertexAttribI4ubv))load("glVertexAttribI4ubv");
854 	glVertexAttribI4usv = cast(typeof(glVertexAttribI4usv))load("glVertexAttribI4usv");
855 	glGetUniformuiv = cast(typeof(glGetUniformuiv))load("glGetUniformuiv");
856 	glBindFragDataLocation = cast(typeof(glBindFragDataLocation))load("glBindFragDataLocation");
857 	glGetFragDataLocation = cast(typeof(glGetFragDataLocation))load("glGetFragDataLocation");
858 	glUniform1ui = cast(typeof(glUniform1ui))load("glUniform1ui");
859 	glUniform2ui = cast(typeof(glUniform2ui))load("glUniform2ui");
860 	glUniform3ui = cast(typeof(glUniform3ui))load("glUniform3ui");
861 	glUniform4ui = cast(typeof(glUniform4ui))load("glUniform4ui");
862 	glUniform1uiv = cast(typeof(glUniform1uiv))load("glUniform1uiv");
863 	glUniform2uiv = cast(typeof(glUniform2uiv))load("glUniform2uiv");
864 	glUniform3uiv = cast(typeof(glUniform3uiv))load("glUniform3uiv");
865 	glUniform4uiv = cast(typeof(glUniform4uiv))load("glUniform4uiv");
866 	glTexParameterIiv = cast(typeof(glTexParameterIiv))load("glTexParameterIiv");
867 	glTexParameterIuiv = cast(typeof(glTexParameterIuiv))load("glTexParameterIuiv");
868 	glGetTexParameterIiv = cast(typeof(glGetTexParameterIiv))load("glGetTexParameterIiv");
869 	glGetTexParameterIuiv = cast(typeof(glGetTexParameterIuiv))load("glGetTexParameterIuiv");
870 	glClearBufferiv = cast(typeof(glClearBufferiv))load("glClearBufferiv");
871 	glClearBufferuiv = cast(typeof(glClearBufferuiv))load("glClearBufferuiv");
872 	glClearBufferfv = cast(typeof(glClearBufferfv))load("glClearBufferfv");
873 	glClearBufferfi = cast(typeof(glClearBufferfi))load("glClearBufferfi");
874 	glGetStringi = cast(typeof(glGetStringi))load("glGetStringi");
875 	glIsRenderbuffer = cast(typeof(glIsRenderbuffer))load("glIsRenderbuffer");
876 	glBindRenderbuffer = cast(typeof(glBindRenderbuffer))load("glBindRenderbuffer");
877 	glDeleteRenderbuffers = cast(typeof(glDeleteRenderbuffers))load("glDeleteRenderbuffers");
878 	glGenRenderbuffers = cast(typeof(glGenRenderbuffers))load("glGenRenderbuffers");
879 	glRenderbufferStorage = cast(typeof(glRenderbufferStorage))load("glRenderbufferStorage");
880 	glGetRenderbufferParameteriv = cast(typeof(glGetRenderbufferParameteriv))load("glGetRenderbufferParameteriv");
881 	glIsFramebuffer = cast(typeof(glIsFramebuffer))load("glIsFramebuffer");
882 	glBindFramebuffer = cast(typeof(glBindFramebuffer))load("glBindFramebuffer");
883 	glDeleteFramebuffers = cast(typeof(glDeleteFramebuffers))load("glDeleteFramebuffers");
884 	glGenFramebuffers = cast(typeof(glGenFramebuffers))load("glGenFramebuffers");
885 	glCheckFramebufferStatus = cast(typeof(glCheckFramebufferStatus))load("glCheckFramebufferStatus");
886 	glFramebufferTexture1D = cast(typeof(glFramebufferTexture1D))load("glFramebufferTexture1D");
887 	glFramebufferTexture2D = cast(typeof(glFramebufferTexture2D))load("glFramebufferTexture2D");
888 	glFramebufferTexture3D = cast(typeof(glFramebufferTexture3D))load("glFramebufferTexture3D");
889 	glFramebufferRenderbuffer = cast(typeof(glFramebufferRenderbuffer))load("glFramebufferRenderbuffer");
890 	glGetFramebufferAttachmentParameteriv = cast(typeof(glGetFramebufferAttachmentParameteriv))load("glGetFramebufferAttachmentParameteriv");
891 	glGenerateMipmap = cast(typeof(glGenerateMipmap))load("glGenerateMipmap");
892 	glBlitFramebuffer = cast(typeof(glBlitFramebuffer))load("glBlitFramebuffer");
893 	glRenderbufferStorageMultisample = cast(typeof(glRenderbufferStorageMultisample))load("glRenderbufferStorageMultisample");
894 	glFramebufferTextureLayer = cast(typeof(glFramebufferTextureLayer))load("glFramebufferTextureLayer");
895 	glMapBufferRange = cast(typeof(glMapBufferRange))load("glMapBufferRange");
896 	glFlushMappedBufferRange = cast(typeof(glFlushMappedBufferRange))load("glFlushMappedBufferRange");
897 	glBindVertexArray = cast(typeof(glBindVertexArray))load("glBindVertexArray");
898 	glDeleteVertexArrays = cast(typeof(glDeleteVertexArrays))load("glDeleteVertexArrays");
899 	glGenVertexArrays = cast(typeof(glGenVertexArrays))load("glGenVertexArrays");
900 	glIsVertexArray = cast(typeof(glIsVertexArray))load("glIsVertexArray");
901 	return;
902 }
903 
904 void load_GL_VERSION_3_1(Loader load) {
905 	if(!GL_VERSION_3_1) return;
906 	glDrawArraysInstanced = cast(typeof(glDrawArraysInstanced))load("glDrawArraysInstanced");
907 	glDrawElementsInstanced = cast(typeof(glDrawElementsInstanced))load("glDrawElementsInstanced");
908 	glTexBuffer = cast(typeof(glTexBuffer))load("glTexBuffer");
909 	glPrimitiveRestartIndex = cast(typeof(glPrimitiveRestartIndex))load("glPrimitiveRestartIndex");
910 	glCopyBufferSubData = cast(typeof(glCopyBufferSubData))load("glCopyBufferSubData");
911 	glGetUniformIndices = cast(typeof(glGetUniformIndices))load("glGetUniformIndices");
912 	glGetActiveUniformsiv = cast(typeof(glGetActiveUniformsiv))load("glGetActiveUniformsiv");
913 	glGetActiveUniformName = cast(typeof(glGetActiveUniformName))load("glGetActiveUniformName");
914 	glGetUniformBlockIndex = cast(typeof(glGetUniformBlockIndex))load("glGetUniformBlockIndex");
915 	glGetActiveUniformBlockiv = cast(typeof(glGetActiveUniformBlockiv))load("glGetActiveUniformBlockiv");
916 	glGetActiveUniformBlockName = cast(typeof(glGetActiveUniformBlockName))load("glGetActiveUniformBlockName");
917 	glUniformBlockBinding = cast(typeof(glUniformBlockBinding))load("glUniformBlockBinding");
918 	glBindBufferRange = cast(typeof(glBindBufferRange))load("glBindBufferRange");
919 	glBindBufferBase = cast(typeof(glBindBufferBase))load("glBindBufferBase");
920 	glGetIntegeri_v = cast(typeof(glGetIntegeri_v))load("glGetIntegeri_v");
921 	return;
922 }
923 
924 void load_GL_VERSION_3_2(Loader load) {
925 	if(!GL_VERSION_3_2) return;
926 	glDrawElementsBaseVertex = cast(typeof(glDrawElementsBaseVertex))load("glDrawElementsBaseVertex");
927 	glDrawRangeElementsBaseVertex = cast(typeof(glDrawRangeElementsBaseVertex))load("glDrawRangeElementsBaseVertex");
928 	glDrawElementsInstancedBaseVertex = cast(typeof(glDrawElementsInstancedBaseVertex))load("glDrawElementsInstancedBaseVertex");
929 	glMultiDrawElementsBaseVertex = cast(typeof(glMultiDrawElementsBaseVertex))load("glMultiDrawElementsBaseVertex");
930 	glProvokingVertex = cast(typeof(glProvokingVertex))load("glProvokingVertex");
931 	glFenceSync = cast(typeof(glFenceSync))load("glFenceSync");
932 	glIsSync = cast(typeof(glIsSync))load("glIsSync");
933 	glDeleteSync = cast(typeof(glDeleteSync))load("glDeleteSync");
934 	glClientWaitSync = cast(typeof(glClientWaitSync))load("glClientWaitSync");
935 	glWaitSync = cast(typeof(glWaitSync))load("glWaitSync");
936 	glGetInteger64v = cast(typeof(glGetInteger64v))load("glGetInteger64v");
937 	glGetSynciv = cast(typeof(glGetSynciv))load("glGetSynciv");
938 	glGetInteger64i_v = cast(typeof(glGetInteger64i_v))load("glGetInteger64i_v");
939 	glGetBufferParameteri64v = cast(typeof(glGetBufferParameteri64v))load("glGetBufferParameteri64v");
940 	glFramebufferTexture = cast(typeof(glFramebufferTexture))load("glFramebufferTexture");
941 	glTexImage2DMultisample = cast(typeof(glTexImage2DMultisample))load("glTexImage2DMultisample");
942 	glTexImage3DMultisample = cast(typeof(glTexImage3DMultisample))load("glTexImage3DMultisample");
943 	glGetMultisamplefv = cast(typeof(glGetMultisamplefv))load("glGetMultisamplefv");
944 	glSampleMaski = cast(typeof(glSampleMaski))load("glSampleMaski");
945 	return;
946 }
947 
948 void load_GL_VERSION_3_3(Loader load) {
949 	if(!GL_VERSION_3_3) return;
950 	glBindFragDataLocationIndexed = cast(typeof(glBindFragDataLocationIndexed))load("glBindFragDataLocationIndexed");
951 	glGetFragDataIndex = cast(typeof(glGetFragDataIndex))load("glGetFragDataIndex");
952 	glGenSamplers = cast(typeof(glGenSamplers))load("glGenSamplers");
953 	glDeleteSamplers = cast(typeof(glDeleteSamplers))load("glDeleteSamplers");
954 	glIsSampler = cast(typeof(glIsSampler))load("glIsSampler");
955 	glBindSampler = cast(typeof(glBindSampler))load("glBindSampler");
956 	glSamplerParameteri = cast(typeof(glSamplerParameteri))load("glSamplerParameteri");
957 	glSamplerParameteriv = cast(typeof(glSamplerParameteriv))load("glSamplerParameteriv");
958 	glSamplerParameterf = cast(typeof(glSamplerParameterf))load("glSamplerParameterf");
959 	glSamplerParameterfv = cast(typeof(glSamplerParameterfv))load("glSamplerParameterfv");
960 	glSamplerParameterIiv = cast(typeof(glSamplerParameterIiv))load("glSamplerParameterIiv");
961 	glSamplerParameterIuiv = cast(typeof(glSamplerParameterIuiv))load("glSamplerParameterIuiv");
962 	glGetSamplerParameteriv = cast(typeof(glGetSamplerParameteriv))load("glGetSamplerParameteriv");
963 	glGetSamplerParameterIiv = cast(typeof(glGetSamplerParameterIiv))load("glGetSamplerParameterIiv");
964 	glGetSamplerParameterfv = cast(typeof(glGetSamplerParameterfv))load("glGetSamplerParameterfv");
965 	glGetSamplerParameterIuiv = cast(typeof(glGetSamplerParameterIuiv))load("glGetSamplerParameterIuiv");
966 	glQueryCounter = cast(typeof(glQueryCounter))load("glQueryCounter");
967 	glGetQueryObjecti64v = cast(typeof(glGetQueryObjecti64v))load("glGetQueryObjecti64v");
968 	glGetQueryObjectui64v = cast(typeof(glGetQueryObjectui64v))load("glGetQueryObjectui64v");
969 	glVertexAttribDivisor = cast(typeof(glVertexAttribDivisor))load("glVertexAttribDivisor");
970 	glVertexAttribP1ui = cast(typeof(glVertexAttribP1ui))load("glVertexAttribP1ui");
971 	glVertexAttribP1uiv = cast(typeof(glVertexAttribP1uiv))load("glVertexAttribP1uiv");
972 	glVertexAttribP2ui = cast(typeof(glVertexAttribP2ui))load("glVertexAttribP2ui");
973 	glVertexAttribP2uiv = cast(typeof(glVertexAttribP2uiv))load("glVertexAttribP2uiv");
974 	glVertexAttribP3ui = cast(typeof(glVertexAttribP3ui))load("glVertexAttribP3ui");
975 	glVertexAttribP3uiv = cast(typeof(glVertexAttribP3uiv))load("glVertexAttribP3uiv");
976 	glVertexAttribP4ui = cast(typeof(glVertexAttribP4ui))load("glVertexAttribP4ui");
977 	glVertexAttribP4uiv = cast(typeof(glVertexAttribP4uiv))load("glVertexAttribP4uiv");
978 	glVertexP2ui = cast(typeof(glVertexP2ui))load("glVertexP2ui");
979 	glVertexP2uiv = cast(typeof(glVertexP2uiv))load("glVertexP2uiv");
980 	glVertexP3ui = cast(typeof(glVertexP3ui))load("glVertexP3ui");
981 	glVertexP3uiv = cast(typeof(glVertexP3uiv))load("glVertexP3uiv");
982 	glVertexP4ui = cast(typeof(glVertexP4ui))load("glVertexP4ui");
983 	glVertexP4uiv = cast(typeof(glVertexP4uiv))load("glVertexP4uiv");
984 	glTexCoordP1ui = cast(typeof(glTexCoordP1ui))load("glTexCoordP1ui");
985 	glTexCoordP1uiv = cast(typeof(glTexCoordP1uiv))load("glTexCoordP1uiv");
986 	glTexCoordP2ui = cast(typeof(glTexCoordP2ui))load("glTexCoordP2ui");
987 	glTexCoordP2uiv = cast(typeof(glTexCoordP2uiv))load("glTexCoordP2uiv");
988 	glTexCoordP3ui = cast(typeof(glTexCoordP3ui))load("glTexCoordP3ui");
989 	glTexCoordP3uiv = cast(typeof(glTexCoordP3uiv))load("glTexCoordP3uiv");
990 	glTexCoordP4ui = cast(typeof(glTexCoordP4ui))load("glTexCoordP4ui");
991 	glTexCoordP4uiv = cast(typeof(glTexCoordP4uiv))load("glTexCoordP4uiv");
992 	glMultiTexCoordP1ui = cast(typeof(glMultiTexCoordP1ui))load("glMultiTexCoordP1ui");
993 	glMultiTexCoordP1uiv = cast(typeof(glMultiTexCoordP1uiv))load("glMultiTexCoordP1uiv");
994 	glMultiTexCoordP2ui = cast(typeof(glMultiTexCoordP2ui))load("glMultiTexCoordP2ui");
995 	glMultiTexCoordP2uiv = cast(typeof(glMultiTexCoordP2uiv))load("glMultiTexCoordP2uiv");
996 	glMultiTexCoordP3ui = cast(typeof(glMultiTexCoordP3ui))load("glMultiTexCoordP3ui");
997 	glMultiTexCoordP3uiv = cast(typeof(glMultiTexCoordP3uiv))load("glMultiTexCoordP3uiv");
998 	glMultiTexCoordP4ui = cast(typeof(glMultiTexCoordP4ui))load("glMultiTexCoordP4ui");
999 	glMultiTexCoordP4uiv = cast(typeof(glMultiTexCoordP4uiv))load("glMultiTexCoordP4uiv");
1000 	glNormalP3ui = cast(typeof(glNormalP3ui))load("glNormalP3ui");
1001 	glNormalP3uiv = cast(typeof(glNormalP3uiv))load("glNormalP3uiv");
1002 	glColorP3ui = cast(typeof(glColorP3ui))load("glColorP3ui");
1003 	glColorP3uiv = cast(typeof(glColorP3uiv))load("glColorP3uiv");
1004 	glColorP4ui = cast(typeof(glColorP4ui))load("glColorP4ui");
1005 	glColorP4uiv = cast(typeof(glColorP4uiv))load("glColorP4uiv");
1006 	glSecondaryColorP3ui = cast(typeof(glSecondaryColorP3ui))load("glSecondaryColorP3ui");
1007 	glSecondaryColorP3uiv = cast(typeof(glSecondaryColorP3uiv))load("glSecondaryColorP3uiv");
1008 	return;
1009 }
1010 
1011 
1012 } /* private */
1013 
1014 bool gladLoadGLES2(Loader load) {
1015 	glGetString = cast(typeof(glGetString))load("glGetString");
1016 	if(glGetString is null) { return false; }
1017 	if(glGetString(GL_VERSION) is null) { return false; }
1018 
1019 	find_coreGLES2();
1020 	load_GL_ES_VERSION_2_0(load);
1021 	load_GL_ES_VERSION_3_0(load);
1022 
1023 	find_extensionsGLES2();
1024 	return GLVersion.major != 0 || GLVersion.minor != 0;
1025 }
1026 
1027 private {
1028 
1029 void find_coreGLES2() {
1030 
1031     // Thank you @elmindreda
1032     // https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176
1033     // https://github.com/glfw/glfw/blob/master/src/context.c#L36
1034     int i;
1035     const(char)* glversion;
1036     const(char)*[3] prefixes = [
1037         "OpenGL ES-CM ".ptr,
1038         "OpenGL ES-CL ".ptr,
1039         "OpenGL ES ".ptr,
1040     ];
1041 
1042     glversion = cast(const(char)*)glGetString(GL_VERSION);
1043     if (glversion is null) return;
1044 
1045     foreach(prefix; prefixes) {
1046         size_t length = strlen(prefix);
1047         if (strncmp(glversion, prefix, length) == 0) {
1048             glversion += length;
1049             break;
1050         }
1051     }
1052 
1053     int major = glversion[0] - '0';
1054     int minor = glversion[2] - '0';
1055     GLVersion.major = major; GLVersion.minor = minor;
1056 	GL_ES_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2;
1057 	GL_ES_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3;
1058 	return;
1059 }
1060 
1061 void find_extensionsGLES2() {
1062 	return;
1063 }
1064 
1065 void load_GL_ES_VERSION_2_0(Loader load) {
1066 	if(!GL_ES_VERSION_2_0) return;
1067 	glActiveTexture = cast(typeof(glActiveTexture))load("glActiveTexture");
1068 	glAttachShader = cast(typeof(glAttachShader))load("glAttachShader");
1069 	glBindAttribLocation = cast(typeof(glBindAttribLocation))load("glBindAttribLocation");
1070 	glBindBuffer = cast(typeof(glBindBuffer))load("glBindBuffer");
1071 	glBindFramebuffer = cast(typeof(glBindFramebuffer))load("glBindFramebuffer");
1072 	glBindRenderbuffer = cast(typeof(glBindRenderbuffer))load("glBindRenderbuffer");
1073 	glBindTexture = cast(typeof(glBindTexture))load("glBindTexture");
1074 	glBlendColor = cast(typeof(glBlendColor))load("glBlendColor");
1075 	glBlendEquation = cast(typeof(glBlendEquation))load("glBlendEquation");
1076 	glBlendEquationSeparate = cast(typeof(glBlendEquationSeparate))load("glBlendEquationSeparate");
1077 	glBlendFunc = cast(typeof(glBlendFunc))load("glBlendFunc");
1078 	glBlendFuncSeparate = cast(typeof(glBlendFuncSeparate))load("glBlendFuncSeparate");
1079 	glBufferData = cast(typeof(glBufferData))load("glBufferData");
1080 	glBufferSubData = cast(typeof(glBufferSubData))load("glBufferSubData");
1081 	glCheckFramebufferStatus = cast(typeof(glCheckFramebufferStatus))load("glCheckFramebufferStatus");
1082 	glClear = cast(typeof(glClear))load("glClear");
1083 	glClearColor = cast(typeof(glClearColor))load("glClearColor");
1084 	glClearDepthf = cast(typeof(glClearDepthf))load("glClearDepthf");
1085 	glClearStencil = cast(typeof(glClearStencil))load("glClearStencil");
1086 	glColorMask = cast(typeof(glColorMask))load("glColorMask");
1087 	glCompileShader = cast(typeof(glCompileShader))load("glCompileShader");
1088 	glCompressedTexImage2D = cast(typeof(glCompressedTexImage2D))load("glCompressedTexImage2D");
1089 	glCompressedTexSubImage2D = cast(typeof(glCompressedTexSubImage2D))load("glCompressedTexSubImage2D");
1090 	glCopyTexImage2D = cast(typeof(glCopyTexImage2D))load("glCopyTexImage2D");
1091 	glCopyTexSubImage2D = cast(typeof(glCopyTexSubImage2D))load("glCopyTexSubImage2D");
1092 	glCreateProgram = cast(typeof(glCreateProgram))load("glCreateProgram");
1093 	glCreateShader = cast(typeof(glCreateShader))load("glCreateShader");
1094 	glCullFace = cast(typeof(glCullFace))load("glCullFace");
1095 	glDeleteBuffers = cast(typeof(glDeleteBuffers))load("glDeleteBuffers");
1096 	glDeleteFramebuffers = cast(typeof(glDeleteFramebuffers))load("glDeleteFramebuffers");
1097 	glDeleteProgram = cast(typeof(glDeleteProgram))load("glDeleteProgram");
1098 	glDeleteRenderbuffers = cast(typeof(glDeleteRenderbuffers))load("glDeleteRenderbuffers");
1099 	glDeleteShader = cast(typeof(glDeleteShader))load("glDeleteShader");
1100 	glDeleteTextures = cast(typeof(glDeleteTextures))load("glDeleteTextures");
1101 	glDepthFunc = cast(typeof(glDepthFunc))load("glDepthFunc");
1102 	glDepthMask = cast(typeof(glDepthMask))load("glDepthMask");
1103 	glDepthRangef = cast(typeof(glDepthRangef))load("glDepthRangef");
1104 	glDetachShader = cast(typeof(glDetachShader))load("glDetachShader");
1105 	glDisable = cast(typeof(glDisable))load("glDisable");
1106 	glDisableVertexAttribArray = cast(typeof(glDisableVertexAttribArray))load("glDisableVertexAttribArray");
1107 	glDrawArrays = cast(typeof(glDrawArrays))load("glDrawArrays");
1108 	glDrawElements = cast(typeof(glDrawElements))load("glDrawElements");
1109 	glEnable = cast(typeof(glEnable))load("glEnable");
1110 	glEnableVertexAttribArray = cast(typeof(glEnableVertexAttribArray))load("glEnableVertexAttribArray");
1111 	glFinish = cast(typeof(glFinish))load("glFinish");
1112 	glFlush = cast(typeof(glFlush))load("glFlush");
1113 	glFramebufferRenderbuffer = cast(typeof(glFramebufferRenderbuffer))load("glFramebufferRenderbuffer");
1114 	glFramebufferTexture2D = cast(typeof(glFramebufferTexture2D))load("glFramebufferTexture2D");
1115 	glFrontFace = cast(typeof(glFrontFace))load("glFrontFace");
1116 	glGenBuffers = cast(typeof(glGenBuffers))load("glGenBuffers");
1117 	glGenerateMipmap = cast(typeof(glGenerateMipmap))load("glGenerateMipmap");
1118 	glGenFramebuffers = cast(typeof(glGenFramebuffers))load("glGenFramebuffers");
1119 	glGenRenderbuffers = cast(typeof(glGenRenderbuffers))load("glGenRenderbuffers");
1120 	glGenTextures = cast(typeof(glGenTextures))load("glGenTextures");
1121 	glGetActiveAttrib = cast(typeof(glGetActiveAttrib))load("glGetActiveAttrib");
1122 	glGetActiveUniform = cast(typeof(glGetActiveUniform))load("glGetActiveUniform");
1123 	glGetAttachedShaders = cast(typeof(glGetAttachedShaders))load("glGetAttachedShaders");
1124 	glGetAttribLocation = cast(typeof(glGetAttribLocation))load("glGetAttribLocation");
1125 	glGetBooleanv = cast(typeof(glGetBooleanv))load("glGetBooleanv");
1126 	glGetBufferParameteriv = cast(typeof(glGetBufferParameteriv))load("glGetBufferParameteriv");
1127 	glGetError = cast(typeof(glGetError))load("glGetError");
1128 	glGetFloatv = cast(typeof(glGetFloatv))load("glGetFloatv");
1129 	glGetFramebufferAttachmentParameteriv = cast(typeof(glGetFramebufferAttachmentParameteriv))load("glGetFramebufferAttachmentParameteriv");
1130 	glGetIntegerv = cast(typeof(glGetIntegerv))load("glGetIntegerv");
1131 	glGetProgramiv = cast(typeof(glGetProgramiv))load("glGetProgramiv");
1132 	glGetProgramInfoLog = cast(typeof(glGetProgramInfoLog))load("glGetProgramInfoLog");
1133 	glGetRenderbufferParameteriv = cast(typeof(glGetRenderbufferParameteriv))load("glGetRenderbufferParameteriv");
1134 	glGetShaderiv = cast(typeof(glGetShaderiv))load("glGetShaderiv");
1135 	glGetShaderInfoLog = cast(typeof(glGetShaderInfoLog))load("glGetShaderInfoLog");
1136 	glGetShaderPrecisionFormat = cast(typeof(glGetShaderPrecisionFormat))load("glGetShaderPrecisionFormat");
1137 	glGetShaderSource = cast(typeof(glGetShaderSource))load("glGetShaderSource");
1138 	glGetString = cast(typeof(glGetString))load("glGetString");
1139 	glGetTexParameterfv = cast(typeof(glGetTexParameterfv))load("glGetTexParameterfv");
1140 	glGetTexParameteriv = cast(typeof(glGetTexParameteriv))load("glGetTexParameteriv");
1141 	glGetUniformfv = cast(typeof(glGetUniformfv))load("glGetUniformfv");
1142 	glGetUniformiv = cast(typeof(glGetUniformiv))load("glGetUniformiv");
1143 	glGetUniformLocation = cast(typeof(glGetUniformLocation))load("glGetUniformLocation");
1144 	glGetVertexAttribfv = cast(typeof(glGetVertexAttribfv))load("glGetVertexAttribfv");
1145 	glGetVertexAttribiv = cast(typeof(glGetVertexAttribiv))load("glGetVertexAttribiv");
1146 	glGetVertexAttribPointerv = cast(typeof(glGetVertexAttribPointerv))load("glGetVertexAttribPointerv");
1147 	glHint = cast(typeof(glHint))load("glHint");
1148 	glIsBuffer = cast(typeof(glIsBuffer))load("glIsBuffer");
1149 	glIsEnabled = cast(typeof(glIsEnabled))load("glIsEnabled");
1150 	glIsFramebuffer = cast(typeof(glIsFramebuffer))load("glIsFramebuffer");
1151 	glIsProgram = cast(typeof(glIsProgram))load("glIsProgram");
1152 	glIsRenderbuffer = cast(typeof(glIsRenderbuffer))load("glIsRenderbuffer");
1153 	glIsShader = cast(typeof(glIsShader))load("glIsShader");
1154 	glIsTexture = cast(typeof(glIsTexture))load("glIsTexture");
1155 	glLineWidth = cast(typeof(glLineWidth))load("glLineWidth");
1156 	glLinkProgram = cast(typeof(glLinkProgram))load("glLinkProgram");
1157 	glPixelStorei = cast(typeof(glPixelStorei))load("glPixelStorei");
1158 	glPolygonOffset = cast(typeof(glPolygonOffset))load("glPolygonOffset");
1159 	glReadPixels = cast(typeof(glReadPixels))load("glReadPixels");
1160 	glReleaseShaderCompiler = cast(typeof(glReleaseShaderCompiler))load("glReleaseShaderCompiler");
1161 	glRenderbufferStorage = cast(typeof(glRenderbufferStorage))load("glRenderbufferStorage");
1162 	glSampleCoverage = cast(typeof(glSampleCoverage))load("glSampleCoverage");
1163 	glScissor = cast(typeof(glScissor))load("glScissor");
1164 	glShaderBinary = cast(typeof(glShaderBinary))load("glShaderBinary");
1165 	glShaderSource = cast(typeof(glShaderSource))load("glShaderSource");
1166 	glStencilFunc = cast(typeof(glStencilFunc))load("glStencilFunc");
1167 	glStencilFuncSeparate = cast(typeof(glStencilFuncSeparate))load("glStencilFuncSeparate");
1168 	glStencilMask = cast(typeof(glStencilMask))load("glStencilMask");
1169 	glStencilMaskSeparate = cast(typeof(glStencilMaskSeparate))load("glStencilMaskSeparate");
1170 	glStencilOp = cast(typeof(glStencilOp))load("glStencilOp");
1171 	glStencilOpSeparate = cast(typeof(glStencilOpSeparate))load("glStencilOpSeparate");
1172 	glTexImage2D = cast(typeof(glTexImage2D))load("glTexImage2D");
1173 	glTexParameterf = cast(typeof(glTexParameterf))load("glTexParameterf");
1174 	glTexParameterfv = cast(typeof(glTexParameterfv))load("glTexParameterfv");
1175 	glTexParameteri = cast(typeof(glTexParameteri))load("glTexParameteri");
1176 	glTexParameteriv = cast(typeof(glTexParameteriv))load("glTexParameteriv");
1177 	glTexSubImage2D = cast(typeof(glTexSubImage2D))load("glTexSubImage2D");
1178 	glUniform1f = cast(typeof(glUniform1f))load("glUniform1f");
1179 	glUniform1fv = cast(typeof(glUniform1fv))load("glUniform1fv");
1180 	glUniform1i = cast(typeof(glUniform1i))load("glUniform1i");
1181 	glUniform1iv = cast(typeof(glUniform1iv))load("glUniform1iv");
1182 	glUniform2f = cast(typeof(glUniform2f))load("glUniform2f");
1183 	glUniform2fv = cast(typeof(glUniform2fv))load("glUniform2fv");
1184 	glUniform2i = cast(typeof(glUniform2i))load("glUniform2i");
1185 	glUniform2iv = cast(typeof(glUniform2iv))load("glUniform2iv");
1186 	glUniform3f = cast(typeof(glUniform3f))load("glUniform3f");
1187 	glUniform3fv = cast(typeof(glUniform3fv))load("glUniform3fv");
1188 	glUniform3i = cast(typeof(glUniform3i))load("glUniform3i");
1189 	glUniform3iv = cast(typeof(glUniform3iv))load("glUniform3iv");
1190 	glUniform4f = cast(typeof(glUniform4f))load("glUniform4f");
1191 	glUniform4fv = cast(typeof(glUniform4fv))load("glUniform4fv");
1192 	glUniform4i = cast(typeof(glUniform4i))load("glUniform4i");
1193 	glUniform4iv = cast(typeof(glUniform4iv))load("glUniform4iv");
1194 	glUniformMatrix2fv = cast(typeof(glUniformMatrix2fv))load("glUniformMatrix2fv");
1195 	glUniformMatrix3fv = cast(typeof(glUniformMatrix3fv))load("glUniformMatrix3fv");
1196 	glUniformMatrix4fv = cast(typeof(glUniformMatrix4fv))load("glUniformMatrix4fv");
1197 	glUseProgram = cast(typeof(glUseProgram))load("glUseProgram");
1198 	glValidateProgram = cast(typeof(glValidateProgram))load("glValidateProgram");
1199 	glVertexAttrib1f = cast(typeof(glVertexAttrib1f))load("glVertexAttrib1f");
1200 	glVertexAttrib1fv = cast(typeof(glVertexAttrib1fv))load("glVertexAttrib1fv");
1201 	glVertexAttrib2f = cast(typeof(glVertexAttrib2f))load("glVertexAttrib2f");
1202 	glVertexAttrib2fv = cast(typeof(glVertexAttrib2fv))load("glVertexAttrib2fv");
1203 	glVertexAttrib3f = cast(typeof(glVertexAttrib3f))load("glVertexAttrib3f");
1204 	glVertexAttrib3fv = cast(typeof(glVertexAttrib3fv))load("glVertexAttrib3fv");
1205 	glVertexAttrib4f = cast(typeof(glVertexAttrib4f))load("glVertexAttrib4f");
1206 	glVertexAttrib4fv = cast(typeof(glVertexAttrib4fv))load("glVertexAttrib4fv");
1207 	glVertexAttribPointer = cast(typeof(glVertexAttribPointer))load("glVertexAttribPointer");
1208 	glViewport = cast(typeof(glViewport))load("glViewport");
1209 	return;
1210 }
1211 
1212 void load_GL_ES_VERSION_3_0(Loader load) {
1213 	if(!GL_ES_VERSION_3_0) return;
1214 	glReadBuffer = cast(typeof(glReadBuffer))load("glReadBuffer");
1215 	glDrawRangeElements = cast(typeof(glDrawRangeElements))load("glDrawRangeElements");
1216 	glTexImage3D = cast(typeof(glTexImage3D))load("glTexImage3D");
1217 	glTexSubImage3D = cast(typeof(glTexSubImage3D))load("glTexSubImage3D");
1218 	glCopyTexSubImage3D = cast(typeof(glCopyTexSubImage3D))load("glCopyTexSubImage3D");
1219 	glCompressedTexImage3D = cast(typeof(glCompressedTexImage3D))load("glCompressedTexImage3D");
1220 	glCompressedTexSubImage3D = cast(typeof(glCompressedTexSubImage3D))load("glCompressedTexSubImage3D");
1221 	glGenQueries = cast(typeof(glGenQueries))load("glGenQueries");
1222 	glDeleteQueries = cast(typeof(glDeleteQueries))load("glDeleteQueries");
1223 	glIsQuery = cast(typeof(glIsQuery))load("glIsQuery");
1224 	glBeginQuery = cast(typeof(glBeginQuery))load("glBeginQuery");
1225 	glEndQuery = cast(typeof(glEndQuery))load("glEndQuery");
1226 	glGetQueryiv = cast(typeof(glGetQueryiv))load("glGetQueryiv");
1227 	glGetQueryObjectuiv = cast(typeof(glGetQueryObjectuiv))load("glGetQueryObjectuiv");
1228 	glUnmapBuffer = cast(typeof(glUnmapBuffer))load("glUnmapBuffer");
1229 	glGetBufferPointerv = cast(typeof(glGetBufferPointerv))load("glGetBufferPointerv");
1230 	glDrawBuffers = cast(typeof(glDrawBuffers))load("glDrawBuffers");
1231 	glUniformMatrix2x3fv = cast(typeof(glUniformMatrix2x3fv))load("glUniformMatrix2x3fv");
1232 	glUniformMatrix3x2fv = cast(typeof(glUniformMatrix3x2fv))load("glUniformMatrix3x2fv");
1233 	glUniformMatrix2x4fv = cast(typeof(glUniformMatrix2x4fv))load("glUniformMatrix2x4fv");
1234 	glUniformMatrix4x2fv = cast(typeof(glUniformMatrix4x2fv))load("glUniformMatrix4x2fv");
1235 	glUniformMatrix3x4fv = cast(typeof(glUniformMatrix3x4fv))load("glUniformMatrix3x4fv");
1236 	glUniformMatrix4x3fv = cast(typeof(glUniformMatrix4x3fv))load("glUniformMatrix4x3fv");
1237 	glBlitFramebuffer = cast(typeof(glBlitFramebuffer))load("glBlitFramebuffer");
1238 	glRenderbufferStorageMultisample = cast(typeof(glRenderbufferStorageMultisample))load("glRenderbufferStorageMultisample");
1239 	glFramebufferTextureLayer = cast(typeof(glFramebufferTextureLayer))load("glFramebufferTextureLayer");
1240 	glMapBufferRange = cast(typeof(glMapBufferRange))load("glMapBufferRange");
1241 	glFlushMappedBufferRange = cast(typeof(glFlushMappedBufferRange))load("glFlushMappedBufferRange");
1242 	glBindVertexArray = cast(typeof(glBindVertexArray))load("glBindVertexArray");
1243 	glDeleteVertexArrays = cast(typeof(glDeleteVertexArrays))load("glDeleteVertexArrays");
1244 	glGenVertexArrays = cast(typeof(glGenVertexArrays))load("glGenVertexArrays");
1245 	glIsVertexArray = cast(typeof(glIsVertexArray))load("glIsVertexArray");
1246 	glGetIntegeri_v = cast(typeof(glGetIntegeri_v))load("glGetIntegeri_v");
1247 	glBeginTransformFeedback = cast(typeof(glBeginTransformFeedback))load("glBeginTransformFeedback");
1248 	glEndTransformFeedback = cast(typeof(glEndTransformFeedback))load("glEndTransformFeedback");
1249 	glBindBufferRange = cast(typeof(glBindBufferRange))load("glBindBufferRange");
1250 	glBindBufferBase = cast(typeof(glBindBufferBase))load("glBindBufferBase");
1251 	glTransformFeedbackVaryings = cast(typeof(glTransformFeedbackVaryings))load("glTransformFeedbackVaryings");
1252 	glGetTransformFeedbackVarying = cast(typeof(glGetTransformFeedbackVarying))load("glGetTransformFeedbackVarying");
1253 	glVertexAttribIPointer = cast(typeof(glVertexAttribIPointer))load("glVertexAttribIPointer");
1254 	glGetVertexAttribIiv = cast(typeof(glGetVertexAttribIiv))load("glGetVertexAttribIiv");
1255 	glGetVertexAttribIuiv = cast(typeof(glGetVertexAttribIuiv))load("glGetVertexAttribIuiv");
1256 	glVertexAttribI4i = cast(typeof(glVertexAttribI4i))load("glVertexAttribI4i");
1257 	glVertexAttribI4ui = cast(typeof(glVertexAttribI4ui))load("glVertexAttribI4ui");
1258 	glVertexAttribI4iv = cast(typeof(glVertexAttribI4iv))load("glVertexAttribI4iv");
1259 	glVertexAttribI4uiv = cast(typeof(glVertexAttribI4uiv))load("glVertexAttribI4uiv");
1260 	glGetUniformuiv = cast(typeof(glGetUniformuiv))load("glGetUniformuiv");
1261 	glGetFragDataLocation = cast(typeof(glGetFragDataLocation))load("glGetFragDataLocation");
1262 	glUniform1ui = cast(typeof(glUniform1ui))load("glUniform1ui");
1263 	glUniform2ui = cast(typeof(glUniform2ui))load("glUniform2ui");
1264 	glUniform3ui = cast(typeof(glUniform3ui))load("glUniform3ui");
1265 	glUniform4ui = cast(typeof(glUniform4ui))load("glUniform4ui");
1266 	glUniform1uiv = cast(typeof(glUniform1uiv))load("glUniform1uiv");
1267 	glUniform2uiv = cast(typeof(glUniform2uiv))load("glUniform2uiv");
1268 	glUniform3uiv = cast(typeof(glUniform3uiv))load("glUniform3uiv");
1269 	glUniform4uiv = cast(typeof(glUniform4uiv))load("glUniform4uiv");
1270 	glClearBufferiv = cast(typeof(glClearBufferiv))load("glClearBufferiv");
1271 	glClearBufferuiv = cast(typeof(glClearBufferuiv))load("glClearBufferuiv");
1272 	glClearBufferfv = cast(typeof(glClearBufferfv))load("glClearBufferfv");
1273 	glClearBufferfi = cast(typeof(glClearBufferfi))load("glClearBufferfi");
1274 	glGetStringi = cast(typeof(glGetStringi))load("glGetStringi");
1275 	glCopyBufferSubData = cast(typeof(glCopyBufferSubData))load("glCopyBufferSubData");
1276 	glGetUniformIndices = cast(typeof(glGetUniformIndices))load("glGetUniformIndices");
1277 	glGetActiveUniformsiv = cast(typeof(glGetActiveUniformsiv))load("glGetActiveUniformsiv");
1278 	glGetUniformBlockIndex = cast(typeof(glGetUniformBlockIndex))load("glGetUniformBlockIndex");
1279 	glGetActiveUniformBlockiv = cast(typeof(glGetActiveUniformBlockiv))load("glGetActiveUniformBlockiv");
1280 	glGetActiveUniformBlockName = cast(typeof(glGetActiveUniformBlockName))load("glGetActiveUniformBlockName");
1281 	glUniformBlockBinding = cast(typeof(glUniformBlockBinding))load("glUniformBlockBinding");
1282 	glDrawArraysInstanced = cast(typeof(glDrawArraysInstanced))load("glDrawArraysInstanced");
1283 	glDrawElementsInstanced = cast(typeof(glDrawElementsInstanced))load("glDrawElementsInstanced");
1284 	glFenceSync = cast(typeof(glFenceSync))load("glFenceSync");
1285 	glIsSync = cast(typeof(glIsSync))load("glIsSync");
1286 	glDeleteSync = cast(typeof(glDeleteSync))load("glDeleteSync");
1287 	glClientWaitSync = cast(typeof(glClientWaitSync))load("glClientWaitSync");
1288 	glWaitSync = cast(typeof(glWaitSync))load("glWaitSync");
1289 	glGetInteger64v = cast(typeof(glGetInteger64v))load("glGetInteger64v");
1290 	glGetSynciv = cast(typeof(glGetSynciv))load("glGetSynciv");
1291 	glGetInteger64i_v = cast(typeof(glGetInteger64i_v))load("glGetInteger64i_v");
1292 	glGetBufferParameteri64v = cast(typeof(glGetBufferParameteri64v))load("glGetBufferParameteri64v");
1293 	glGenSamplers = cast(typeof(glGenSamplers))load("glGenSamplers");
1294 	glDeleteSamplers = cast(typeof(glDeleteSamplers))load("glDeleteSamplers");
1295 	glIsSampler = cast(typeof(glIsSampler))load("glIsSampler");
1296 	glBindSampler = cast(typeof(glBindSampler))load("glBindSampler");
1297 	glSamplerParameteri = cast(typeof(glSamplerParameteri))load("glSamplerParameteri");
1298 	glSamplerParameteriv = cast(typeof(glSamplerParameteriv))load("glSamplerParameteriv");
1299 	glSamplerParameterf = cast(typeof(glSamplerParameterf))load("glSamplerParameterf");
1300 	glSamplerParameterfv = cast(typeof(glSamplerParameterfv))load("glSamplerParameterfv");
1301 	glGetSamplerParameteriv = cast(typeof(glGetSamplerParameteriv))load("glGetSamplerParameteriv");
1302 	glGetSamplerParameterfv = cast(typeof(glGetSamplerParameterfv))load("glGetSamplerParameterfv");
1303 	glVertexAttribDivisor = cast(typeof(glVertexAttribDivisor))load("glVertexAttribDivisor");
1304 	glBindTransformFeedback = cast(typeof(glBindTransformFeedback))load("glBindTransformFeedback");
1305 	glDeleteTransformFeedbacks = cast(typeof(glDeleteTransformFeedbacks))load("glDeleteTransformFeedbacks");
1306 	glGenTransformFeedbacks = cast(typeof(glGenTransformFeedbacks))load("glGenTransformFeedbacks");
1307 	glIsTransformFeedback = cast(typeof(glIsTransformFeedback))load("glIsTransformFeedback");
1308 	glPauseTransformFeedback = cast(typeof(glPauseTransformFeedback))load("glPauseTransformFeedback");
1309 	glResumeTransformFeedback = cast(typeof(glResumeTransformFeedback))load("glResumeTransformFeedback");
1310 	glGetProgramBinary = cast(typeof(glGetProgramBinary))load("glGetProgramBinary");
1311 	glProgramBinary = cast(typeof(glProgramBinary))load("glProgramBinary");
1312 	glProgramParameteri = cast(typeof(glProgramParameteri))load("glProgramParameteri");
1313 	glInvalidateFramebuffer = cast(typeof(glInvalidateFramebuffer))load("glInvalidateFramebuffer");
1314 	glInvalidateSubFramebuffer = cast(typeof(glInvalidateSubFramebuffer))load("glInvalidateSubFramebuffer");
1315 	glTexStorage2D = cast(typeof(glTexStorage2D))load("glTexStorage2D");
1316 	glTexStorage3D = cast(typeof(glTexStorage3D))load("glTexStorage3D");
1317 	glGetInternalformativ = cast(typeof(glGetInternalformativ))load("glGetInternalformativ");
1318 	return;
1319 }
1320 
1321 
1322 } /* private */
1323