1 #include <GLES3/gles3w.h>
2 
3 #ifdef _WIN32
4 #define WIN32_LEAN_AND_MEAN 1
5 #include <windows.h>
6 #include <EGL/egl.h>
7 
8 static HMODULE libgl;
9 
open_libgl(void)10 static void open_libgl(void)
11 {
12 	libgl = LoadLibraryA("libGLESv2.dll");
13 }
14 
close_libgl(void)15 static void close_libgl(void)
16 {
17 	FreeLibrary(libgl);
18 }
19 
get_proc(const char * proc)20 static void *get_proc(const char *proc)
21 {
22 	void *res;
23 
24 	res = eglGetProcAddress(proc);
25 	if (!res)
26 		res = GetProcAddress(libgl, proc);
27 	return res;
28 }
29 #elif defined(__APPLE__) || defined(__APPLE_CC__)
30 #import <CoreFoundation/CoreFoundation.h>
31 #import <UIKit/UIDevice.h>
32 #import <string>
33 #import <iostream>
34 #import <stdio.h>
35 
36 // Routine to run a system command and retrieve the output.
37 // From http://stackoverflow.com/questions/478898/how-to-execute-a-command-and-get-output-of-command-within-c
exec(const char * cmd)38 std::string exec(const char* cmd) {
39     FILE* pipe = popen(cmd, "r");
40     if (!pipe) return "ERROR";
41     char buffer[128];
42     std::string result = "";
43     while(!feof(pipe)) {
44     	if(fgets(buffer, 128, pipe) != NULL)
45     		result += buffer;
46     }
47     pclose(pipe);
48     return result;
49 }
50 
51 CFBundleRef bundle;
52 CFURLRef bundleURL;
53 
open_libgl(void)54 static void open_libgl(void)
55 {
56     CFStringRef frameworkPath = CFSTR("/System/Library/Frameworks/OpenGLES.framework");
57     NSString *sysVersion = [UIDevice currentDevice].systemVersion;
58     NSArray *sysVersionComponents = [sysVersion componentsSeparatedByString:@"."];
59 
60     BOOL isSimulator = ([[UIDevice currentDevice].model rangeOfString:@"Simulator"].location != NSNotFound);
61     if(isSimulator)
62     {
63         // Ask where Xcode is installed
64         std::string xcodePath = exec("/usr/bin/xcode-select -print-path");
65 
66         // The result contains an end line character. Remove it.
67         size_t pos = xcodePath.find("\n");
68         xcodePath.erase(pos);
69 
70         char tempPath[PATH_MAX];
71         sprintf(tempPath,
72                 "%s/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator%s.%s.sdk/System/Library/Frameworks/OpenGLES.framework",
73                 xcodePath.c_str(),
74                 [[sysVersionComponents objectAtIndex:0] cStringUsingEncoding:NSUTF8StringEncoding],
75                 [[sysVersionComponents objectAtIndex:1] cStringUsingEncoding:NSUTF8StringEncoding]);
76         frameworkPath = CFStringCreateWithCString(kCFAllocatorDefault, tempPath, kCFStringEncodingUTF8);
77     }
78 
79 	bundleURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault,
80                                               frameworkPath,
81                                               kCFURLPOSIXPathStyle, true);
82 
83     CFRelease(frameworkPath);
84 
85 	bundle = CFBundleCreate(kCFAllocatorDefault, bundleURL);
86 
87 	assert(bundle != NULL);
88 }
89 
close_libgl(void)90 static void close_libgl(void)
91 {
92 	CFRelease(bundle);
93 	CFRelease(bundleURL);
94 }
95 
get_proc(const char * proc)96 static void *get_proc(const char *proc)
97 {
98 	void *res;
99 
100 	CFStringRef procname = CFStringCreateWithCString(kCFAllocatorDefault, proc,
101                                                      kCFStringEncodingASCII);
102 	res = CFBundleGetFunctionPointerForName(bundle, procname);
103 	CFRelease(procname);
104 	return res;
105 }
106 #else
107 #include <dlfcn.h>
108 #include <EGL/egl.h>
109 
110 static void *libgl;
111 
open_libgl(void)112 static void open_libgl(void)
113 {
114 	libgl = dlopen("libGLESv2.so", RTLD_LAZY | RTLD_GLOBAL);
115 }
116 
close_libgl(void)117 static void close_libgl(void)
118 {
119 	dlclose(libgl);
120 }
121 
get_proc(const char * proc)122 static void *get_proc(const char *proc)
123 {
124 	void *res;
125     res = dlsym(libgl, proc);
126 	return res;
127 }
128 #endif
129 
130 static struct {
131 	int major, minor;
132 } version;
133 
parse_version(void)134 static int parse_version(void)
135 {
136 	if (!glGetIntegerv)
137 		return -1;
138 
139 	glGetIntegerv(GL_MAJOR_VERSION, &version.major);
140 	glGetIntegerv(GL_MINOR_VERSION, &version.minor);
141 
142 	if (version.major < 3)
143 		return -1;
144 	return 0;
145 }
146 
147 static void load_procs(void);
148 
gleswInit(void)149 int gleswInit(void)
150 {
151 	open_libgl();
152 	load_procs();
153 	close_libgl();
154 	return parse_version();
155 }
156 
gleswIsSupported(int major,int minor)157 int gleswIsSupported(int major, int minor)
158 {
159 	if (major < 3)
160 		return 0;
161 	if (version.major == major)
162 		return version.minor >= minor;
163 	return version.major >= major;
164 }
165 
gleswGetProcAddress(const char * proc)166 void *gleswGetProcAddress(const char *proc)
167 {
168 	return get_proc(proc);
169 }
170 
171 PFNGLACTIVETEXTUREPROC gleswActiveTexture;
172 PFNGLATTACHSHADERPROC gleswAttachShader;
173 PFNGLBINDATTRIBLOCATIONPROC gleswBindAttribLocation;
174 PFNGLBINDBUFFERPROC gleswBindBuffer;
175 PFNGLBINDFRAMEBUFFERPROC gleswBindFramebuffer;
176 PFNGLBINDRENDERBUFFERPROC gleswBindRenderbuffer;
177 PFNGLBINDTEXTUREPROC gleswBindTexture;
178 PFNGLBLENDCOLORPROC gleswBlendColor;
179 PFNGLBLENDEQUATIONPROC gleswBlendEquation;
180 PFNGLBLENDEQUATIONSEPARATEPROC gleswBlendEquationSeparate;
181 PFNGLBLENDFUNCPROC gleswBlendFunc;
182 PFNGLBLENDFUNCSEPARATEPROC gleswBlendFuncSeparate;
183 PFNGLBUFFERDATAPROC gleswBufferData;
184 PFNGLBUFFERSUBDATAPROC gleswBufferSubData;
185 PFNGLCHECKFRAMEBUFFERSTATUSPROC gleswCheckFramebufferStatus;
186 PFNGLCLEARPROC gleswClear;
187 PFNGLCLEARCOLORPROC gleswClearColor;
188 PFNGLCLEARDEPTHFPROC gleswClearDepthf;
189 PFNGLCLEARSTENCILPROC gleswClearStencil;
190 PFNGLCOLORMASKPROC gleswColorMask;
191 PFNGLCOMPILESHADERPROC gleswCompileShader;
192 PFNGLCOMPRESSEDTEXIMAGE2DPROC gleswCompressedTexImage2D;
193 PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC gleswCompressedTexSubImage2D;
194 PFNGLCOPYTEXIMAGE2DPROC gleswCopyTexImage2D;
195 PFNGLCOPYTEXSUBIMAGE2DPROC gleswCopyTexSubImage2D;
196 PFNGLCREATEPROGRAMPROC gleswCreateProgram;
197 PFNGLCREATESHADERPROC gleswCreateShader;
198 PFNGLCULLFACEPROC gleswCullFace;
199 PFNGLDELETEBUFFERSPROC gleswDeleteBuffers;
200 PFNGLDELETEFRAMEBUFFERSPROC gleswDeleteFramebuffers;
201 PFNGLDELETEPROGRAMPROC gleswDeleteProgram;
202 PFNGLDELETERENDERBUFFERSPROC gleswDeleteRenderbuffers;
203 PFNGLDELETESHADERPROC gleswDeleteShader;
204 PFNGLDELETETEXTURESPROC gleswDeleteTextures;
205 PFNGLDEPTHFUNCPROC gleswDepthFunc;
206 PFNGLDEPTHMASKPROC gleswDepthMask;
207 PFNGLDEPTHRANGEFPROC gleswDepthRangef;
208 PFNGLDETACHSHADERPROC gleswDetachShader;
209 PFNGLDISABLEPROC gleswDisable;
210 PFNGLDISABLEVERTEXATTRIBARRAYPROC gleswDisableVertexAttribArray;
211 PFNGLDRAWARRAYSPROC gleswDrawArrays;
212 PFNGLDRAWELEMENTSPROC gleswDrawElements;
213 PFNGLENABLEPROC gleswEnable;
214 PFNGLENABLEVERTEXATTRIBARRAYPROC gleswEnableVertexAttribArray;
215 PFNGLFINISHPROC gleswFinish;
216 PFNGLFLUSHPROC gleswFlush;
217 PFNGLFRAMEBUFFERRENDERBUFFERPROC gleswFramebufferRenderbuffer;
218 PFNGLFRAMEBUFFERTEXTURE2DPROC gleswFramebufferTexture2D;
219 PFNGLFRONTFACEPROC gleswFrontFace;
220 PFNGLGENBUFFERSPROC gleswGenBuffers;
221 PFNGLGENERATEMIPMAPPROC gleswGenerateMipmap;
222 PFNGLGENFRAMEBUFFERSPROC gleswGenFramebuffers;
223 PFNGLGENRENDERBUFFERSPROC gleswGenRenderbuffers;
224 PFNGLGENTEXTURESPROC gleswGenTextures;
225 PFNGLGETACTIVEATTRIBPROC gleswGetActiveAttrib;
226 PFNGLGETACTIVEUNIFORMPROC gleswGetActiveUniform;
227 PFNGLGETATTACHEDSHADERSPROC gleswGetAttachedShaders;
228 PFNGLGETATTRIBLOCATIONPROC gleswGetAttribLocation;
229 PFNGLGETBOOLEANVPROC gleswGetBooleanv;
230 PFNGLGETBUFFERPARAMETERIVPROC gleswGetBufferParameteriv;
231 PFNGLGETERRORPROC gleswGetError;
232 PFNGLGETFLOATVPROC gleswGetFloatv;
233 PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC gleswGetFramebufferAttachmentParameteriv;
234 PFNGLGETINTEGERVPROC gleswGetIntegerv;
235 PFNGLGETPROGRAMIVPROC gleswGetProgramiv;
236 PFNGLGETPROGRAMINFOLOGPROC gleswGetProgramInfoLog;
237 PFNGLGETRENDERBUFFERPARAMETERIVPROC gleswGetRenderbufferParameteriv;
238 PFNGLGETSHADERIVPROC gleswGetShaderiv;
239 PFNGLGETSHADERINFOLOGPROC gleswGetShaderInfoLog;
240 PFNGLGETSHADERPRECISIONFORMATPROC gleswGetShaderPrecisionFormat;
241 PFNGLGETSHADERSOURCEPROC gleswGetShaderSource;
242 PFNGLGETSTRINGPROC gleswGetString;
243 PFNGLGETTEXPARAMETERFVPROC gleswGetTexParameterfv;
244 PFNGLGETTEXPARAMETERIVPROC gleswGetTexParameteriv;
245 PFNGLGETUNIFORMFVPROC gleswGetUniformfv;
246 PFNGLGETUNIFORMIVPROC gleswGetUniformiv;
247 PFNGLGETUNIFORMLOCATIONPROC gleswGetUniformLocation;
248 PFNGLGETVERTEXATTRIBFVPROC gleswGetVertexAttribfv;
249 PFNGLGETVERTEXATTRIBIVPROC gleswGetVertexAttribiv;
250 PFNGLGETVERTEXATTRIBPOINTERVPROC gleswGetVertexAttribPointerv;
251 PFNGLHINTPROC gleswHint;
252 PFNGLISBUFFERPROC gleswIsBuffer;
253 PFNGLISENABLEDPROC gleswIsEnabled;
254 PFNGLISFRAMEBUFFERPROC gleswIsFramebuffer;
255 PFNGLISPROGRAMPROC gleswIsProgram;
256 PFNGLISRENDERBUFFERPROC gleswIsRenderbuffer;
257 PFNGLISSHADERPROC gleswIsShader;
258 PFNGLISTEXTUREPROC gleswIsTexture;
259 PFNGLLINEWIDTHPROC gleswLineWidth;
260 PFNGLLINKPROGRAMPROC gleswLinkProgram;
261 PFNGLPIXELSTOREIPROC gleswPixelStorei;
262 PFNGLPOLYGONOFFSETPROC gleswPolygonOffset;
263 PFNGLREADPIXELSPROC gleswReadPixels;
264 PFNGLRELEASESHADERCOMPILERPROC gleswReleaseShaderCompiler;
265 PFNGLRENDERBUFFERSTORAGEPROC gleswRenderbufferStorage;
266 PFNGLSAMPLECOVERAGEPROC gleswSampleCoverage;
267 PFNGLSCISSORPROC gleswScissor;
268 PFNGLSHADERBINARYPROC gleswShaderBinary;
269 PFNGLSHADERSOURCEPROC gleswShaderSource;
270 PFNGLSTENCILFUNCPROC gleswStencilFunc;
271 PFNGLSTENCILFUNCSEPARATEPROC gleswStencilFuncSeparate;
272 PFNGLSTENCILMASKPROC gleswStencilMask;
273 PFNGLSTENCILMASKSEPARATEPROC gleswStencilMaskSeparate;
274 PFNGLSTENCILOPPROC gleswStencilOp;
275 PFNGLSTENCILOPSEPARATEPROC gleswStencilOpSeparate;
276 PFNGLTEXIMAGE2DPROC gleswTexImage2D;
277 PFNGLTEXPARAMETERFPROC gleswTexParameterf;
278 PFNGLTEXPARAMETERFVPROC gleswTexParameterfv;
279 PFNGLTEXPARAMETERIPROC gleswTexParameteri;
280 PFNGLTEXPARAMETERIVPROC gleswTexParameteriv;
281 PFNGLTEXSUBIMAGE2DPROC gleswTexSubImage2D;
282 PFNGLUNIFORM1FPROC gleswUniform1f;
283 PFNGLUNIFORM1FVPROC gleswUniform1fv;
284 PFNGLUNIFORM1IPROC gleswUniform1i;
285 PFNGLUNIFORM1IVPROC gleswUniform1iv;
286 PFNGLUNIFORM2FPROC gleswUniform2f;
287 PFNGLUNIFORM2FVPROC gleswUniform2fv;
288 PFNGLUNIFORM2IPROC gleswUniform2i;
289 PFNGLUNIFORM2IVPROC gleswUniform2iv;
290 PFNGLUNIFORM3FPROC gleswUniform3f;
291 PFNGLUNIFORM3FVPROC gleswUniform3fv;
292 PFNGLUNIFORM3IPROC gleswUniform3i;
293 PFNGLUNIFORM3IVPROC gleswUniform3iv;
294 PFNGLUNIFORM4FPROC gleswUniform4f;
295 PFNGLUNIFORM4FVPROC gleswUniform4fv;
296 PFNGLUNIFORM4IPROC gleswUniform4i;
297 PFNGLUNIFORM4IVPROC gleswUniform4iv;
298 PFNGLUNIFORMMATRIX2FVPROC gleswUniformMatrix2fv;
299 PFNGLUNIFORMMATRIX3FVPROC gleswUniformMatrix3fv;
300 PFNGLUNIFORMMATRIX4FVPROC gleswUniformMatrix4fv;
301 PFNGLUSEPROGRAMPROC gleswUseProgram;
302 PFNGLVALIDATEPROGRAMPROC gleswValidateProgram;
303 PFNGLVERTEXATTRIB1FPROC gleswVertexAttrib1f;
304 PFNGLVERTEXATTRIB1FVPROC gleswVertexAttrib1fv;
305 PFNGLVERTEXATTRIB2FPROC gleswVertexAttrib2f;
306 PFNGLVERTEXATTRIB2FVPROC gleswVertexAttrib2fv;
307 PFNGLVERTEXATTRIB3FPROC gleswVertexAttrib3f;
308 PFNGLVERTEXATTRIB3FVPROC gleswVertexAttrib3fv;
309 PFNGLVERTEXATTRIB4FPROC gleswVertexAttrib4f;
310 PFNGLVERTEXATTRIB4FVPROC gleswVertexAttrib4fv;
311 PFNGLVERTEXATTRIBPOINTERPROC gleswVertexAttribPointer;
312 PFNGLVIEWPORTPROC gleswViewport;
313 PFNGLREADBUFFERPROC gleswReadBuffer;
314 PFNGLDRAWRANGEELEMENTSPROC gleswDrawRangeElements;
315 PFNGLTEXIMAGE3DPROC gleswTexImage3D;
316 PFNGLTEXSUBIMAGE3DPROC gleswTexSubImage3D;
317 PFNGLCOPYTEXSUBIMAGE3DPROC gleswCopyTexSubImage3D;
318 PFNGLCOMPRESSEDTEXIMAGE3DPROC gleswCompressedTexImage3D;
319 PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC gleswCompressedTexSubImage3D;
320 PFNGLGENQUERIESPROC gleswGenQueries;
321 PFNGLDELETEQUERIESPROC gleswDeleteQueries;
322 PFNGLISQUERYPROC gleswIsQuery;
323 PFNGLBEGINQUERYPROC gleswBeginQuery;
324 PFNGLENDQUERYPROC gleswEndQuery;
325 PFNGLGETQUERYIVPROC gleswGetQueryiv;
326 PFNGLGETQUERYOBJECTUIVPROC gleswGetQueryObjectuiv;
327 PFNGLUNMAPBUFFERPROC gleswUnmapBuffer;
328 PFNGLGETBUFFERPOINTERVPROC gleswGetBufferPointerv;
329 PFNGLDRAWBUFFERSPROC gleswDrawBuffers;
330 PFNGLUNIFORMMATRIX2X3FVPROC gleswUniformMatrix2x3fv;
331 PFNGLUNIFORMMATRIX3X2FVPROC gleswUniformMatrix3x2fv;
332 PFNGLUNIFORMMATRIX2X4FVPROC gleswUniformMatrix2x4fv;
333 PFNGLUNIFORMMATRIX4X2FVPROC gleswUniformMatrix4x2fv;
334 PFNGLUNIFORMMATRIX3X4FVPROC gleswUniformMatrix3x4fv;
335 PFNGLUNIFORMMATRIX4X3FVPROC gleswUniformMatrix4x3fv;
336 PFNGLBLITFRAMEBUFFERPROC gleswBlitFramebuffer;
337 PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC gleswRenderbufferStorageMultisample;
338 PFNGLFRAMEBUFFERTEXTURELAYERPROC gleswFramebufferTextureLayer;
339 PFNGLMAPBUFFERRANGEPROC gleswMapBufferRange;
340 PFNGLFLUSHMAPPEDBUFFERRANGEPROC gleswFlushMappedBufferRange;
341 PFNGLBINDVERTEXARRAYPROC gleswBindVertexArray;
342 PFNGLDELETEVERTEXARRAYSPROC gleswDeleteVertexArrays;
343 PFNGLGENVERTEXARRAYSPROC gleswGenVertexArrays;
344 PFNGLISVERTEXARRAYPROC gleswIsVertexArray;
345 PFNGLGETINTEGERI_VPROC gleswGetIntegeri_v;
346 PFNGLBEGINTRANSFORMFEEDBACKPROC gleswBeginTransformFeedback;
347 PFNGLENDTRANSFORMFEEDBACKPROC gleswEndTransformFeedback;
348 PFNGLBINDBUFFERRANGEPROC gleswBindBufferRange;
349 PFNGLBINDBUFFERBASEPROC gleswBindBufferBase;
350 PFNGLTRANSFORMFEEDBACKVARYINGSPROC gleswTransformFeedbackVaryings;
351 PFNGLGETTRANSFORMFEEDBACKVARYINGPROC gleswGetTransformFeedbackVarying;
352 PFNGLVERTEXATTRIBIPOINTERPROC gleswVertexAttribIPointer;
353 PFNGLGETVERTEXATTRIBIIVPROC gleswGetVertexAttribIiv;
354 PFNGLGETVERTEXATTRIBIUIVPROC gleswGetVertexAttribIuiv;
355 PFNGLVERTEXATTRIBI4IPROC gleswVertexAttribI4i;
356 PFNGLVERTEXATTRIBI4UIPROC gleswVertexAttribI4ui;
357 PFNGLVERTEXATTRIBI4IVPROC gleswVertexAttribI4iv;
358 PFNGLVERTEXATTRIBI4UIVPROC gleswVertexAttribI4uiv;
359 PFNGLGETUNIFORMUIVPROC gleswGetUniformuiv;
360 PFNGLGETFRAGDATALOCATIONPROC gleswGetFragDataLocation;
361 PFNGLUNIFORM1UIPROC gleswUniform1ui;
362 PFNGLUNIFORM2UIPROC gleswUniform2ui;
363 PFNGLUNIFORM3UIPROC gleswUniform3ui;
364 PFNGLUNIFORM4UIPROC gleswUniform4ui;
365 PFNGLUNIFORM1UIVPROC gleswUniform1uiv;
366 PFNGLUNIFORM2UIVPROC gleswUniform2uiv;
367 PFNGLUNIFORM3UIVPROC gleswUniform3uiv;
368 PFNGLUNIFORM4UIVPROC gleswUniform4uiv;
369 PFNGLCLEARBUFFERIVPROC gleswClearBufferiv;
370 PFNGLCLEARBUFFERUIVPROC gleswClearBufferuiv;
371 PFNGLCLEARBUFFERFVPROC gleswClearBufferfv;
372 PFNGLCLEARBUFFERFIPROC gleswClearBufferfi;
373 PFNGLGETSTRINGIPROC gleswGetStringi;
374 PFNGLCOPYBUFFERSUBDATAPROC gleswCopyBufferSubData;
375 PFNGLGETUNIFORMINDICESPROC gleswGetUniformIndices;
376 PFNGLGETACTIVEUNIFORMSIVPROC gleswGetActiveUniformsiv;
377 PFNGLGETUNIFORMBLOCKINDEXPROC gleswGetUniformBlockIndex;
378 PFNGLGETACTIVEUNIFORMBLOCKIVPROC gleswGetActiveUniformBlockiv;
379 PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC gleswGetActiveUniformBlockName;
380 PFNGLUNIFORMBLOCKBINDINGPROC gleswUniformBlockBinding;
381 PFNGLDRAWARRAYSINSTANCEDPROC gleswDrawArraysInstanced;
382 PFNGLDRAWELEMENTSINSTANCEDPROC gleswDrawElementsInstanced;
383 PFNGLFENCESYNCPROC gleswFenceSync;
384 PFNGLISSYNCPROC gleswIsSync;
385 PFNGLDELETESYNCPROC gleswDeleteSync;
386 PFNGLCLIENTWAITSYNCPROC gleswClientWaitSync;
387 PFNGLWAITSYNCPROC gleswWaitSync;
388 PFNGLGETINTEGER64VPROC gleswGetInteger64v;
389 PFNGLGETSYNCIVPROC gleswGetSynciv;
390 PFNGLGETINTEGER64I_VPROC gleswGetInteger64i_v;
391 PFNGLGETBUFFERPARAMETERI64VPROC gleswGetBufferParameteri64v;
392 PFNGLGENSAMPLERSPROC gleswGenSamplers;
393 PFNGLDELETESAMPLERSPROC gleswDeleteSamplers;
394 PFNGLISSAMPLERPROC gleswIsSampler;
395 PFNGLBINDSAMPLERPROC gleswBindSampler;
396 PFNGLSAMPLERPARAMETERIPROC gleswSamplerParameteri;
397 PFNGLSAMPLERPARAMETERIVPROC gleswSamplerParameteriv;
398 PFNGLSAMPLERPARAMETERFPROC gleswSamplerParameterf;
399 PFNGLSAMPLERPARAMETERFVPROC gleswSamplerParameterfv;
400 PFNGLGETSAMPLERPARAMETERIVPROC gleswGetSamplerParameteriv;
401 PFNGLGETSAMPLERPARAMETERFVPROC gleswGetSamplerParameterfv;
402 PFNGLVERTEXATTRIBDIVISORPROC gleswVertexAttribDivisor;
403 PFNGLBINDTRANSFORMFEEDBACKPROC gleswBindTransformFeedback;
404 PFNGLDELETETRANSFORMFEEDBACKSPROC gleswDeleteTransformFeedbacks;
405 PFNGLGENTRANSFORMFEEDBACKSPROC gleswGenTransformFeedbacks;
406 PFNGLISTRANSFORMFEEDBACKPROC gleswIsTransformFeedback;
407 PFNGLPAUSETRANSFORMFEEDBACKPROC gleswPauseTransformFeedback;
408 PFNGLRESUMETRANSFORMFEEDBACKPROC gleswResumeTransformFeedback;
409 PFNGLGETPROGRAMBINARYPROC gleswGetProgramBinary;
410 PFNGLPROGRAMBINARYPROC gleswProgramBinary;
411 PFNGLPROGRAMPARAMETERIPROC gleswProgramParameteri;
412 PFNGLINVALIDATEFRAMEBUFFERPROC gleswInvalidateFramebuffer;
413 PFNGLINVALIDATESUBFRAMEBUFFERPROC gleswInvalidateSubFramebuffer;
414 PFNGLTEXSTORAGE2DPROC gleswTexStorage2D;
415 PFNGLTEXSTORAGE3DPROC gleswTexStorage3D;
416 PFNGLGETINTERNALFORMATIVPROC gleswGetInternalformativ;
417 PFNGLUSEPROGRAMSTAGESEXTPROC gleswUseProgramStagesEXT;
418 PFNGLACTIVESHADERPROGRAMEXTPROC gleswActiveShaderProgramEXT;
419 PFNGLCREATESHADERPROGRAMVEXTPROC gleswCreateShaderProgramvEXT;
420 PFNGLBINDPROGRAMPIPELINEEXTPROC gleswBindProgramPipelineEXT;
421 PFNGLDELETEPROGRAMPIPELINESEXTPROC gleswDeleteProgramPipelinesEXT;
422 PFNGLGENPROGRAMPIPELINESEXTPROC gleswGenProgramPipelinesEXT;
423 PFNGLISPROGRAMPIPELINEEXTPROC gleswIsProgramPipelineEXT;
424 PFNGLPROGRAMPARAMETERIEXTPROC gleswProgramParameteriEXT;
425 PFNGLGETPROGRAMPIPELINEIVEXTPROC gleswGetProgramPipelineivEXT;
426 PFNGLPROGRAMUNIFORM1IEXTPROC gleswProgramUniform1iEXT;
427 PFNGLPROGRAMUNIFORM2IEXTPROC gleswProgramUniform2iEXT;
428 PFNGLPROGRAMUNIFORM3IEXTPROC gleswProgramUniform3iEXT;
429 PFNGLPROGRAMUNIFORM4IEXTPROC gleswProgramUniform4iEXT;
430 PFNGLPROGRAMUNIFORM1FEXTPROC gleswProgramUniform1fEXT;
431 PFNGLPROGRAMUNIFORM2FEXTPROC gleswProgramUniform2fEXT;
432 PFNGLPROGRAMUNIFORM3FEXTPROC gleswProgramUniform3fEXT;
433 PFNGLPROGRAMUNIFORM4FEXTPROC gleswProgramUniform4fEXT;
434 PFNGLPROGRAMUNIFORM1IVEXTPROC gleswProgramUniform1ivEXT;
435 PFNGLPROGRAMUNIFORM2IVEXTPROC gleswProgramUniform2ivEXT;
436 PFNGLPROGRAMUNIFORM3IVEXTPROC gleswProgramUniform3ivEXT;
437 PFNGLPROGRAMUNIFORM4IVEXTPROC gleswProgramUniform4ivEXT;
438 PFNGLPROGRAMUNIFORM1FVEXTPROC gleswProgramUniform1fvEXT;
439 PFNGLPROGRAMUNIFORM2FVEXTPROC gleswProgramUniform2fvEXT;
440 PFNGLPROGRAMUNIFORM3FVEXTPROC gleswProgramUniform3fvEXT;
441 PFNGLPROGRAMUNIFORM4FVEXTPROC gleswProgramUniform4fvEXT;
442 PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC gleswProgramUniformMatrix2fvEXT;
443 PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC gleswProgramUniformMatrix3fvEXT;
444 PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC gleswProgramUniformMatrix4fvEXT;
445 PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC gleswProgramUniformMatrix2x3fvEXT;
446 PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC gleswProgramUniformMatrix3x2fvEXT;
447 PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC gleswProgramUniformMatrix2x4fvEXT;
448 PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC gleswProgramUniformMatrix4x2fvEXT;
449 PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC gleswProgramUniformMatrix3x4fvEXT;
450 PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC gleswProgramUniformMatrix4x3fvEXT;
451 PFNGLVALIDATEPROGRAMPIPELINEEXTPROC gleswValidateProgramPipelineEXT;
452 PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC gleswGetProgramPipelineInfoLogEXT;
453 PFNGLLABELOBJECTEXTPROC gleswLabelObjectEXT;
454 PFNGLGETOBJECTLABELEXTPROC gleswGetObjectLabelEXT;
455 PFNGLINSERTEVENTMARKEREXTPROC gleswInsertEventMarkerEXT;
456 PFNGLPUSHGROUPMARKEREXTPROC gleswPushGroupMarkerEXT;
457 PFNGLPOPGROUPMARKEREXTPROC gleswPopGroupMarkerEXT;
458 
load_procs(void)459 static void load_procs(void)
460 {
461 	gleswActiveTexture = (PFNGLACTIVETEXTUREPROC) get_proc("glActiveTexture");
462 	gleswAttachShader = (PFNGLATTACHSHADERPROC) get_proc("glAttachShader");
463 	gleswBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC) get_proc("glBindAttribLocation");
464 	gleswBindBuffer = (PFNGLBINDBUFFERPROC) get_proc("glBindBuffer");
465 	gleswBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC) get_proc("glBindFramebuffer");
466 	gleswBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC) get_proc("glBindRenderbuffer");
467 	gleswBindTexture = (PFNGLBINDTEXTUREPROC) get_proc("glBindTexture");
468 	gleswBlendColor = (PFNGLBLENDCOLORPROC) get_proc("glBlendColor");
469 	gleswBlendEquation = (PFNGLBLENDEQUATIONPROC) get_proc("glBlendEquation");
470 	gleswBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC) get_proc("glBlendEquationSeparate");
471 	gleswBlendFunc = (PFNGLBLENDFUNCPROC) get_proc("glBlendFunc");
472 	gleswBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC) get_proc("glBlendFuncSeparate");
473 	gleswBufferData = (PFNGLBUFFERDATAPROC) get_proc("glBufferData");
474 	gleswBufferSubData = (PFNGLBUFFERSUBDATAPROC) get_proc("glBufferSubData");
475 	gleswCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC) get_proc("glCheckFramebufferStatus");
476 	gleswClear = (PFNGLCLEARPROC) get_proc("glClear");
477 	gleswClearColor = (PFNGLCLEARCOLORPROC) get_proc("glClearColor");
478 	gleswClearDepthf = (PFNGLCLEARDEPTHFPROC) get_proc("glClearDepthf");
479 	gleswClearStencil = (PFNGLCLEARSTENCILPROC) get_proc("glClearStencil");
480 	gleswColorMask = (PFNGLCOLORMASKPROC) get_proc("glColorMask");
481 	gleswCompileShader = (PFNGLCOMPILESHADERPROC) get_proc("glCompileShader");
482 	gleswCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC) get_proc("glCompressedTexImage2D");
483 	gleswCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) get_proc("glCompressedTexSubImage2D");
484 	gleswCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC) get_proc("glCopyTexImage2D");
485 	gleswCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC) get_proc("glCopyTexSubImage2D");
486 	gleswCreateProgram = (PFNGLCREATEPROGRAMPROC) get_proc("glCreateProgram");
487 	gleswCreateShader = (PFNGLCREATESHADERPROC) get_proc("glCreateShader");
488 	gleswCullFace = (PFNGLCULLFACEPROC) get_proc("glCullFace");
489 	gleswDeleteBuffers = (PFNGLDELETEBUFFERSPROC) get_proc("glDeleteBuffers");
490 	gleswDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC) get_proc("glDeleteFramebuffers");
491 	gleswDeleteProgram = (PFNGLDELETEPROGRAMPROC) get_proc("glDeleteProgram");
492 	gleswDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC) get_proc("glDeleteRenderbuffers");
493 	gleswDeleteShader = (PFNGLDELETESHADERPROC) get_proc("glDeleteShader");
494 	gleswDeleteTextures = (PFNGLDELETETEXTURESPROC) get_proc("glDeleteTextures");
495 	gleswDepthFunc = (PFNGLDEPTHFUNCPROC) get_proc("glDepthFunc");
496 	gleswDepthMask = (PFNGLDEPTHMASKPROC) get_proc("glDepthMask");
497 	gleswDepthRangef = (PFNGLDEPTHRANGEFPROC) get_proc("glDepthRangef");
498 	gleswDetachShader = (PFNGLDETACHSHADERPROC) get_proc("glDetachShader");
499 	gleswDisable = (PFNGLDISABLEPROC) get_proc("glDisable");
500 	gleswDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC) get_proc("glDisableVertexAttribArray");
501 	gleswDrawArrays = (PFNGLDRAWARRAYSPROC) get_proc("glDrawArrays");
502 	gleswDrawElements = (PFNGLDRAWELEMENTSPROC) get_proc("glDrawElements");
503 	gleswEnable = (PFNGLENABLEPROC) get_proc("glEnable");
504 	gleswEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC) get_proc("glEnableVertexAttribArray");
505 	gleswFinish = (PFNGLFINISHPROC) get_proc("glFinish");
506 	gleswFlush = (PFNGLFLUSHPROC) get_proc("glFlush");
507 	gleswFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC) get_proc("glFramebufferRenderbuffer");
508 	gleswFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC) get_proc("glFramebufferTexture2D");
509 	gleswFrontFace = (PFNGLFRONTFACEPROC) get_proc("glFrontFace");
510 	gleswGenBuffers = (PFNGLGENBUFFERSPROC) get_proc("glGenBuffers");
511 	gleswGenerateMipmap = (PFNGLGENERATEMIPMAPPROC) get_proc("glGenerateMipmap");
512 	gleswGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC) get_proc("glGenFramebuffers");
513 	gleswGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC) get_proc("glGenRenderbuffers");
514 	gleswGenTextures = (PFNGLGENTEXTURESPROC) get_proc("glGenTextures");
515 	gleswGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC) get_proc("glGetActiveAttrib");
516 	gleswGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC) get_proc("glGetActiveUniform");
517 	gleswGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC) get_proc("glGetAttachedShaders");
518 	gleswGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC) get_proc("glGetAttribLocation");
519 	gleswGetBooleanv = (PFNGLGETBOOLEANVPROC) get_proc("glGetBooleanv");
520 	gleswGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC) get_proc("glGetBufferParameteriv");
521 	gleswGetError = (PFNGLGETERRORPROC) get_proc("glGetError");
522 	gleswGetFloatv = (PFNGLGETFLOATVPROC) get_proc("glGetFloatv");
523 	gleswGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) get_proc("glGetFramebufferAttachmentParameteriv");
524 	gleswGetIntegerv = (PFNGLGETINTEGERVPROC) get_proc("glGetIntegerv");
525 	gleswGetProgramiv = (PFNGLGETPROGRAMIVPROC) get_proc("glGetProgramiv");
526 	gleswGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) get_proc("glGetProgramInfoLog");
527 	gleswGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC) get_proc("glGetRenderbufferParameteriv");
528 	gleswGetShaderiv = (PFNGLGETSHADERIVPROC) get_proc("glGetShaderiv");
529 	gleswGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) get_proc("glGetShaderInfoLog");
530 	gleswGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC) get_proc("glGetShaderPrecisionFormat");
531 	gleswGetShaderSource = (PFNGLGETSHADERSOURCEPROC) get_proc("glGetShaderSource");
532 	gleswGetString = (PFNGLGETSTRINGPROC) get_proc("glGetString");
533 	gleswGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC) get_proc("glGetTexParameterfv");
534 	gleswGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC) get_proc("glGetTexParameteriv");
535 	gleswGetUniformfv = (PFNGLGETUNIFORMFVPROC) get_proc("glGetUniformfv");
536 	gleswGetUniformiv = (PFNGLGETUNIFORMIVPROC) get_proc("glGetUniformiv");
537 	gleswGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) get_proc("glGetUniformLocation");
538 	gleswGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC) get_proc("glGetVertexAttribfv");
539 	gleswGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC) get_proc("glGetVertexAttribiv");
540 	gleswGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC) get_proc("glGetVertexAttribPointerv");
541 	gleswHint = (PFNGLHINTPROC) get_proc("glHint");
542 	gleswIsBuffer = (PFNGLISBUFFERPROC) get_proc("glIsBuffer");
543 	gleswIsEnabled = (PFNGLISENABLEDPROC) get_proc("glIsEnabled");
544 	gleswIsFramebuffer = (PFNGLISFRAMEBUFFERPROC) get_proc("glIsFramebuffer");
545 	gleswIsProgram = (PFNGLISPROGRAMPROC) get_proc("glIsProgram");
546 	gleswIsRenderbuffer = (PFNGLISRENDERBUFFERPROC) get_proc("glIsRenderbuffer");
547 	gleswIsShader = (PFNGLISSHADERPROC) get_proc("glIsShader");
548 	gleswIsTexture = (PFNGLISTEXTUREPROC) get_proc("glIsTexture");
549 	gleswLineWidth = (PFNGLLINEWIDTHPROC) get_proc("glLineWidth");
550 	gleswLinkProgram = (PFNGLLINKPROGRAMPROC) get_proc("glLinkProgram");
551 	gleswPixelStorei = (PFNGLPIXELSTOREIPROC) get_proc("glPixelStorei");
552 	gleswPolygonOffset = (PFNGLPOLYGONOFFSETPROC) get_proc("glPolygonOffset");
553 	gleswReadPixels = (PFNGLREADPIXELSPROC) get_proc("glReadPixels");
554 	gleswReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC) get_proc("glReleaseShaderCompiler");
555 	gleswRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC) get_proc("glRenderbufferStorage");
556 	gleswSampleCoverage = (PFNGLSAMPLECOVERAGEPROC) get_proc("glSampleCoverage");
557 	gleswScissor = (PFNGLSCISSORPROC) get_proc("glScissor");
558 	gleswShaderBinary = (PFNGLSHADERBINARYPROC) get_proc("glShaderBinary");
559 	gleswShaderSource = (PFNGLSHADERSOURCEPROC) get_proc("glShaderSource");
560 	gleswStencilFunc = (PFNGLSTENCILFUNCPROC) get_proc("glStencilFunc");
561 	gleswStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC) get_proc("glStencilFuncSeparate");
562 	gleswStencilMask = (PFNGLSTENCILMASKPROC) get_proc("glStencilMask");
563 	gleswStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC) get_proc("glStencilMaskSeparate");
564 	gleswStencilOp = (PFNGLSTENCILOPPROC) get_proc("glStencilOp");
565 	gleswStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC) get_proc("glStencilOpSeparate");
566 	gleswTexImage2D = (PFNGLTEXIMAGE2DPROC) get_proc("glTexImage2D");
567 	gleswTexParameterf = (PFNGLTEXPARAMETERFPROC) get_proc("glTexParameterf");
568 	gleswTexParameterfv = (PFNGLTEXPARAMETERFVPROC) get_proc("glTexParameterfv");
569 	gleswTexParameteri = (PFNGLTEXPARAMETERIPROC) get_proc("glTexParameteri");
570 	gleswTexParameteriv = (PFNGLTEXPARAMETERIVPROC) get_proc("glTexParameteriv");
571 	gleswTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC) get_proc("glTexSubImage2D");
572 	gleswUniform1f = (PFNGLUNIFORM1FPROC) get_proc("glUniform1f");
573 	gleswUniform1fv = (PFNGLUNIFORM1FVPROC) get_proc("glUniform1fv");
574 	gleswUniform1i = (PFNGLUNIFORM1IPROC) get_proc("glUniform1i");
575 	gleswUniform1iv = (PFNGLUNIFORM1IVPROC) get_proc("glUniform1iv");
576 	gleswUniform2f = (PFNGLUNIFORM2FPROC) get_proc("glUniform2f");
577 	gleswUniform2fv = (PFNGLUNIFORM2FVPROC) get_proc("glUniform2fv");
578 	gleswUniform2i = (PFNGLUNIFORM2IPROC) get_proc("glUniform2i");
579 	gleswUniform2iv = (PFNGLUNIFORM2IVPROC) get_proc("glUniform2iv");
580 	gleswUniform3f = (PFNGLUNIFORM3FPROC) get_proc("glUniform3f");
581 	gleswUniform3fv = (PFNGLUNIFORM3FVPROC) get_proc("glUniform3fv");
582 	gleswUniform3i = (PFNGLUNIFORM3IPROC) get_proc("glUniform3i");
583 	gleswUniform3iv = (PFNGLUNIFORM3IVPROC) get_proc("glUniform3iv");
584 	gleswUniform4f = (PFNGLUNIFORM4FPROC) get_proc("glUniform4f");
585 	gleswUniform4fv = (PFNGLUNIFORM4FVPROC) get_proc("glUniform4fv");
586 	gleswUniform4i = (PFNGLUNIFORM4IPROC) get_proc("glUniform4i");
587 	gleswUniform4iv = (PFNGLUNIFORM4IVPROC) get_proc("glUniform4iv");
588 	gleswUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC) get_proc("glUniformMatrix2fv");
589 	gleswUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC) get_proc("glUniformMatrix3fv");
590 	gleswUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC) get_proc("glUniformMatrix4fv");
591 	gleswUseProgram = (PFNGLUSEPROGRAMPROC) get_proc("glUseProgram");
592 	gleswValidateProgram = (PFNGLVALIDATEPROGRAMPROC) get_proc("glValidateProgram");
593 	gleswVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC) get_proc("glVertexAttrib1f");
594 	gleswVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC) get_proc("glVertexAttrib1fv");
595 	gleswVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC) get_proc("glVertexAttrib2f");
596 	gleswVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC) get_proc("glVertexAttrib2fv");
597 	gleswVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC) get_proc("glVertexAttrib3f");
598 	gleswVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC) get_proc("glVertexAttrib3fv");
599 	gleswVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC) get_proc("glVertexAttrib4f");
600 	gleswVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC) get_proc("glVertexAttrib4fv");
601 	gleswVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) get_proc("glVertexAttribPointer");
602 	gleswViewport = (PFNGLVIEWPORTPROC) get_proc("glViewport");
603 	gleswReadBuffer = (PFNGLREADBUFFERPROC) get_proc("glReadBuffer");
604 	gleswDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC) get_proc("glDrawRangeElements");
605 	gleswTexImage3D = (PFNGLTEXIMAGE3DPROC) get_proc("glTexImage3D");
606 	gleswTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC) get_proc("glTexSubImage3D");
607 	gleswCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC) get_proc("glCopyTexSubImage3D");
608 	gleswCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC) get_proc("glCompressedTexImage3D");
609 	gleswCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) get_proc("glCompressedTexSubImage3D");
610 	gleswGenQueries = (PFNGLGENQUERIESPROC) get_proc("glGenQueries");
611 	gleswDeleteQueries = (PFNGLDELETEQUERIESPROC) get_proc("glDeleteQueries");
612 	gleswIsQuery = (PFNGLISQUERYPROC) get_proc("glIsQuery");
613 	gleswBeginQuery = (PFNGLBEGINQUERYPROC) get_proc("glBeginQuery");
614 	gleswEndQuery = (PFNGLENDQUERYPROC) get_proc("glEndQuery");
615 	gleswGetQueryiv = (PFNGLGETQUERYIVPROC) get_proc("glGetQueryiv");
616 	gleswGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC) get_proc("glGetQueryObjectuiv");
617 	gleswUnmapBuffer = (PFNGLUNMAPBUFFERPROC) get_proc("glUnmapBuffer");
618 	gleswGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC) get_proc("glGetBufferPointerv");
619 	gleswDrawBuffers = (PFNGLDRAWBUFFERSPROC) get_proc("glDrawBuffers");
620 	gleswUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC) get_proc("glUniformMatrix2x3fv");
621 	gleswUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC) get_proc("glUniformMatrix3x2fv");
622 	gleswUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC) get_proc("glUniformMatrix2x4fv");
623 	gleswUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC) get_proc("glUniformMatrix4x2fv");
624 	gleswUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC) get_proc("glUniformMatrix3x4fv");
625 	gleswUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC) get_proc("glUniformMatrix4x3fv");
626 	gleswBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC) get_proc("glBlitFramebuffer");
627 	gleswRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) get_proc("glRenderbufferStorageMultisample");
628 	gleswFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC) get_proc("glFramebufferTextureLayer");
629 	gleswMapBufferRange = (PFNGLMAPBUFFERRANGEPROC) get_proc("glMapBufferRange");
630 	gleswFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC) get_proc("glFlushMappedBufferRange");
631 	gleswBindVertexArray = (PFNGLBINDVERTEXARRAYPROC) get_proc("glBindVertexArray");
632 	gleswDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC) get_proc("glDeleteVertexArrays");
633 	gleswGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC) get_proc("glGenVertexArrays");
634 	gleswIsVertexArray = (PFNGLISVERTEXARRAYPROC) get_proc("glIsVertexArray");
635 	gleswGetIntegeri_v = (PFNGLGETINTEGERI_VPROC) get_proc("glGetIntegeri_v");
636 	gleswBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC) get_proc("glBeginTransformFeedback");
637 	gleswEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC) get_proc("glEndTransformFeedback");
638 	gleswBindBufferRange = (PFNGLBINDBUFFERRANGEPROC) get_proc("glBindBufferRange");
639 	gleswBindBufferBase = (PFNGLBINDBUFFERBASEPROC) get_proc("glBindBufferBase");
640 	gleswTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC) get_proc("glTransformFeedbackVaryings");
641 	gleswGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) get_proc("glGetTransformFeedbackVarying");
642 	gleswVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC) get_proc("glVertexAttribIPointer");
643 	gleswGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC) get_proc("glGetVertexAttribIiv");
644 	gleswGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC) get_proc("glGetVertexAttribIuiv");
645 	gleswVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC) get_proc("glVertexAttribI4i");
646 	gleswVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC) get_proc("glVertexAttribI4ui");
647 	gleswVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC) get_proc("glVertexAttribI4iv");
648 	gleswVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC) get_proc("glVertexAttribI4uiv");
649 	gleswGetUniformuiv = (PFNGLGETUNIFORMUIVPROC) get_proc("glGetUniformuiv");
650 	gleswGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC) get_proc("glGetFragDataLocation");
651 	gleswUniform1ui = (PFNGLUNIFORM1UIPROC) get_proc("glUniform1ui");
652 	gleswUniform2ui = (PFNGLUNIFORM2UIPROC) get_proc("glUniform2ui");
653 	gleswUniform3ui = (PFNGLUNIFORM3UIPROC) get_proc("glUniform3ui");
654 	gleswUniform4ui = (PFNGLUNIFORM4UIPROC) get_proc("glUniform4ui");
655 	gleswUniform1uiv = (PFNGLUNIFORM1UIVPROC) get_proc("glUniform1uiv");
656 	gleswUniform2uiv = (PFNGLUNIFORM2UIVPROC) get_proc("glUniform2uiv");
657 	gleswUniform3uiv = (PFNGLUNIFORM3UIVPROC) get_proc("glUniform3uiv");
658 	gleswUniform4uiv = (PFNGLUNIFORM4UIVPROC) get_proc("glUniform4uiv");
659 	gleswClearBufferiv = (PFNGLCLEARBUFFERIVPROC) get_proc("glClearBufferiv");
660 	gleswClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC) get_proc("glClearBufferuiv");
661 	gleswClearBufferfv = (PFNGLCLEARBUFFERFVPROC) get_proc("glClearBufferfv");
662 	gleswClearBufferfi = (PFNGLCLEARBUFFERFIPROC) get_proc("glClearBufferfi");
663 	gleswGetStringi = (PFNGLGETSTRINGIPROC) get_proc("glGetStringi");
664 	gleswCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC) get_proc("glCopyBufferSubData");
665 	gleswGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC) get_proc("glGetUniformIndices");
666 	gleswGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC) get_proc("glGetActiveUniformsiv");
667 	gleswGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC) get_proc("glGetUniformBlockIndex");
668 	gleswGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC) get_proc("glGetActiveUniformBlockiv");
669 	gleswGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) get_proc("glGetActiveUniformBlockName");
670 	gleswUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC) get_proc("glUniformBlockBinding");
671 	gleswDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC) get_proc("glDrawArraysInstanced");
672 	gleswDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC) get_proc("glDrawElementsInstanced");
673 	gleswFenceSync = (PFNGLFENCESYNCPROC) get_proc("glFenceSync");
674 	gleswIsSync = (PFNGLISSYNCPROC) get_proc("glIsSync");
675 	gleswDeleteSync = (PFNGLDELETESYNCPROC) get_proc("glDeleteSync");
676 	gleswClientWaitSync = (PFNGLCLIENTWAITSYNCPROC) get_proc("glClientWaitSync");
677 	gleswWaitSync = (PFNGLWAITSYNCPROC) get_proc("glWaitSync");
678 	gleswGetInteger64v = (PFNGLGETINTEGER64VPROC) get_proc("glGetInteger64v");
679 	gleswGetSynciv = (PFNGLGETSYNCIVPROC) get_proc("glGetSynciv");
680 	gleswGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC) get_proc("glGetInteger64i_v");
681 	gleswGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC) get_proc("glGetBufferParameteri64v");
682 	gleswGenSamplers = (PFNGLGENSAMPLERSPROC) get_proc("glGenSamplers");
683 	gleswDeleteSamplers = (PFNGLDELETESAMPLERSPROC) get_proc("glDeleteSamplers");
684 	gleswIsSampler = (PFNGLISSAMPLERPROC) get_proc("glIsSampler");
685 	gleswBindSampler = (PFNGLBINDSAMPLERPROC) get_proc("glBindSampler");
686 	gleswSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC) get_proc("glSamplerParameteri");
687 	gleswSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC) get_proc("glSamplerParameteriv");
688 	gleswSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC) get_proc("glSamplerParameterf");
689 	gleswSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC) get_proc("glSamplerParameterfv");
690 	gleswGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC) get_proc("glGetSamplerParameteriv");
691 	gleswGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC) get_proc("glGetSamplerParameterfv");
692 	gleswVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC) get_proc("glVertexAttribDivisor");
693 	gleswBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC) get_proc("glBindTransformFeedback");
694 	gleswDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC) get_proc("glDeleteTransformFeedbacks");
695 	gleswGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC) get_proc("glGenTransformFeedbacks");
696 	gleswIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC) get_proc("glIsTransformFeedback");
697 	gleswPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC) get_proc("glPauseTransformFeedback");
698 	gleswResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC) get_proc("glResumeTransformFeedback");
699 	gleswGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC) get_proc("glGetProgramBinary");
700 	gleswProgramBinary = (PFNGLPROGRAMBINARYPROC) get_proc("glProgramBinary");
701 	gleswProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC) get_proc("glProgramParameteri");
702 	gleswInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC) get_proc("glInvalidateFramebuffer");
703 	gleswInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC) get_proc("glInvalidateSubFramebuffer");
704 	gleswTexStorage2D = (PFNGLTEXSTORAGE2DPROC) get_proc("glTexStorage2D");
705 	gleswTexStorage3D = (PFNGLTEXSTORAGE3DPROC) get_proc("glTexStorage3D");
706 	gleswGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC) get_proc("glGetInternalformativ");
707 	gleswLabelObjectEXT = (PFNGLLABELOBJECTEXTPROC) get_proc("glLabelObjectEXT");
708 	gleswGetObjectLabelEXT = (PFNGLGETOBJECTLABELEXTPROC) get_proc("glGetObjectLabelEXT");
709 	gleswInsertEventMarkerEXT = (PFNGLINSERTEVENTMARKEREXTPROC) get_proc("glInsertEventMarkerEXT");
710 	gleswPushGroupMarkerEXT = (PFNGLPUSHGROUPMARKEREXTPROC) get_proc("glPushGroupMarkerEXT");
711 	gleswPopGroupMarkerEXT = (PFNGLPOPGROUPMARKEREXTPROC) get_proc("glPopGroupMarkerEXT");
712 	gleswUseProgramStagesEXT = (PFNGLUSEPROGRAMSTAGESEXTPROC) get_proc("glUseProgramStagesEXT");
713 	gleswActiveShaderProgramEXT = (PFNGLACTIVESHADERPROGRAMEXTPROC) get_proc("glActiveShaderProgramEXT");
714 	gleswCreateShaderProgramvEXT = (PFNGLCREATESHADERPROGRAMVEXTPROC) get_proc("glCreateShaderProgramvEXT");
715 	gleswBindProgramPipelineEXT = (PFNGLBINDPROGRAMPIPELINEEXTPROC) get_proc("glBindProgramPipelineEXT");
716 	gleswDeleteProgramPipelinesEXT = (PFNGLDELETEPROGRAMPIPELINESEXTPROC) get_proc("glDeleteProgramPipelinesEXT");
717 	gleswGenProgramPipelinesEXT = (PFNGLGENPROGRAMPIPELINESEXTPROC) get_proc("glGenProgramPipelinesEXT");
718 	gleswIsProgramPipelineEXT = (PFNGLISPROGRAMPIPELINEEXTPROC) get_proc("glIsProgramPipelineEXT");
719 	gleswProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC) get_proc("glProgramParameteriEXT");
720 	gleswGetProgramPipelineivEXT = (PFNGLGETPROGRAMPIPELINEIVEXTPROC) get_proc("glGetProgramPipelineivEXT");
721 	gleswProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC) get_proc("glProgramUniform1iEXT");
722 	gleswProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC) get_proc("glProgramUniform2iEXT");
723 	gleswProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC) get_proc("glProgramUniform3iEXT");
724 	gleswProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC) get_proc("glProgramUniform4iEXT");
725 	gleswProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC) get_proc("glProgramUniform1fEXT");
726 	gleswProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC) get_proc("glProgramUniform2fEXT");
727 	gleswProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC) get_proc("glProgramUniform3fEXT");
728 	gleswProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC) get_proc("glProgramUniform4fEXT");
729 	gleswProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC) get_proc("glProgramUniform1ivEXT");
730 	gleswProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC) get_proc("glProgramUniform2ivEXT");
731 	gleswProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC) get_proc("glProgramUniform3ivEXT");
732 	gleswProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC) get_proc("glProgramUniform4ivEXT");
733 	gleswProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC) get_proc("glProgramUniform1fvEXT");
734 	gleswProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC) get_proc("glProgramUniform2fvEXT");
735 	gleswProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC) get_proc("glProgramUniform3fvEXT");
736 	gleswProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC) get_proc("glProgramUniform4fvEXT");
737 	gleswProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) get_proc("glProgramUniformMatrix2fvEXT");
738 	gleswProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) get_proc("glProgramUniformMatrix3fvEXT");
739 	gleswProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) get_proc("glProgramUniformMatrix4fvEXT");
740 	gleswProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) get_proc("glProgramUniformMatrix2x3fvEXT");
741 	gleswProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) get_proc("glProgramUniformMatrix3x2fvEXT");
742 	gleswProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) get_proc("glProgramUniformMatrix2x4fvEXT");
743 	gleswProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) get_proc("glProgramUniformMatrix4x2fvEXT");
744 	gleswProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) get_proc("glProgramUniformMatrix3x4fvEXT");
745 	gleswProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) get_proc("glProgramUniformMatrix4x3fvEXT");
746 	gleswValidateProgramPipelineEXT = (PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) get_proc("glValidateProgramPipelineEXT");
747 	gleswGetProgramPipelineInfoLogEXT = (PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) get_proc("glGetProgramPipelineInfoLogEXT");
748 }
749