summaryrefslogtreecommitdiff
path: root/externals/glad/src/glad.c
diff options
context:
space:
mode:
Diffstat (limited to 'externals/glad/src/glad.c')
-rw-r--r--externals/glad/src/glad.c1404
1 files changed, 1404 insertions, 0 deletions
diff --git a/externals/glad/src/glad.c b/externals/glad/src/glad.c
new file mode 100644
index 000000000..014b54383
--- /dev/null
+++ b/externals/glad/src/glad.c
@@ -0,0 +1,1404 @@
1#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4#include <glad/glad.h>
5
6static void* get_proc(const char *namez);
7
8#ifdef _WIN32
9#include <windows.h>
10static HMODULE libGL;
11
12typedef void* (APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char*);
13PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr;
14
15static
16int open_gl(void) {
17 libGL = LoadLibraryA("opengl32.dll");
18 if(libGL != NULL) {
19 gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE)GetProcAddress(
20 libGL, "wglGetProcAddress");
21 return gladGetProcAddressPtr != NULL;
22 }
23
24 return 0;
25}
26
27static
28void close_gl(void) {
29 if(libGL != NULL) {
30 FreeLibrary(libGL);
31 libGL = NULL;
32 }
33}
34#else
35#include <dlfcn.h>
36static void* libGL;
37
38#ifndef __APPLE__
39typedef void* (APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char*);
40PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr;
41#endif
42
43static
44int open_gl(void) {
45#ifdef __APPLE__
46 static const char *NAMES[] = {
47 "../Frameworks/OpenGL.framework/OpenGL",
48 "/Library/Frameworks/OpenGL.framework/OpenGL",
49 "/System/Library/Frameworks/OpenGL.framework/OpenGL",
50 "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL"
51 };
52#else
53 static const char *NAMES[] = {"libGL.so.1", "libGL.so"};
54#endif
55
56 unsigned int index = 0;
57 for(index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) {
58 libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL);
59
60 if(libGL != NULL) {
61#ifdef __APPLE__
62 return 1;
63#else
64 gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL,
65 "glXGetProcAddressARB");
66 return gladGetProcAddressPtr != NULL;
67#endif
68 }
69 }
70
71 return 0;
72}
73
74static
75void close_gl() {
76 if(libGL != NULL) {
77 dlclose(libGL);
78 libGL = NULL;
79 }
80}
81#endif
82
83static
84void* get_proc(const char *namez) {
85 void* result = NULL;
86 if(libGL == NULL) return NULL;
87
88#ifndef __APPLE__
89 if(gladGetProcAddressPtr != NULL) {
90 result = gladGetProcAddressPtr(namez);
91 }
92#endif
93 if(result == NULL) {
94#ifdef _WIN32
95 result = (void*)GetProcAddress(libGL, namez);
96#else
97 result = dlsym(libGL, namez);
98#endif
99 }
100
101 return result;
102}
103
104int gladLoadGL(void) {
105 int status = 0;
106
107 if(open_gl()) {
108 status = gladLoadGLLoader(&get_proc);
109 close_gl();
110 }
111
112 return status;
113}
114
115struct gladGLversionStruct GLVersion;
116
117#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0)
118#define _GLAD_IS_SOME_NEW_VERSION 1
119#endif
120
121static int max_loaded_major;
122static int max_loaded_minor;
123
124static const char *exts = NULL;
125static int num_exts_i = 0;
126static const char **exts_i = NULL;
127
128static void get_exts(void) {
129#ifdef _GLAD_IS_SOME_NEW_VERSION
130 if(max_loaded_major < 3) {
131#endif
132 exts = (const char *)glGetString(GL_EXTENSIONS);
133#ifdef _GLAD_IS_SOME_NEW_VERSION
134 } else {
135 int index;
136
137 num_exts_i = 0;
138 glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i);
139 if (num_exts_i > 0) {
140 exts_i = (const char **)realloc((void *)exts_i, num_exts_i * sizeof *exts_i);
141 }
142
143 for(index = 0; index < num_exts_i; index++) {
144 exts_i[index] = (const char*)glGetStringi(GL_EXTENSIONS, index);
145 }
146 }
147#endif
148}
149
150static int has_ext(const char *ext) {
151#ifdef _GLAD_IS_SOME_NEW_VERSION
152 if(max_loaded_major < 3) {
153#endif
154 const char *extensions;
155 const char *loc;
156 const char *terminator;
157 extensions = exts;
158 if(extensions == NULL || ext == NULL) {
159 return 0;
160 }
161
162 while(1) {
163 loc = strstr(extensions, ext);
164 if(loc == NULL) {
165 return 0;
166 }
167
168 terminator = loc + strlen(ext);
169 if((loc == extensions || *(loc - 1) == ' ') &&
170 (*terminator == ' ' || *terminator == '\0')) {
171 return 1;
172 }
173 extensions = terminator;
174 }
175#ifdef _GLAD_IS_SOME_NEW_VERSION
176 } else {
177 int index;
178
179 for(index = 0; index < num_exts_i; index++) {
180 const char *e = exts_i[index];
181
182 if(strcmp(e, ext) == 0) {
183 return 1;
184 }
185 }
186 }
187#endif
188
189 return 0;
190}
191int GLAD_GL_VERSION_1_0;
192int GLAD_GL_VERSION_1_1;
193int GLAD_GL_VERSION_1_2;
194int GLAD_GL_VERSION_1_3;
195int GLAD_GL_VERSION_1_4;
196int GLAD_GL_VERSION_1_5;
197int GLAD_GL_VERSION_2_0;
198int GLAD_GL_VERSION_2_1;
199int GLAD_GL_VERSION_3_0;
200int GLAD_GL_VERSION_3_1;
201int GLAD_GL_VERSION_3_2;
202int GLAD_GL_VERSION_3_3;
203int GLAD_GL_ES_VERSION_2_0;
204int GLAD_GL_ES_VERSION_3_0;
205PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D;
206PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui;
207PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate;
208PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer;
209PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D;
210PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv;
211PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv;
212PFNGLBINDSAMPLERPROC glad_glBindSampler;
213PFNGLLINEWIDTHPROC glad_glLineWidth;
214PFNGLCOLORP3UIVPROC glad_glColorP3uiv;
215PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v;
216PFNGLCOMPILESHADERPROC glad_glCompileShader;
217PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying;
218PFNGLDEPTHRANGEFPROC glad_glDepthRangef;
219PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer;
220PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui;
221PFNGLVERTEXP4UIPROC glad_glVertexP4ui;
222PFNGLENABLEIPROC glad_glEnablei;
223PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui;
224PFNGLCREATESHADERPROC glad_glCreateShader;
225PFNGLISBUFFERPROC glad_glIsBuffer;
226PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv;
227PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers;
228PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D;
229PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D;
230PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f;
231PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate;
232PFNGLHINTPROC glad_glHint;
233PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s;
234PFNGLSAMPLEMASKIPROC glad_glSampleMaski;
235PFNGLVERTEXP2UIPROC glad_glVertexP2ui;
236PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv;
237PFNGLPOINTSIZEPROC glad_glPointSize;
238PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv;
239PFNGLDELETEPROGRAMPROC glad_glDeleteProgram;
240PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv;
241PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage;
242PFNGLWAITSYNCPROC glad_glWaitSync;
243PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv;
244PFNGLUNIFORM3IPROC glad_glUniform3i;
245PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv;
246PFNGLUNIFORM3FPROC glad_glUniform3f;
247PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv;
248PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv;
249PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui;
250PFNGLCOLORMASKIPROC glad_glColorMaski;
251PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi;
252PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays;
253PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback;
254PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui;
255PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv;
256PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex;
257PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D;
258PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv;
259PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv;
260PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback;
261PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui;
262PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers;
263PFNGLDRAWARRAYSPROC glad_glDrawArrays;
264PFNGLUNIFORM1UIPROC glad_glUniform1ui;
265PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i;
266PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui;
267PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d;
268PFNGLCLEARPROC glad_glClear;
269PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri;
270PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName;
271PFNGLISENABLEDPROC glad_glIsEnabled;
272PFNGLSTENCILOPPROC glad_glStencilOp;
273PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D;
274PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv;
275PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub;
276PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation;
277PFNGLTEXIMAGE1DPROC glad_glTexImage1D;
278PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv;
279PFNGLGETTEXIMAGEPROC glad_glGetTexImage;
280PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v;
281PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers;
282PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders;
283PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer;
284PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays;
285PFNGLISVERTEXARRAYPROC glad_glIsVertexArray;
286PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray;
287PFNGLGETQUERYIVPROC glad_glGetQueryiv;
288PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv;
289PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices;
290PFNGLISSHADERPROC glad_glIsShader;
291PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv;
292PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv;
293PFNGLENABLEPROC glad_glEnable;
294PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv;
295PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation;
296PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv;
297PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv;
298PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui;
299PFNGLGETUNIFORMFVPROC glad_glGetUniformfv;
300PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv;
301PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv;
302PFNGLDRAWBUFFERPROC glad_glDrawBuffer;
303PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv;
304PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced;
305PFNGLFLUSHPROC glad_glFlush;
306PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv;
307PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv;
308PFNGLFENCESYNCPROC glad_glFenceSync;
309PFNGLCOLORP3UIPROC glad_glColorP3ui;
310PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv;
311PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender;
312PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv;
313PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv;
314PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate;
315PFNGLGENSAMPLERSPROC glad_glGenSamplers;
316PFNGLCLAMPCOLORPROC glad_glClampColor;
317PFNGLUNIFORM4IVPROC glad_glUniform4iv;
318PFNGLCLEARSTENCILPROC glad_glClearStencil;
319PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv;
320PFNGLGENTEXTURESPROC glad_glGenTextures;
321PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv;
322PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv;
323PFNGLISSYNCPROC glad_glIsSync;
324PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName;
325PFNGLUNIFORM2IPROC glad_glUniform2i;
326PFNGLUNIFORM2FPROC glad_glUniform2f;
327PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui;
328PFNGLGETPROGRAMIVPROC glad_glGetProgramiv;
329PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer;
330PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer;
331PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange;
332PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D;
333PFNGLGENQUERIESPROC glad_glGenQueries;
334PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui;
335PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D;
336PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v;
337PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers;
338PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D;
339PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer;
340PFNGLISENABLEDIPROC glad_glIsEnabledi;
341PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui;
342PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed;
343PFNGLUNIFORM2IVPROC glad_glUniform2iv;
344PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv;
345PFNGLUNIFORM4UIVPROC glad_glUniform4uiv;
346PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D;
347PFNGLGETSHADERIVPROC glad_glGetShaderiv;
348PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer;
349PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation;
350PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset;
351PFNGLGETDOUBLEVPROC glad_glGetDoublev;
352PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d;
353PFNGLGETUNIFORMIVPROC glad_glGetUniformiv;
354PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv;
355PFNGLUNIFORM3FVPROC glad_glUniform3fv;
356PFNGLDEPTHRANGEPROC glad_glDepthRange;
357PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer;
358PFNGLMAPBUFFERPROC glad_glMapBuffer;
359PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D;
360PFNGLDELETESYNCPROC glad_glDeleteSync;
361PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D;
362PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv;
363PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements;
364PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv;
365PFNGLUNIFORM3IVPROC glad_glUniform3iv;
366PFNGLPOLYGONMODEPROC glad_glPolygonMode;
367PFNGLDRAWBUFFERSPROC glad_glDrawBuffers;
368PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv;
369PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary;
370PFNGLUSEPROGRAMPROC glad_glUseProgram;
371PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog;
372PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback;
373PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray;
374PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers;
375PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv;
376PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex;
377PFNGLUNIFORM2UIVPROC glad_glUniform2uiv;
378PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D;
379PFNGLFINISHPROC glad_glFinish;
380PFNGLDELETESHADERPROC glad_glDeleteShader;
381PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv;
382PFNGLVIEWPORTPROC glad_glViewport;
383PFNGLUNIFORM1UIVPROC glad_glUniform1uiv;
384PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings;
385PFNGLUNIFORM2UIPROC glad_glUniform2ui;
386PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i;
387PFNGLCLEARDEPTHPROC glad_glClearDepth;
388PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv;
389PFNGLTEXPARAMETERFPROC glad_glTexParameterf;
390PFNGLTEXPARAMETERIPROC glad_glTexParameteri;
391PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource;
392PFNGLTEXBUFFERPROC glad_glTexBuffer;
393PFNGLPIXELSTOREIPROC glad_glPixelStorei;
394PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram;
395PFNGLPIXELSTOREFPROC glad_glPixelStoref;
396PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v;
397PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv;
398PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ;
399PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv;
400PFNGLLINKPROGRAMPROC glad_glLinkProgram;
401PFNGLBINDTEXTUREPROC glad_glBindTexture;
402PFNGLGETSTRINGPROC glad_glGetString;
403PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv;
404PFNGLDETACHSHADERPROC glad_glDetachShader;
405PFNGLENDQUERYPROC glad_glEndQuery;
406PFNGLNORMALP3UIPROC glad_glNormalP3ui;
407PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui;
408PFNGLDELETETEXTURESPROC glad_glDeleteTextures;
409PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate;
410PFNGLDELETEQUERIESPROC glad_glDeleteQueries;
411PFNGLNORMALP3UIVPROC glad_glNormalP3uiv;
412PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f;
413PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d;
414PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv;
415PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s;
416PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex;
417PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage;
418PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri;
419PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf;
420PFNGLUNIFORM1FPROC glad_glUniform1f;
421PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv;
422PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage;
423PFNGLUNIFORM1IPROC glad_glUniform1i;
424PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib;
425PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D;
426PFNGLDISABLEPROC glad_glDisable;
427PFNGLLOGICOPPROC glad_glLogicOp;
428PFNGLUNIFORM4UIPROC glad_glUniform4ui;
429PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer;
430PFNGLCULLFACEPROC glad_glCullFace;
431PFNGLGETSTRINGIPROC glad_glGetStringi;
432PFNGLATTACHSHADERPROC glad_glAttachShader;
433PFNGLQUERYCOUNTERPROC glad_glQueryCounter;
434PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex;
435PFNGLSHADERBINARYPROC glad_glShaderBinary;
436PFNGLDRAWELEMENTSPROC glad_glDrawElements;
437PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv;
438PFNGLUNIFORM1IVPROC glad_glUniform1iv;
439PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv;
440PFNGLREADBUFFERPROC glad_glReadBuffer;
441PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv;
442PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced;
443PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap;
444PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv;
445PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f;
446PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv;
447PFNGLPOINTPARAMETERIPROC glad_glPointParameteri;
448PFNGLBLENDCOLORPROC glad_glBlendColor;
449PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv;
450PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer;
451PFNGLPOINTPARAMETERFPROC glad_glPointParameterf;
452PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s;
453PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer;
454PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv;
455PFNGLISPROGRAMPROC glad_glIsProgram;
456PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv;
457PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv;
458PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler;
459PFNGLUNIFORM4IPROC glad_glUniform4i;
460PFNGLACTIVETEXTUREPROC glad_glActiveTexture;
461PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray;
462PFNGLREADPIXELSPROC glad_glReadPixels;
463PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv;
464PFNGLUNIFORM4FPROC glad_glUniform4f;
465PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample;
466PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv;
467PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex;
468PFNGLSTENCILFUNCPROC glad_glStencilFunc;
469PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding;
470PFNGLCOLORP4UIPROC glad_glColorP4ui;
471PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv;
472PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog;
473PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i;
474PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData;
475PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate;
476PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui;
477PFNGLGENBUFFERSPROC glad_glGenBuffers;
478PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv;
479PFNGLBLENDFUNCPROC glad_glBlendFunc;
480PFNGLCREATEPROGRAMPROC glad_glCreateProgram;
481PFNGLTEXIMAGE3DPROC glad_glTexImage3D;
482PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer;
483PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex;
484PFNGLGETINTEGER64VPROC glad_glGetInteger64v;
485PFNGLSCISSORPROC glad_glScissor;
486PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv;
487PFNGLGETBOOLEANVPROC glad_glGetBooleanv;
488PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv;
489PFNGLUNIFORM3UIVPROC glad_glUniform3uiv;
490PFNGLCLEARCOLORPROC glad_glClearColor;
491PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv;
492PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv;
493PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v;
494PFNGLCOLORP4UIVPROC glad_glColorP4uiv;
495PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv;
496PFNGLUNIFORM3UIPROC glad_glUniform3ui;
497PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv;
498PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv;
499PFNGLUNIFORM2FVPROC glad_glUniform2fv;
500PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv;
501PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange;
502PFNGLCLEARDEPTHFPROC glad_glClearDepthf;
503PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv;
504PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks;
505PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv;
506PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv;
507PFNGLDEPTHFUNCPROC glad_glDepthFunc;
508PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D;
509PFNGLPROGRAMBINARYPROC glad_glProgramBinary;
510PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv;
511PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv;
512PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui;
513PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync;
514PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui;
515PFNGLCOLORMASKPROC glad_glColorMask;
516PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv;
517PFNGLBLENDEQUATIONPROC glad_glBlendEquation;
518PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation;
519PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback;
520PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv;
521PFNGLUNIFORM4FVPROC glad_glUniform4fv;
522PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback;
523PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv;
524PFNGLISSAMPLERPROC glad_glIsSampler;
525PFNGLVERTEXP3UIPROC glad_glVertexP3ui;
526PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor;
527PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D;
528PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks;
529PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D;
530PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex;
531PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus;
532PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender;
533PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv;
534PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation;
535PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv;
536PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv;
537PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements;
538PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv;
539PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase;
540PFNGLBUFFERSUBDATAPROC glad_glBufferSubData;
541PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv;
542PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange;
543PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture;
544PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays;
545PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv;
546PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv;
547PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat;
548PFNGLDISABLEIPROC glad_glDisablei;
549PFNGLSHADERSOURCEPROC glad_glShaderSource;
550PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers;
551PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv;
552PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback;
553PFNGLGETSYNCIVPROC glad_glGetSynciv;
554PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv;
555PFNGLBEGINQUERYPROC glad_glBeginQuery;
556PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv;
557PFNGLBINDBUFFERPROC glad_glBindBuffer;
558PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv;
559PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv;
560PFNGLBUFFERDATAPROC glad_glBufferData;
561PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv;
562PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui;
563PFNGLGETERRORPROC glad_glGetError;
564PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui;
565PFNGLGETFLOATVPROC glad_glGetFloatv;
566PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D;
567PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv;
568PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv;
569PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i;
570PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv;
571PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv;
572PFNGLGETINTEGERVPROC glad_glGetIntegerv;
573PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv;
574PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D;
575PFNGLISQUERYPROC glad_glIsQuery;
576PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv;
577PFNGLTEXIMAGE2DPROC glad_glTexImage2D;
578PFNGLSTENCILMASKPROC glad_glStencilMask;
579PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv;
580PFNGLISTEXTUREPROC glad_glIsTexture;
581PFNGLUNIFORM1FVPROC glad_glUniform1fv;
582PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv;
583PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv;
584PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv;
585PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData;
586PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv;
587PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d;
588PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f;
589PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv;
590PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v;
591PFNGLDEPTHMASKPROC glad_glDepthMask;
592PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s;
593PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample;
594PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex;
595PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample;
596PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform;
597PFNGLFRONTFACEPROC glad_glFrontFace;
598static void load_GL_VERSION_1_0(GLADloadproc load) {
599 if(!GLAD_GL_VERSION_1_0) return;
600 glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace");
601 glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace");
602 glad_glHint = (PFNGLHINTPROC)load("glHint");
603 glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth");
604 glad_glPointSize = (PFNGLPOINTSIZEPROC)load("glPointSize");
605 glad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load("glPolygonMode");
606 glad_glScissor = (PFNGLSCISSORPROC)load("glScissor");
607 glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf");
608 glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv");
609 glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri");
610 glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv");
611 glad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load("glTexImage1D");
612 glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D");
613 glad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load("glDrawBuffer");
614 glad_glClear = (PFNGLCLEARPROC)load("glClear");
615 glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor");
616 glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil");
617 glad_glClearDepth = (PFNGLCLEARDEPTHPROC)load("glClearDepth");
618 glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask");
619 glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask");
620 glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask");
621 glad_glDisable = (PFNGLDISABLEPROC)load("glDisable");
622 glad_glEnable = (PFNGLENABLEPROC)load("glEnable");
623 glad_glFinish = (PFNGLFINISHPROC)load("glFinish");
624 glad_glFlush = (PFNGLFLUSHPROC)load("glFlush");
625 glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc");
626 glad_glLogicOp = (PFNGLLOGICOPPROC)load("glLogicOp");
627 glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc");
628 glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp");
629 glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc");
630 glad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load("glPixelStoref");
631 glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei");
632 glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer");
633 glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels");
634 glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv");
635 glad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load("glGetDoublev");
636 glad_glGetError = (PFNGLGETERRORPROC)load("glGetError");
637 glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv");
638 glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv");
639 glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString");
640 glad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load("glGetTexImage");
641 glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv");
642 glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv");
643 glad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load("glGetTexLevelParameterfv");
644 glad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load("glGetTexLevelParameteriv");
645 glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled");
646 glad_glDepthRange = (PFNGLDEPTHRANGEPROC)load("glDepthRange");
647 glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport");
648}
649static void load_GL_VERSION_1_1(GLADloadproc load) {
650 if(!GLAD_GL_VERSION_1_1) return;
651 glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays");
652 glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements");
653 glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset");
654 glad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load("glCopyTexImage1D");
655 glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D");
656 glad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)load("glCopyTexSubImage1D");
657 glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D");
658 glad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load("glTexSubImage1D");
659 glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D");
660 glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture");
661 glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures");
662 glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures");
663 glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture");
664}
665static void load_GL_VERSION_1_2(GLADloadproc load) {
666 if(!GLAD_GL_VERSION_1_2) return;
667 glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements");
668 glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D");
669 glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D");
670 glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D");
671}
672static void load_GL_VERSION_1_3(GLADloadproc load) {
673 if(!GLAD_GL_VERSION_1_3) return;
674 glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture");
675 glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage");
676 glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D");
677 glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D");
678 glad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load("glCompressedTexImage1D");
679 glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D");
680 glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D");
681 glad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load("glCompressedTexSubImage1D");
682 glad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load("glGetCompressedTexImage");
683}
684static void load_GL_VERSION_1_4(GLADloadproc load) {
685 if(!GLAD_GL_VERSION_1_4) return;
686 glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate");
687 glad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load("glMultiDrawArrays");
688 glad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load("glMultiDrawElements");
689 glad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC)load("glPointParameterf");
690 glad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)load("glPointParameterfv");
691 glad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC)load("glPointParameteri");
692 glad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)load("glPointParameteriv");
693 glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor");
694 glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation");
695}
696static void load_GL_VERSION_1_5(GLADloadproc load) {
697 if(!GLAD_GL_VERSION_1_5) return;
698 glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries");
699 glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries");
700 glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery");
701 glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery");
702 glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery");
703 glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv");
704 glad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)load("glGetQueryObjectiv");
705 glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv");
706 glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer");
707 glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers");
708 glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers");
709 glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer");
710 glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData");
711 glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData");
712 glad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)load("glGetBufferSubData");
713 glad_glMapBuffer = (PFNGLMAPBUFFERPROC)load("glMapBuffer");
714 glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer");
715 glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv");
716 glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv");
717}
718static void load_GL_VERSION_2_0(GLADloadproc load) {
719 if(!GLAD_GL_VERSION_2_0) return;
720 glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate");
721 glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers");
722 glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate");
723 glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate");
724 glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate");
725 glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader");
726 glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation");
727 glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader");
728 glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram");
729 glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader");
730 glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram");
731 glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader");
732 glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader");
733 glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray");
734 glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray");
735 glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib");
736 glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform");
737 glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders");
738 glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation");
739 glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv");
740 glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog");
741 glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv");
742 glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog");
743 glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource");
744 glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation");
745 glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv");
746 glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv");
747 glad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)load("glGetVertexAttribdv");
748 glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv");
749 glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv");
750 glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv");
751 glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram");
752 glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader");
753 glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram");
754 glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource");
755 glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram");
756 glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f");
757 glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f");
758 glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f");
759 glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f");
760 glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i");
761 glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i");
762 glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i");
763 glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i");
764 glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv");
765 glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv");
766 glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv");
767 glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv");
768 glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv");
769 glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv");
770 glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv");
771 glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv");
772 glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv");
773 glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv");
774 glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv");
775 glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram");
776 glad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load("glVertexAttrib1d");
777 glad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)load("glVertexAttrib1dv");
778 glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f");
779 glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv");
780 glad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load("glVertexAttrib1s");
781 glad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)load("glVertexAttrib1sv");
782 glad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load("glVertexAttrib2d");
783 glad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)load("glVertexAttrib2dv");
784 glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f");
785 glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv");
786 glad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load("glVertexAttrib2s");
787 glad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)load("glVertexAttrib2sv");
788 glad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load("glVertexAttrib3d");
789 glad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)load("glVertexAttrib3dv");
790 glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f");
791 glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv");
792 glad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load("glVertexAttrib3s");
793 glad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)load("glVertexAttrib3sv");
794 glad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)load("glVertexAttrib4Nbv");
795 glad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)load("glVertexAttrib4Niv");
796 glad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)load("glVertexAttrib4Nsv");
797 glad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)load("glVertexAttrib4Nub");
798 glad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)load("glVertexAttrib4Nubv");
799 glad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)load("glVertexAttrib4Nuiv");
800 glad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)load("glVertexAttrib4Nusv");
801 glad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)load("glVertexAttrib4bv");
802 glad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load("glVertexAttrib4d");
803 glad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)load("glVertexAttrib4dv");
804 glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f");
805 glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv");
806 glad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)load("glVertexAttrib4iv");
807 glad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load("glVertexAttrib4s");
808 glad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)load("glVertexAttrib4sv");
809 glad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)load("glVertexAttrib4ubv");
810 glad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)load("glVertexAttrib4uiv");
811 glad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load("glVertexAttrib4usv");
812 glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer");
813}
814static void load_GL_VERSION_2_1(GLADloadproc load) {
815 if(!GLAD_GL_VERSION_2_1) return;
816 glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv");
817 glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv");
818 glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv");
819 glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv");
820 glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv");
821 glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv");
822}
823static void load_GL_VERSION_3_0(GLADloadproc load) {
824 if(!GLAD_GL_VERSION_3_0) return;
825 glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski");
826 glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v");
827 glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v");
828 glad_glEnablei = (PFNGLENABLEIPROC)load("glEnablei");
829 glad_glDisablei = (PFNGLDISABLEIPROC)load("glDisablei");
830 glad_glIsEnabledi = (PFNGLISENABLEDIPROC)load("glIsEnabledi");
831 glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback");
832 glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback");
833 glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange");
834 glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase");
835 glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings");
836 glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load("glGetTransformFeedbackVarying");
837 glad_glClampColor = (PFNGLCLAMPCOLORPROC)load("glClampColor");
838 glad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)load("glBeginConditionalRender");
839 glad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)load("glEndConditionalRender");
840 glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer");
841 glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv");
842 glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv");
843 glad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)load("glVertexAttribI1i");
844 glad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)load("glVertexAttribI2i");
845 glad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)load("glVertexAttribI3i");
846 glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i");
847 glad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)load("glVertexAttribI1ui");
848 glad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)load("glVertexAttribI2ui");
849 glad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)load("glVertexAttribI3ui");
850 glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui");
851 glad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)load("glVertexAttribI1iv");
852 glad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)load("glVertexAttribI2iv");
853 glad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)load("glVertexAttribI3iv");
854 glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv");
855 glad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)load("glVertexAttribI1uiv");
856 glad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)load("glVertexAttribI2uiv");
857 glad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)load("glVertexAttribI3uiv");
858 glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv");
859 glad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)load("glVertexAttribI4bv");
860 glad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)load("glVertexAttribI4sv");
861 glad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)load("glVertexAttribI4ubv");
862 glad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)load("glVertexAttribI4usv");
863 glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv");
864 glad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)load("glBindFragDataLocation");
865 glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation");
866 glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui");
867 glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui");
868 glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui");
869 glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui");
870 glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv");
871 glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv");
872 glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv");
873 glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv");
874 glad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load("glTexParameterIiv");
875 glad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load("glTexParameterIuiv");
876 glad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load("glGetTexParameterIiv");
877 glad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load("glGetTexParameterIuiv");
878 glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv");
879 glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv");
880 glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv");
881 glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi");
882 glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi");
883 glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer");
884 glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer");
885 glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers");
886 glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers");
887 glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage");
888 glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv");
889 glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer");
890 glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer");
891 glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers");
892 glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers");
893 glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus");
894 glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D");
895 glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D");
896 glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D");
897 glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer");
898 glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv");
899 glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap");
900 glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer");
901 glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample");
902 glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer");
903 glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange");
904 glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange");
905 glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray");
906 glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays");
907 glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays");
908 glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray");
909}
910static void load_GL_VERSION_3_1(GLADloadproc load) {
911 if(!GLAD_GL_VERSION_3_1) return;
912 glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced");
913 glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced");
914 glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer");
915 glad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load("glPrimitiveRestartIndex");
916 glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData");
917 glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices");
918 glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv");
919 glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName");
920 glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex");
921 glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv");
922 glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName");
923 glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding");
924 glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange");
925 glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase");
926 glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v");
927}
928static void load_GL_VERSION_3_2(GLADloadproc load) {
929 if(!GLAD_GL_VERSION_3_2) return;
930 glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex");
931 glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex");
932 glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex");
933 glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex");
934 glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex");
935 glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync");
936 glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync");
937 glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync");
938 glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync");
939 glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync");
940 glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v");
941 glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv");
942 glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v");
943 glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v");
944 glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture");
945 glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample");
946 glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample");
947 glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv");
948 glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski");
949}
950static void load_GL_VERSION_3_3(GLADloadproc load) {
951 if(!GLAD_GL_VERSION_3_3) return;
952 glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed");
953 glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex");
954 glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers");
955 glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers");
956 glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler");
957 glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler");
958 glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri");
959 glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv");
960 glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf");
961 glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv");
962 glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv");
963 glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv");
964 glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv");
965 glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv");
966 glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv");
967 glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv");
968 glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter");
969 glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v");
970 glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v");
971 glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor");
972 glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui");
973 glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv");
974 glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui");
975 glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv");
976 glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui");
977 glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv");
978 glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui");
979 glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv");
980 glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui");
981 glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv");
982 glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui");
983 glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv");
984 glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui");
985 glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv");
986 glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui");
987 glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv");
988 glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui");
989 glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv");
990 glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui");
991 glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv");
992 glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui");
993 glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv");
994 glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui");
995 glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv");
996 glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui");
997 glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv");
998 glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui");
999 glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv");
1000 glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui");
1001 glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv");
1002 glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui");
1003 glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv");
1004 glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui");
1005 glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv");
1006 glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui");
1007 glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv");
1008 glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui");
1009 glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv");
1010}
1011static void find_extensionsGL(void) {
1012 get_exts();
1013}
1014
1015static void find_coreGL(void) {
1016
1017 /* Thank you @elmindreda
1018 * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176
1019 * https://github.com/glfw/glfw/blob/master/src/context.c#L36
1020 */
1021 int i, major, minor;
1022
1023 const char* version;
1024 const char* prefixes[] = {
1025 "OpenGL ES-CM ",
1026 "OpenGL ES-CL ",
1027 "OpenGL ES ",
1028 NULL
1029 };
1030
1031 version = (const char*) glGetString(GL_VERSION);
1032 if (!version) return;
1033
1034 for (i = 0; prefixes[i]; i++) {
1035 const size_t length = strlen(prefixes[i]);
1036 if (strncmp(version, prefixes[i], length) == 0) {
1037 version += length;
1038 break;
1039 }
1040 }
1041
1042/* PR #18 */
1043#ifdef _MSC_VER
1044 sscanf_s(version, "%d.%d", &major, &minor);
1045#else
1046 sscanf(version, "%d.%d", &major, &minor);
1047#endif
1048
1049 GLVersion.major = major; GLVersion.minor = minor;
1050 max_loaded_major = major; max_loaded_minor = minor;
1051 GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1;
1052 GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1;
1053 GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1;
1054 GLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1;
1055 GLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1;
1056 GLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1;
1057 GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2;
1058 GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2;
1059 GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3;
1060 GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3;
1061 GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3;
1062 GLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3;
1063 if (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 3)) {
1064 max_loaded_major = 3;
1065 max_loaded_minor = 3;
1066 }
1067}
1068
1069int gladLoadGLLoader(GLADloadproc load) {
1070 GLVersion.major = 0; GLVersion.minor = 0;
1071 glGetString = (PFNGLGETSTRINGPROC)load("glGetString");
1072 if(glGetString == NULL) return 0;
1073 if(glGetString(GL_VERSION) == NULL) return 0;
1074 find_coreGL();
1075 load_GL_VERSION_1_0(load);
1076 load_GL_VERSION_1_1(load);
1077 load_GL_VERSION_1_2(load);
1078 load_GL_VERSION_1_3(load);
1079 load_GL_VERSION_1_4(load);
1080 load_GL_VERSION_1_5(load);
1081 load_GL_VERSION_2_0(load);
1082 load_GL_VERSION_2_1(load);
1083 load_GL_VERSION_3_0(load);
1084 load_GL_VERSION_3_1(load);
1085 load_GL_VERSION_3_2(load);
1086 load_GL_VERSION_3_3(load);
1087
1088 find_extensionsGL();
1089 return GLVersion.major != 0 || GLVersion.minor != 0;
1090}
1091
1092static void load_GL_ES_VERSION_2_0(GLADloadproc load) {
1093 if(!GLAD_GL_ES_VERSION_2_0) return;
1094 glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture");
1095 glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader");
1096 glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation");
1097 glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer");
1098 glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer");
1099 glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer");
1100 glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture");
1101 glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor");
1102 glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation");
1103 glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate");
1104 glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc");
1105 glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate");
1106 glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData");
1107 glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData");
1108 glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus");
1109 glad_glClear = (PFNGLCLEARPROC)load("glClear");
1110 glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor");
1111 glad_glClearDepthf = (PFNGLCLEARDEPTHFPROC)load("glClearDepthf");
1112 glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil");
1113 glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask");
1114 glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader");
1115 glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D");
1116 glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D");
1117 glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D");
1118 glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D");
1119 glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram");
1120 glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader");
1121 glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace");
1122 glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers");
1123 glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers");
1124 glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram");
1125 glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers");
1126 glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader");
1127 glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures");
1128 glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc");
1129 glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask");
1130 glad_glDepthRangef = (PFNGLDEPTHRANGEFPROC)load("glDepthRangef");
1131 glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader");
1132 glad_glDisable = (PFNGLDISABLEPROC)load("glDisable");
1133 glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray");
1134 glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays");
1135 glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements");
1136 glad_glEnable = (PFNGLENABLEPROC)load("glEnable");
1137 glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray");
1138 glad_glFinish = (PFNGLFINISHPROC)load("glFinish");
1139 glad_glFlush = (PFNGLFLUSHPROC)load("glFlush");
1140 glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer");
1141 glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D");
1142 glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace");
1143 glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers");
1144 glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap");
1145 glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers");
1146 glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers");
1147 glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures");
1148 glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib");
1149 glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform");
1150 glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders");
1151 glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation");
1152 glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv");
1153 glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv");
1154 glad_glGetError = (PFNGLGETERRORPROC)load("glGetError");
1155 glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv");
1156 glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv");
1157 glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv");
1158 glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv");
1159 glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog");
1160 glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv");
1161 glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv");
1162 glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog");
1163 glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load("glGetShaderPrecisionFormat");
1164 glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource");
1165 glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString");
1166 glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv");
1167 glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv");
1168 glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv");
1169 glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv");
1170 glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation");
1171 glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv");
1172 glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv");
1173 glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv");
1174 glad_glHint = (PFNGLHINTPROC)load("glHint");
1175 glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer");
1176 glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled");
1177 glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer");
1178 glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram");
1179 glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer");
1180 glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader");
1181 glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture");
1182 glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth");
1183 glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram");
1184 glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei");
1185 glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset");
1186 glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels");
1187 glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load("glReleaseShaderCompiler");
1188 glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage");
1189 glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage");
1190 glad_glScissor = (PFNGLSCISSORPROC)load("glScissor");
1191 glad_glShaderBinary = (PFNGLSHADERBINARYPROC)load("glShaderBinary");
1192 glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource");
1193 glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc");
1194 glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate");
1195 glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask");
1196 glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate");
1197 glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp");
1198 glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate");
1199 glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D");
1200 glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf");
1201 glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv");
1202 glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri");
1203 glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv");
1204 glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D");
1205 glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f");
1206 glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv");
1207 glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i");
1208 glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv");
1209 glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f");
1210 glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv");
1211 glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i");
1212 glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv");
1213 glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f");
1214 glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv");
1215 glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i");
1216 glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv");
1217 glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f");
1218 glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv");
1219 glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i");
1220 glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv");
1221 glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv");
1222 glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv");
1223 glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv");
1224 glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram");
1225 glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram");
1226 glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f");
1227 glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv");
1228 glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f");
1229 glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv");
1230 glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f");
1231 glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv");
1232 glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f");
1233 glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv");
1234 glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer");
1235 glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport");
1236}
1237static void load_GL_ES_VERSION_3_0(GLADloadproc load) {
1238 if(!GLAD_GL_ES_VERSION_3_0) return;
1239 glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer");
1240 glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements");
1241 glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D");
1242 glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D");
1243 glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D");
1244 glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D");
1245 glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D");
1246 glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries");
1247 glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries");
1248 glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery");
1249 glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery");
1250 glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery");
1251 glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv");
1252 glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv");
1253 glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer");
1254 glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv");
1255 glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers");
1256 glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv");
1257 glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv");
1258 glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv");
1259 glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv");
1260 glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv");
1261 glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv");
1262 glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer");
1263 glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample");
1264 glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer");
1265 glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange");
1266 glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange");
1267 glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray");
1268 glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays");
1269 glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays");
1270 glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray");
1271 glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v");
1272 glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback");
1273 glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback");
1274 glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange");
1275 glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase");
1276 glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings");
1277 glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load("glGetTransformFeedbackVarying");
1278 glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer");
1279 glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv");
1280 glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv");
1281 glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i");
1282 glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui");
1283 glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv");
1284 glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv");
1285 glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv");
1286 glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation");
1287 glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui");
1288 glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui");
1289 glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui");
1290 glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui");
1291 glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv");
1292 glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv");
1293 glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv");
1294 glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv");
1295 glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv");
1296 glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv");
1297 glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv");
1298 glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi");
1299 glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi");
1300 glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData");
1301 glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices");
1302 glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv");
1303 glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex");
1304 glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv");
1305 glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName");
1306 glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding");
1307 glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced");
1308 glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced");
1309 glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync");
1310 glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync");
1311 glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync");
1312 glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync");
1313 glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync");
1314 glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v");
1315 glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv");
1316 glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v");
1317 glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v");
1318 glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers");
1319 glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers");
1320 glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler");
1321 glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler");
1322 glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri");
1323 glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv");
1324 glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf");
1325 glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv");
1326 glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv");
1327 glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv");
1328 glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor");
1329 glad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load("glBindTransformFeedback");
1330 glad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load("glDeleteTransformFeedbacks");
1331 glad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load("glGenTransformFeedbacks");
1332 glad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load("glIsTransformFeedback");
1333 glad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load("glPauseTransformFeedback");
1334 glad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load("glResumeTransformFeedback");
1335 glad_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load("glGetProgramBinary");
1336 glad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load("glProgramBinary");
1337 glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri");
1338 glad_glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)load("glInvalidateFramebuffer");
1339 glad_glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)load("glInvalidateSubFramebuffer");
1340 glad_glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)load("glTexStorage2D");
1341 glad_glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)load("glTexStorage3D");
1342 glad_glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)load("glGetInternalformativ");
1343}
1344static void find_extensionsGLES2(void) {
1345 get_exts();
1346}
1347
1348static void find_coreGLES2(void) {
1349
1350 /* Thank you @elmindreda
1351 * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176
1352 * https://github.com/glfw/glfw/blob/master/src/context.c#L36
1353 */
1354 int i, major, minor;
1355
1356 const char* version;
1357 const char* prefixes[] = {
1358 "OpenGL ES-CM ",
1359 "OpenGL ES-CL ",
1360 "OpenGL ES ",
1361 NULL
1362 };
1363
1364 version = (const char*) glGetString(GL_VERSION);
1365 if (!version) return;
1366
1367 for (i = 0; prefixes[i]; i++) {
1368 const size_t length = strlen(prefixes[i]);
1369 if (strncmp(version, prefixes[i], length) == 0) {
1370 version += length;
1371 break;
1372 }
1373 }
1374
1375/* PR #18 */
1376#ifdef _MSC_VER
1377 sscanf_s(version, "%d.%d", &major, &minor);
1378#else
1379 sscanf(version, "%d.%d", &major, &minor);
1380#endif
1381
1382 GLVersion.major = major; GLVersion.minor = minor;
1383 max_loaded_major = major; max_loaded_minor = minor;
1384 GLAD_GL_ES_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2;
1385 GLAD_GL_ES_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3;
1386 if (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 0)) {
1387 max_loaded_major = 3;
1388 max_loaded_minor = 0;
1389 }
1390}
1391
1392int gladLoadGLES2Loader(GLADloadproc load) {
1393 GLVersion.major = 0; GLVersion.minor = 0;
1394 glGetString = (PFNGLGETSTRINGPROC)load("glGetString");
1395 if(glGetString == NULL) return 0;
1396 if(glGetString(GL_VERSION) == NULL) return 0;
1397 find_coreGLES2();
1398 load_GL_ES_VERSION_2_0(load);
1399 load_GL_ES_VERSION_3_0(load);
1400
1401 find_extensionsGLES2();
1402 return GLVersion.major != 0 || GLVersion.minor != 0;
1403}
1404