1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by generate_gl_dispatch_table.py using data from gl_bindings_data.json and gl.xml.
3 //
4 // Copyright 2017 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // DispatchTableGL_autogen.cpp:
9 // Initialize the native bindings for ANGLE's OpenGL back-end.
10
11 #include "libANGLE/renderer/gl/DispatchTableGL_autogen.h"
12
13 #include "libANGLE/Version.h"
14 #include "libANGLE/renderer/gl/FunctionsGL.h"
15
16 #if defined(ANGLE_ENABLE_OPENGL_NULL)
17 # include "libANGLE/renderer/gl/null_functions.h"
18 #endif // defined(ANGLE_ENABLE_OPENGL_NULL)
19
20 #define ASSIGN(NAME, FP) \
21 do \
22 { \
23 FP = reinterpret_cast<decltype(FP)>(loadProcAddress(NAME)); \
24 } while (0)
25
26 namespace rx
27 {
28 DispatchTableGL::DispatchTableGL() = default;
29
initProcsDesktopGL(const gl::Version & version,const std::set<std::string> & extensions)30 void DispatchTableGL::initProcsDesktopGL(const gl::Version &version,
31 const std::set<std::string> &extensions)
32 {
33 #if defined(ANGLE_ENABLE_GL_DESKTOP_BACKEND)
34 if (extensions.count("GL_ARB_ES2_compatibility") != 0)
35 {
36 ASSIGN("glClearDepthf", clearDepthf);
37 ASSIGN("glDepthRangef", depthRangef);
38 ASSIGN("glGetShaderPrecisionFormat", getShaderPrecisionFormat);
39 ASSIGN("glReleaseShaderCompiler", releaseShaderCompiler);
40 ASSIGN("glShaderBinary", shaderBinary);
41 }
42
43 if (extensions.count("GL_ARB_ES3_1_compatibility") != 0)
44 {
45 ASSIGN("glMemoryBarrierByRegion", memoryBarrierByRegion);
46 }
47
48 if (extensions.count("GL_ARB_ES3_2_compatibility") != 0)
49 {
50 ASSIGN("glPrimitiveBoundingBoxARB", primitiveBoundingBox);
51 }
52
53 if (extensions.count("GL_ARB_base_instance") != 0)
54 {
55 ASSIGN("glDrawArraysInstancedBaseInstance", drawArraysInstancedBaseInstance);
56 ASSIGN("glDrawElementsInstancedBaseInstance", drawElementsInstancedBaseInstance);
57 ASSIGN("glDrawElementsInstancedBaseVertexBaseInstance",
58 drawElementsInstancedBaseVertexBaseInstance);
59 }
60
61 if (extensions.count("GL_ARB_blend_func_extended") != 0)
62 {
63 ASSIGN("glBindFragDataLocationIndexed", bindFragDataLocationIndexed);
64 ASSIGN("glGetFragDataIndex", getFragDataIndex);
65 }
66
67 if (extensions.count("GL_ARB_buffer_storage") != 0)
68 {
69 ASSIGN("glBufferStorage", bufferStorage);
70 }
71
72 if (extensions.count("GL_ARB_clear_buffer_object") != 0)
73 {
74 ASSIGN("glClearBufferData", clearBufferData);
75 ASSIGN("glClearBufferSubData", clearBufferSubData);
76 }
77
78 if (extensions.count("GL_ARB_clear_texture") != 0)
79 {
80 ASSIGN("glClearTexImage", clearTexImage);
81 ASSIGN("glClearTexSubImage", clearTexSubImage);
82 }
83
84 if (extensions.count("GL_ARB_clip_control") != 0)
85 {
86 ASSIGN("glClipControl", clipControl);
87 }
88
89 if (extensions.count("GL_ARB_color_buffer_float") != 0)
90 {
91 ASSIGN("glClampColorARB", clampColor);
92 }
93
94 if (extensions.count("GL_ARB_compute_shader") != 0)
95 {
96 ASSIGN("glDispatchCompute", dispatchCompute);
97 ASSIGN("glDispatchComputeIndirect", dispatchComputeIndirect);
98 }
99
100 if (extensions.count("GL_ARB_copy_buffer") != 0)
101 {
102 ASSIGN("glCopyBufferSubData", copyBufferSubData);
103 }
104
105 if (extensions.count("GL_ARB_copy_image") != 0)
106 {
107 ASSIGN("glCopyImageSubData", copyImageSubData);
108 }
109
110 if (extensions.count("GL_ARB_debug_output") != 0)
111 {
112 ASSIGN("glDebugMessageCallbackARB", debugMessageCallback);
113 ASSIGN("glDebugMessageControlARB", debugMessageControl);
114 ASSIGN("glDebugMessageInsertARB", debugMessageInsert);
115 ASSIGN("glGetDebugMessageLogARB", getDebugMessageLog);
116 }
117
118 if (extensions.count("GL_ARB_direct_state_access") != 0)
119 {
120 ASSIGN("glBindTextureUnit", bindTextureUnit);
121 ASSIGN("glBlitNamedFramebuffer", blitNamedFramebuffer);
122 ASSIGN("glCheckNamedFramebufferStatus", checkNamedFramebufferStatus);
123 ASSIGN("glClearNamedBufferData", clearNamedBufferData);
124 ASSIGN("glClearNamedBufferSubData", clearNamedBufferSubData);
125 ASSIGN("glClearNamedFramebufferfi", clearNamedFramebufferfi);
126 ASSIGN("glClearNamedFramebufferfv", clearNamedFramebufferfv);
127 ASSIGN("glClearNamedFramebufferiv", clearNamedFramebufferiv);
128 ASSIGN("glClearNamedFramebufferuiv", clearNamedFramebufferuiv);
129 ASSIGN("glCompressedTextureSubImage1D", compressedTextureSubImage1D);
130 ASSIGN("glCompressedTextureSubImage2D", compressedTextureSubImage2D);
131 ASSIGN("glCompressedTextureSubImage3D", compressedTextureSubImage3D);
132 ASSIGN("glCopyNamedBufferSubData", copyNamedBufferSubData);
133 ASSIGN("glCopyTextureSubImage1D", copyTextureSubImage1D);
134 ASSIGN("glCopyTextureSubImage2D", copyTextureSubImage2D);
135 ASSIGN("glCopyTextureSubImage3D", copyTextureSubImage3D);
136 ASSIGN("glCreateBuffers", createBuffers);
137 ASSIGN("glCreateFramebuffers", createFramebuffers);
138 ASSIGN("glCreateProgramPipelines", createProgramPipelines);
139 ASSIGN("glCreateQueries", createQueries);
140 ASSIGN("glCreateRenderbuffers", createRenderbuffers);
141 ASSIGN("glCreateSamplers", createSamplers);
142 ASSIGN("glCreateTextures", createTextures);
143 ASSIGN("glCreateTransformFeedbacks", createTransformFeedbacks);
144 ASSIGN("glCreateVertexArrays", createVertexArrays);
145 ASSIGN("glDisableVertexArrayAttrib", disableVertexArrayAttrib);
146 ASSIGN("glEnableVertexArrayAttrib", enableVertexArrayAttrib);
147 ASSIGN("glFlushMappedNamedBufferRange", flushMappedNamedBufferRange);
148 ASSIGN("glGenerateTextureMipmap", generateTextureMipmap);
149 ASSIGN("glGetCompressedTextureImage", getCompressedTextureImage);
150 ASSIGN("glGetNamedBufferParameteri64v", getNamedBufferParameteri64v);
151 ASSIGN("glGetNamedBufferParameteriv", getNamedBufferParameteriv);
152 ASSIGN("glGetNamedBufferPointerv", getNamedBufferPointerv);
153 ASSIGN("glGetNamedBufferSubData", getNamedBufferSubData);
154 ASSIGN("glGetNamedFramebufferAttachmentParameteriv",
155 getNamedFramebufferAttachmentParameteriv);
156 ASSIGN("glGetNamedFramebufferParameteriv", getNamedFramebufferParameteriv);
157 ASSIGN("glGetNamedRenderbufferParameteriv", getNamedRenderbufferParameteriv);
158 ASSIGN("glGetQueryBufferObjecti64v", getQueryBufferObjecti64v);
159 ASSIGN("glGetQueryBufferObjectiv", getQueryBufferObjectiv);
160 ASSIGN("glGetQueryBufferObjectui64v", getQueryBufferObjectui64v);
161 ASSIGN("glGetQueryBufferObjectuiv", getQueryBufferObjectuiv);
162 ASSIGN("glGetTextureImage", getTextureImage);
163 ASSIGN("glGetTextureLevelParameterfv", getTextureLevelParameterfv);
164 ASSIGN("glGetTextureLevelParameteriv", getTextureLevelParameteriv);
165 ASSIGN("glGetTextureParameterIiv", getTextureParameterIiv);
166 ASSIGN("glGetTextureParameterIuiv", getTextureParameterIuiv);
167 ASSIGN("glGetTextureParameterfv", getTextureParameterfv);
168 ASSIGN("glGetTextureParameteriv", getTextureParameteriv);
169 ASSIGN("glGetTransformFeedbacki64_v", getTransformFeedbacki64_v);
170 ASSIGN("glGetTransformFeedbacki_v", getTransformFeedbacki_v);
171 ASSIGN("glGetTransformFeedbackiv", getTransformFeedbackiv);
172 ASSIGN("glGetVertexArrayIndexed64iv", getVertexArrayIndexed64iv);
173 ASSIGN("glGetVertexArrayIndexediv", getVertexArrayIndexediv);
174 ASSIGN("glGetVertexArrayiv", getVertexArrayiv);
175 ASSIGN("glInvalidateNamedFramebufferData", invalidateNamedFramebufferData);
176 ASSIGN("glInvalidateNamedFramebufferSubData", invalidateNamedFramebufferSubData);
177 ASSIGN("glMapNamedBuffer", mapNamedBuffer);
178 ASSIGN("glMapNamedBufferRange", mapNamedBufferRange);
179 ASSIGN("glNamedBufferData", namedBufferData);
180 ASSIGN("glNamedBufferStorage", namedBufferStorage);
181 ASSIGN("glNamedBufferSubData", namedBufferSubData);
182 ASSIGN("glNamedFramebufferDrawBuffer", namedFramebufferDrawBuffer);
183 ASSIGN("glNamedFramebufferDrawBuffers", namedFramebufferDrawBuffers);
184 ASSIGN("glNamedFramebufferParameteri", namedFramebufferParameteri);
185 ASSIGN("glNamedFramebufferReadBuffer", namedFramebufferReadBuffer);
186 ASSIGN("glNamedFramebufferRenderbuffer", namedFramebufferRenderbuffer);
187 ASSIGN("glNamedFramebufferTexture", namedFramebufferTexture);
188 ASSIGN("glNamedFramebufferTextureLayer", namedFramebufferTextureLayer);
189 ASSIGN("glNamedRenderbufferStorage", namedRenderbufferStorage);
190 ASSIGN("glNamedRenderbufferStorageMultisample", namedRenderbufferStorageMultisample);
191 ASSIGN("glTextureBuffer", textureBuffer);
192 ASSIGN("glTextureBufferRange", textureBufferRange);
193 ASSIGN("glTextureParameterIiv", textureParameterIiv);
194 ASSIGN("glTextureParameterIuiv", textureParameterIuiv);
195 ASSIGN("glTextureParameterf", textureParameterf);
196 ASSIGN("glTextureParameterfv", textureParameterfv);
197 ASSIGN("glTextureParameteri", textureParameteri);
198 ASSIGN("glTextureParameteriv", textureParameteriv);
199 ASSIGN("glTextureStorage1D", textureStorage1D);
200 ASSIGN("glTextureStorage2D", textureStorage2D);
201 ASSIGN("glTextureStorage2DMultisample", textureStorage2DMultisample);
202 ASSIGN("glTextureStorage3D", textureStorage3D);
203 ASSIGN("glTextureStorage3DMultisample", textureStorage3DMultisample);
204 ASSIGN("glTextureSubImage1D", textureSubImage1D);
205 ASSIGN("glTextureSubImage2D", textureSubImage2D);
206 ASSIGN("glTextureSubImage3D", textureSubImage3D);
207 ASSIGN("glTransformFeedbackBufferBase", transformFeedbackBufferBase);
208 ASSIGN("glTransformFeedbackBufferRange", transformFeedbackBufferRange);
209 ASSIGN("glUnmapNamedBuffer", unmapNamedBuffer);
210 ASSIGN("glVertexArrayAttribBinding", vertexArrayAttribBinding);
211 ASSIGN("glVertexArrayAttribFormat", vertexArrayAttribFormat);
212 ASSIGN("glVertexArrayAttribIFormat", vertexArrayAttribIFormat);
213 ASSIGN("glVertexArrayAttribLFormat", vertexArrayAttribLFormat);
214 ASSIGN("glVertexArrayBindingDivisor", vertexArrayBindingDivisor);
215 ASSIGN("glVertexArrayElementBuffer", vertexArrayElementBuffer);
216 ASSIGN("glVertexArrayVertexBuffer", vertexArrayVertexBuffer);
217 ASSIGN("glVertexArrayVertexBuffers", vertexArrayVertexBuffers);
218 }
219
220 if (extensions.count("GL_ARB_draw_buffers") != 0)
221 {
222 ASSIGN("glDrawBuffersARB", drawBuffers);
223 }
224
225 if (extensions.count("GL_ARB_draw_buffers_blend") != 0)
226 {
227 ASSIGN("glBlendEquationSeparateiARB", blendEquationSeparatei);
228 ASSIGN("glBlendEquationiARB", blendEquationi);
229 ASSIGN("glBlendFuncSeparateiARB", blendFuncSeparatei);
230 ASSIGN("glBlendFunciARB", blendFunci);
231 }
232
233 if (extensions.count("GL_ARB_draw_elements_base_vertex") != 0)
234 {
235 ASSIGN("glDrawElementsBaseVertex", drawElementsBaseVertex);
236 ASSIGN("glDrawElementsInstancedBaseVertex", drawElementsInstancedBaseVertex);
237 ASSIGN("glDrawRangeElementsBaseVertex", drawRangeElementsBaseVertex);
238 ASSIGN("glMultiDrawElementsBaseVertex", multiDrawElementsBaseVertex);
239 }
240
241 if (extensions.count("GL_ARB_draw_indirect") != 0)
242 {
243 ASSIGN("glDrawArraysIndirect", drawArraysIndirect);
244 ASSIGN("glDrawElementsIndirect", drawElementsIndirect);
245 }
246
247 if (extensions.count("GL_ARB_draw_instanced") != 0)
248 {
249 ASSIGN("glDrawArraysInstancedARB", drawArraysInstanced);
250 ASSIGN("glDrawElementsInstancedARB", drawElementsInstanced);
251 }
252
253 if (extensions.count("GL_ARB_fragment_program") != 0)
254 {
255 ASSIGN("glGetProgramivARB", getProgramiv);
256 ASSIGN("glIsProgramARB", isProgram);
257 }
258
259 if (extensions.count("GL_ARB_framebuffer_no_attachments") != 0)
260 {
261 ASSIGN("glFramebufferParameteri", framebufferParameteri);
262 ASSIGN("glGetFramebufferParameteriv", getFramebufferParameteriv);
263 }
264
265 if (extensions.count("GL_ARB_framebuffer_object") != 0)
266 {
267 ASSIGN("glBindFramebuffer", bindFramebuffer);
268 ASSIGN("glBindRenderbuffer", bindRenderbuffer);
269 ASSIGN("glBlitFramebuffer", blitFramebuffer);
270 ASSIGN("glCheckFramebufferStatus", checkFramebufferStatus);
271 ASSIGN("glDeleteFramebuffers", deleteFramebuffers);
272 ASSIGN("glDeleteRenderbuffers", deleteRenderbuffers);
273 ASSIGN("glFramebufferRenderbuffer", framebufferRenderbuffer);
274 ASSIGN("glFramebufferTexture1D", framebufferTexture1D);
275 ASSIGN("glFramebufferTexture2D", framebufferTexture2D);
276 ASSIGN("glFramebufferTexture3D", framebufferTexture3D);
277 ASSIGN("glFramebufferTextureLayer", framebufferTextureLayer);
278 ASSIGN("glGenFramebuffers", genFramebuffers);
279 ASSIGN("glGenRenderbuffers", genRenderbuffers);
280 ASSIGN("glGenerateMipmap", generateMipmap);
281 ASSIGN("glGetFramebufferAttachmentParameteriv", getFramebufferAttachmentParameteriv);
282 ASSIGN("glGetRenderbufferParameteriv", getRenderbufferParameteriv);
283 ASSIGN("glIsFramebuffer", isFramebuffer);
284 ASSIGN("glIsRenderbuffer", isRenderbuffer);
285 ASSIGN("glRenderbufferStorage", renderbufferStorage);
286 ASSIGN("glRenderbufferStorageMultisample", renderbufferStorageMultisample);
287 }
288
289 if (extensions.count("GL_ARB_geometry_shader4") != 0)
290 {
291 ASSIGN("glFramebufferTextureARB", framebufferTexture);
292 ASSIGN("glFramebufferTextureLayerARB", framebufferTextureLayer);
293 ASSIGN("glProgramParameteriARB", programParameteri);
294 }
295
296 if (extensions.count("GL_ARB_get_program_binary") != 0)
297 {
298 ASSIGN("glGetProgramBinary", getProgramBinary);
299 ASSIGN("glProgramBinary", programBinary);
300 ASSIGN("glProgramParameteri", programParameteri);
301 }
302
303 if (extensions.count("GL_ARB_get_texture_sub_image") != 0)
304 {
305 ASSIGN("glGetCompressedTextureSubImage", getCompressedTextureSubImage);
306 ASSIGN("glGetTextureSubImage", getTextureSubImage);
307 }
308
309 if (extensions.count("GL_ARB_gpu_shader_fp64") != 0)
310 {
311 ASSIGN("glGetUniformdv", getUniformdv);
312 ASSIGN("glUniform1d", uniform1d);
313 ASSIGN("glUniform1dv", uniform1dv);
314 ASSIGN("glUniform2d", uniform2d);
315 ASSIGN("glUniform2dv", uniform2dv);
316 ASSIGN("glUniform3d", uniform3d);
317 ASSIGN("glUniform3dv", uniform3dv);
318 ASSIGN("glUniform4d", uniform4d);
319 ASSIGN("glUniform4dv", uniform4dv);
320 ASSIGN("glUniformMatrix2dv", uniformMatrix2dv);
321 ASSIGN("glUniformMatrix2x3dv", uniformMatrix2x3dv);
322 ASSIGN("glUniformMatrix2x4dv", uniformMatrix2x4dv);
323 ASSIGN("glUniformMatrix3dv", uniformMatrix3dv);
324 ASSIGN("glUniformMatrix3x2dv", uniformMatrix3x2dv);
325 ASSIGN("glUniformMatrix3x4dv", uniformMatrix3x4dv);
326 ASSIGN("glUniformMatrix4dv", uniformMatrix4dv);
327 ASSIGN("glUniformMatrix4x2dv", uniformMatrix4x2dv);
328 ASSIGN("glUniformMatrix4x3dv", uniformMatrix4x3dv);
329 }
330
331 if (extensions.count("GL_ARB_imaging") != 0)
332 {
333 ASSIGN("glBlendColor", blendColor);
334 ASSIGN("glBlendEquation", blendEquation);
335 }
336
337 if (extensions.count("GL_ARB_instanced_arrays") != 0)
338 {
339 ASSIGN("glVertexAttribDivisorARB", vertexAttribDivisor);
340 }
341
342 if (extensions.count("GL_ARB_internalformat_query") != 0)
343 {
344 ASSIGN("glGetInternalformativ", getInternalformativ);
345 }
346
347 if (extensions.count("GL_ARB_internalformat_query2") != 0)
348 {
349 ASSIGN("glGetInternalformati64v", getInternalformati64v);
350 }
351
352 if (extensions.count("GL_ARB_invalidate_subdata") != 0)
353 {
354 ASSIGN("glInvalidateBufferData", invalidateBufferData);
355 ASSIGN("glInvalidateBufferSubData", invalidateBufferSubData);
356 ASSIGN("glInvalidateFramebuffer", invalidateFramebuffer);
357 ASSIGN("glInvalidateSubFramebuffer", invalidateSubFramebuffer);
358 ASSIGN("glInvalidateTexImage", invalidateTexImage);
359 ASSIGN("glInvalidateTexSubImage", invalidateTexSubImage);
360 }
361
362 if (extensions.count("GL_ARB_map_buffer_range") != 0)
363 {
364 ASSIGN("glFlushMappedBufferRange", flushMappedBufferRange);
365 ASSIGN("glMapBufferRange", mapBufferRange);
366 }
367
368 if (extensions.count("GL_ARB_multi_bind") != 0)
369 {
370 ASSIGN("glBindBuffersBase", bindBuffersBase);
371 ASSIGN("glBindBuffersRange", bindBuffersRange);
372 ASSIGN("glBindImageTextures", bindImageTextures);
373 ASSIGN("glBindSamplers", bindSamplers);
374 ASSIGN("glBindTextures", bindTextures);
375 ASSIGN("glBindVertexBuffers", bindVertexBuffers);
376 }
377
378 if (extensions.count("GL_ARB_multi_draw_indirect") != 0)
379 {
380 ASSIGN("glMultiDrawArraysIndirect", multiDrawArraysIndirect);
381 ASSIGN("glMultiDrawElementsIndirect", multiDrawElementsIndirect);
382 }
383
384 if (extensions.count("GL_ARB_multisample") != 0)
385 {
386 ASSIGN("glSampleCoverageARB", sampleCoverage);
387 }
388
389 if (extensions.count("GL_ARB_multitexture") != 0)
390 {
391 ASSIGN("glActiveTextureARB", activeTexture);
392 }
393
394 if (extensions.count("GL_ARB_occlusion_query") != 0)
395 {
396 ASSIGN("glBeginQueryARB", beginQuery);
397 ASSIGN("glDeleteQueriesARB", deleteQueries);
398 ASSIGN("glEndQueryARB", endQuery);
399 ASSIGN("glGenQueriesARB", genQueries);
400 ASSIGN("glGetQueryObjectivARB", getQueryObjectiv);
401 ASSIGN("glGetQueryObjectuivARB", getQueryObjectuiv);
402 ASSIGN("glGetQueryivARB", getQueryiv);
403 ASSIGN("glIsQueryARB", isQuery);
404 }
405
406 if (extensions.count("GL_ARB_parallel_shader_compile") != 0)
407 {
408 ASSIGN("glMaxShaderCompilerThreadsARB", maxShaderCompilerThreadsARB);
409 }
410
411 if (extensions.count("GL_ARB_point_parameters") != 0)
412 {
413 ASSIGN("glPointParameterfARB", pointParameterf);
414 ASSIGN("glPointParameterfvARB", pointParameterfv);
415 }
416
417 if (extensions.count("GL_ARB_program_interface_query") != 0)
418 {
419 ASSIGN("glGetProgramInterfaceiv", getProgramInterfaceiv);
420 ASSIGN("glGetProgramResourceIndex", getProgramResourceIndex);
421 ASSIGN("glGetProgramResourceLocation", getProgramResourceLocation);
422 ASSIGN("glGetProgramResourceLocationIndex", getProgramResourceLocationIndex);
423 ASSIGN("glGetProgramResourceName", getProgramResourceName);
424 ASSIGN("glGetProgramResourceiv", getProgramResourceiv);
425 }
426
427 if (extensions.count("GL_ARB_provoking_vertex") != 0)
428 {
429 ASSIGN("glProvokingVertex", provokingVertex);
430 }
431
432 if (extensions.count("GL_ARB_robustness") != 0)
433 {
434 ASSIGN("glGetGraphicsResetStatusARB", getGraphicsResetStatus);
435 ASSIGN("glGetnCompressedTexImageARB", getnCompressedTexImage);
436 ASSIGN("glGetnTexImageARB", getnTexImage);
437 ASSIGN("glGetnUniformdvARB", getnUniformdv);
438 ASSIGN("glGetnUniformfvARB", getnUniformfv);
439 ASSIGN("glGetnUniformivARB", getnUniformiv);
440 ASSIGN("glGetnUniformuivARB", getnUniformuiv);
441 ASSIGN("glReadnPixelsARB", readnPixels);
442 }
443
444 if (extensions.count("GL_ARB_sample_shading") != 0)
445 {
446 ASSIGN("glMinSampleShadingARB", minSampleShading);
447 }
448
449 if (extensions.count("GL_ARB_sampler_objects") != 0)
450 {
451 ASSIGN("glBindSampler", bindSampler);
452 ASSIGN("glDeleteSamplers", deleteSamplers);
453 ASSIGN("glGenSamplers", genSamplers);
454 ASSIGN("glGetSamplerParameterIiv", getSamplerParameterIiv);
455 ASSIGN("glGetSamplerParameterIuiv", getSamplerParameterIuiv);
456 ASSIGN("glGetSamplerParameterfv", getSamplerParameterfv);
457 ASSIGN("glGetSamplerParameteriv", getSamplerParameteriv);
458 ASSIGN("glIsSampler", isSampler);
459 ASSIGN("glSamplerParameterIiv", samplerParameterIiv);
460 ASSIGN("glSamplerParameterIuiv", samplerParameterIuiv);
461 ASSIGN("glSamplerParameterf", samplerParameterf);
462 ASSIGN("glSamplerParameterfv", samplerParameterfv);
463 ASSIGN("glSamplerParameteri", samplerParameteri);
464 ASSIGN("glSamplerParameteriv", samplerParameteriv);
465 }
466
467 if (extensions.count("GL_ARB_separate_shader_objects") != 0)
468 {
469 ASSIGN("glActiveShaderProgram", activeShaderProgram);
470 ASSIGN("glBindProgramPipeline", bindProgramPipeline);
471 ASSIGN("glCreateShaderProgramv", createShaderProgramv);
472 ASSIGN("glDeleteProgramPipelines", deleteProgramPipelines);
473 ASSIGN("glGenProgramPipelines", genProgramPipelines);
474 ASSIGN("glGetProgramPipelineInfoLog", getProgramPipelineInfoLog);
475 ASSIGN("glGetProgramPipelineiv", getProgramPipelineiv);
476 ASSIGN("glIsProgramPipeline", isProgramPipeline);
477 ASSIGN("glProgramParameteri", programParameteri);
478 ASSIGN("glProgramUniform1d", programUniform1d);
479 ASSIGN("glProgramUniform1dv", programUniform1dv);
480 ASSIGN("glProgramUniform1f", programUniform1f);
481 ASSIGN("glProgramUniform1fv", programUniform1fv);
482 ASSIGN("glProgramUniform1i", programUniform1i);
483 ASSIGN("glProgramUniform1iv", programUniform1iv);
484 ASSIGN("glProgramUniform1ui", programUniform1ui);
485 ASSIGN("glProgramUniform1uiv", programUniform1uiv);
486 ASSIGN("glProgramUniform2d", programUniform2d);
487 ASSIGN("glProgramUniform2dv", programUniform2dv);
488 ASSIGN("glProgramUniform2f", programUniform2f);
489 ASSIGN("glProgramUniform2fv", programUniform2fv);
490 ASSIGN("glProgramUniform2i", programUniform2i);
491 ASSIGN("glProgramUniform2iv", programUniform2iv);
492 ASSIGN("glProgramUniform2ui", programUniform2ui);
493 ASSIGN("glProgramUniform2uiv", programUniform2uiv);
494 ASSIGN("glProgramUniform3d", programUniform3d);
495 ASSIGN("glProgramUniform3dv", programUniform3dv);
496 ASSIGN("glProgramUniform3f", programUniform3f);
497 ASSIGN("glProgramUniform3fv", programUniform3fv);
498 ASSIGN("glProgramUniform3i", programUniform3i);
499 ASSIGN("glProgramUniform3iv", programUniform3iv);
500 ASSIGN("glProgramUniform3ui", programUniform3ui);
501 ASSIGN("glProgramUniform3uiv", programUniform3uiv);
502 ASSIGN("glProgramUniform4d", programUniform4d);
503 ASSIGN("glProgramUniform4dv", programUniform4dv);
504 ASSIGN("glProgramUniform4f", programUniform4f);
505 ASSIGN("glProgramUniform4fv", programUniform4fv);
506 ASSIGN("glProgramUniform4i", programUniform4i);
507 ASSIGN("glProgramUniform4iv", programUniform4iv);
508 ASSIGN("glProgramUniform4ui", programUniform4ui);
509 ASSIGN("glProgramUniform4uiv", programUniform4uiv);
510 ASSIGN("glProgramUniformMatrix2dv", programUniformMatrix2dv);
511 ASSIGN("glProgramUniformMatrix2fv", programUniformMatrix2fv);
512 ASSIGN("glProgramUniformMatrix2x3dv", programUniformMatrix2x3dv);
513 ASSIGN("glProgramUniformMatrix2x3fv", programUniformMatrix2x3fv);
514 ASSIGN("glProgramUniformMatrix2x4dv", programUniformMatrix2x4dv);
515 ASSIGN("glProgramUniformMatrix2x4fv", programUniformMatrix2x4fv);
516 ASSIGN("glProgramUniformMatrix3dv", programUniformMatrix3dv);
517 ASSIGN("glProgramUniformMatrix3fv", programUniformMatrix3fv);
518 ASSIGN("glProgramUniformMatrix3x2dv", programUniformMatrix3x2dv);
519 ASSIGN("glProgramUniformMatrix3x2fv", programUniformMatrix3x2fv);
520 ASSIGN("glProgramUniformMatrix3x4dv", programUniformMatrix3x4dv);
521 ASSIGN("glProgramUniformMatrix3x4fv", programUniformMatrix3x4fv);
522 ASSIGN("glProgramUniformMatrix4dv", programUniformMatrix4dv);
523 ASSIGN("glProgramUniformMatrix4fv", programUniformMatrix4fv);
524 ASSIGN("glProgramUniformMatrix4x2dv", programUniformMatrix4x2dv);
525 ASSIGN("glProgramUniformMatrix4x2fv", programUniformMatrix4x2fv);
526 ASSIGN("glProgramUniformMatrix4x3dv", programUniformMatrix4x3dv);
527 ASSIGN("glProgramUniformMatrix4x3fv", programUniformMatrix4x3fv);
528 ASSIGN("glUseProgramStages", useProgramStages);
529 ASSIGN("glValidateProgramPipeline", validateProgramPipeline);
530 }
531
532 if (extensions.count("GL_ARB_shader_atomic_counters") != 0)
533 {
534 ASSIGN("glGetActiveAtomicCounterBufferiv", getActiveAtomicCounterBufferiv);
535 }
536
537 if (extensions.count("GL_ARB_shader_image_load_store") != 0)
538 {
539 ASSIGN("glBindImageTexture", bindImageTexture);
540 ASSIGN("glMemoryBarrier", memoryBarrier);
541 }
542
543 if (extensions.count("GL_ARB_shader_objects") != 0)
544 {
545 ASSIGN("glCompileShaderARB", compileShader);
546 ASSIGN("glGetActiveUniformARB", getActiveUniform);
547 ASSIGN("glGetShaderSourceARB", getShaderSource);
548 ASSIGN("glGetUniformLocationARB", getUniformLocation);
549 ASSIGN("glGetUniformfvARB", getUniformfv);
550 ASSIGN("glGetUniformivARB", getUniformiv);
551 ASSIGN("glLinkProgramARB", linkProgram);
552 ASSIGN("glShaderSourceARB", shaderSource);
553 ASSIGN("glUniform1fARB", uniform1f);
554 ASSIGN("glUniform1fvARB", uniform1fv);
555 ASSIGN("glUniform1iARB", uniform1i);
556 ASSIGN("glUniform1ivARB", uniform1iv);
557 ASSIGN("glUniform2fARB", uniform2f);
558 ASSIGN("glUniform2fvARB", uniform2fv);
559 ASSIGN("glUniform2iARB", uniform2i);
560 ASSIGN("glUniform2ivARB", uniform2iv);
561 ASSIGN("glUniform3fARB", uniform3f);
562 ASSIGN("glUniform3fvARB", uniform3fv);
563 ASSIGN("glUniform3iARB", uniform3i);
564 ASSIGN("glUniform3ivARB", uniform3iv);
565 ASSIGN("glUniform4fARB", uniform4f);
566 ASSIGN("glUniform4fvARB", uniform4fv);
567 ASSIGN("glUniform4iARB", uniform4i);
568 ASSIGN("glUniform4ivARB", uniform4iv);
569 ASSIGN("glUniformMatrix2fvARB", uniformMatrix2fv);
570 ASSIGN("glUniformMatrix3fvARB", uniformMatrix3fv);
571 ASSIGN("glUniformMatrix4fvARB", uniformMatrix4fv);
572 ASSIGN("glValidateProgramARB", validateProgram);
573 }
574
575 if (extensions.count("GL_ARB_shader_storage_buffer_object") != 0)
576 {
577 ASSIGN("glShaderStorageBlockBinding", shaderStorageBlockBinding);
578 }
579
580 if (extensions.count("GL_ARB_shader_subroutine") != 0)
581 {
582 ASSIGN("glGetActiveSubroutineName", getActiveSubroutineName);
583 ASSIGN("glGetActiveSubroutineUniformName", getActiveSubroutineUniformName);
584 ASSIGN("glGetActiveSubroutineUniformiv", getActiveSubroutineUniformiv);
585 ASSIGN("glGetProgramStageiv", getProgramStageiv);
586 ASSIGN("glGetSubroutineIndex", getSubroutineIndex);
587 ASSIGN("glGetSubroutineUniformLocation", getSubroutineUniformLocation);
588 ASSIGN("glGetUniformSubroutineuiv", getUniformSubroutineuiv);
589 ASSIGN("glUniformSubroutinesuiv", uniformSubroutinesuiv);
590 }
591
592 if (extensions.count("GL_ARB_sync") != 0)
593 {
594 ASSIGN("glClientWaitSync", clientWaitSync);
595 ASSIGN("glDeleteSync", deleteSync);
596 ASSIGN("glFenceSync", fenceSync);
597 ASSIGN("glGetInteger64v", getInteger64v);
598 ASSIGN("glGetSynciv", getSynciv);
599 ASSIGN("glIsSync", isSync);
600 ASSIGN("glWaitSync", waitSync);
601 }
602
603 if (extensions.count("GL_ARB_tessellation_shader") != 0)
604 {
605 ASSIGN("glPatchParameterfv", patchParameterfv);
606 ASSIGN("glPatchParameteri", patchParameteri);
607 }
608
609 if (extensions.count("GL_ARB_texture_barrier") != 0)
610 {
611 ASSIGN("glTextureBarrier", textureBarrier);
612 }
613
614 if (extensions.count("GL_ARB_texture_buffer_object") != 0)
615 {
616 ASSIGN("glTexBufferARB", texBuffer);
617 }
618
619 if (extensions.count("GL_ARB_texture_buffer_range") != 0)
620 {
621 ASSIGN("glTexBufferRange", texBufferRange);
622 }
623
624 if (extensions.count("GL_ARB_texture_compression") != 0)
625 {
626 ASSIGN("glCompressedTexImage1DARB", compressedTexImage1D);
627 ASSIGN("glCompressedTexImage2DARB", compressedTexImage2D);
628 ASSIGN("glCompressedTexImage3DARB", compressedTexImage3D);
629 ASSIGN("glCompressedTexSubImage1DARB", compressedTexSubImage1D);
630 ASSIGN("glCompressedTexSubImage2DARB", compressedTexSubImage2D);
631 ASSIGN("glCompressedTexSubImage3DARB", compressedTexSubImage3D);
632 ASSIGN("glGetCompressedTexImageARB", getCompressedTexImage);
633 }
634
635 if (extensions.count("GL_ARB_texture_multisample") != 0)
636 {
637 ASSIGN("glGetMultisamplefv", getMultisamplefv);
638 ASSIGN("glSampleMaski", sampleMaski);
639 ASSIGN("glTexImage2DMultisample", texImage2DMultisample);
640 ASSIGN("glTexImage3DMultisample", texImage3DMultisample);
641 }
642
643 if (extensions.count("GL_ARB_texture_storage") != 0)
644 {
645 ASSIGN("glTexStorage1D", texStorage1D);
646 ASSIGN("glTexStorage2D", texStorage2D);
647 ASSIGN("glTexStorage3D", texStorage3D);
648 }
649
650 if (extensions.count("GL_ARB_texture_storage_multisample") != 0)
651 {
652 ASSIGN("glTexStorage2DMultisample", texStorage2DMultisample);
653 ASSIGN("glTexStorage3DMultisample", texStorage3DMultisample);
654 }
655
656 if (extensions.count("GL_ARB_texture_view") != 0)
657 {
658 ASSIGN("glTextureView", textureView);
659 }
660
661 if (extensions.count("GL_ARB_timer_query") != 0)
662 {
663 ASSIGN("glGetQueryObjecti64v", getQueryObjecti64v);
664 ASSIGN("glGetQueryObjectui64v", getQueryObjectui64v);
665 ASSIGN("glQueryCounter", queryCounter);
666 }
667
668 if (extensions.count("GL_ARB_transform_feedback2") != 0)
669 {
670 ASSIGN("glBindTransformFeedback", bindTransformFeedback);
671 ASSIGN("glDeleteTransformFeedbacks", deleteTransformFeedbacks);
672 ASSIGN("glDrawTransformFeedback", drawTransformFeedback);
673 ASSIGN("glGenTransformFeedbacks", genTransformFeedbacks);
674 ASSIGN("glIsTransformFeedback", isTransformFeedback);
675 ASSIGN("glPauseTransformFeedback", pauseTransformFeedback);
676 ASSIGN("glResumeTransformFeedback", resumeTransformFeedback);
677 }
678
679 if (extensions.count("GL_ARB_transform_feedback3") != 0)
680 {
681 ASSIGN("glBeginQueryIndexed", beginQueryIndexed);
682 ASSIGN("glDrawTransformFeedbackStream", drawTransformFeedbackStream);
683 ASSIGN("glEndQueryIndexed", endQueryIndexed);
684 ASSIGN("glGetQueryIndexediv", getQueryIndexediv);
685 }
686
687 if (extensions.count("GL_ARB_transform_feedback_instanced") != 0)
688 {
689 ASSIGN("glDrawTransformFeedbackInstanced", drawTransformFeedbackInstanced);
690 ASSIGN("glDrawTransformFeedbackStreamInstanced", drawTransformFeedbackStreamInstanced);
691 }
692
693 if (extensions.count("GL_ARB_uniform_buffer_object") != 0)
694 {
695 ASSIGN("glBindBufferBase", bindBufferBase);
696 ASSIGN("glBindBufferRange", bindBufferRange);
697 ASSIGN("glGetActiveUniformBlockName", getActiveUniformBlockName);
698 ASSIGN("glGetActiveUniformBlockiv", getActiveUniformBlockiv);
699 ASSIGN("glGetActiveUniformName", getActiveUniformName);
700 ASSIGN("glGetActiveUniformsiv", getActiveUniformsiv);
701 ASSIGN("glGetIntegeri_v", getIntegeri_v);
702 ASSIGN("glGetUniformBlockIndex", getUniformBlockIndex);
703 ASSIGN("glGetUniformIndices", getUniformIndices);
704 ASSIGN("glUniformBlockBinding", uniformBlockBinding);
705 }
706
707 if (extensions.count("GL_ARB_vertex_array_object") != 0)
708 {
709 ASSIGN("glBindVertexArray", bindVertexArray);
710 ASSIGN("glDeleteVertexArrays", deleteVertexArrays);
711 ASSIGN("glGenVertexArrays", genVertexArrays);
712 ASSIGN("glIsVertexArray", isVertexArray);
713 }
714
715 if (extensions.count("GL_ARB_vertex_attrib_64bit") != 0)
716 {
717 ASSIGN("glGetVertexAttribLdv", getVertexAttribLdv);
718 ASSIGN("glVertexAttribL1d", vertexAttribL1d);
719 ASSIGN("glVertexAttribL1dv", vertexAttribL1dv);
720 ASSIGN("glVertexAttribL2d", vertexAttribL2d);
721 ASSIGN("glVertexAttribL2dv", vertexAttribL2dv);
722 ASSIGN("glVertexAttribL3d", vertexAttribL3d);
723 ASSIGN("glVertexAttribL3dv", vertexAttribL3dv);
724 ASSIGN("glVertexAttribL4d", vertexAttribL4d);
725 ASSIGN("glVertexAttribL4dv", vertexAttribL4dv);
726 ASSIGN("glVertexAttribLPointer", vertexAttribLPointer);
727 }
728
729 if (extensions.count("GL_ARB_vertex_attrib_binding") != 0)
730 {
731 ASSIGN("glBindVertexBuffer", bindVertexBuffer);
732 ASSIGN("glVertexAttribBinding", vertexAttribBinding);
733 ASSIGN("glVertexAttribFormat", vertexAttribFormat);
734 ASSIGN("glVertexAttribIFormat", vertexAttribIFormat);
735 ASSIGN("glVertexAttribLFormat", vertexAttribLFormat);
736 ASSIGN("glVertexBindingDivisor", vertexBindingDivisor);
737 }
738
739 if (extensions.count("GL_ARB_vertex_buffer_object") != 0)
740 {
741 ASSIGN("glBindBufferARB", bindBuffer);
742 ASSIGN("glBufferDataARB", bufferData);
743 ASSIGN("glBufferSubDataARB", bufferSubData);
744 ASSIGN("glDeleteBuffersARB", deleteBuffers);
745 ASSIGN("glGenBuffersARB", genBuffers);
746 ASSIGN("glGetBufferParameterivARB", getBufferParameteriv);
747 ASSIGN("glGetBufferPointervARB", getBufferPointerv);
748 ASSIGN("glGetBufferSubDataARB", getBufferSubData);
749 ASSIGN("glIsBufferARB", isBuffer);
750 ASSIGN("glMapBufferARB", mapBuffer);
751 ASSIGN("glUnmapBufferARB", unmapBuffer);
752 }
753
754 if (extensions.count("GL_ARB_vertex_program") != 0)
755 {
756 ASSIGN("glDisableVertexAttribArrayARB", disableVertexAttribArray);
757 ASSIGN("glEnableVertexAttribArrayARB", enableVertexAttribArray);
758 ASSIGN("glGetProgramivARB", getProgramiv);
759 ASSIGN("glGetVertexAttribPointervARB", getVertexAttribPointerv);
760 ASSIGN("glGetVertexAttribdvARB", getVertexAttribdv);
761 ASSIGN("glGetVertexAttribfvARB", getVertexAttribfv);
762 ASSIGN("glGetVertexAttribivARB", getVertexAttribiv);
763 ASSIGN("glIsProgramARB", isProgram);
764 ASSIGN("glVertexAttrib1dARB", vertexAttrib1d);
765 ASSIGN("glVertexAttrib1dvARB", vertexAttrib1dv);
766 ASSIGN("glVertexAttrib1fARB", vertexAttrib1f);
767 ASSIGN("glVertexAttrib1fvARB", vertexAttrib1fv);
768 ASSIGN("glVertexAttrib1sARB", vertexAttrib1s);
769 ASSIGN("glVertexAttrib1svARB", vertexAttrib1sv);
770 ASSIGN("glVertexAttrib2dARB", vertexAttrib2d);
771 ASSIGN("glVertexAttrib2dvARB", vertexAttrib2dv);
772 ASSIGN("glVertexAttrib2fARB", vertexAttrib2f);
773 ASSIGN("glVertexAttrib2fvARB", vertexAttrib2fv);
774 ASSIGN("glVertexAttrib2sARB", vertexAttrib2s);
775 ASSIGN("glVertexAttrib2svARB", vertexAttrib2sv);
776 ASSIGN("glVertexAttrib3dARB", vertexAttrib3d);
777 ASSIGN("glVertexAttrib3dvARB", vertexAttrib3dv);
778 ASSIGN("glVertexAttrib3fARB", vertexAttrib3f);
779 ASSIGN("glVertexAttrib3fvARB", vertexAttrib3fv);
780 ASSIGN("glVertexAttrib3sARB", vertexAttrib3s);
781 ASSIGN("glVertexAttrib3svARB", vertexAttrib3sv);
782 ASSIGN("glVertexAttrib4NbvARB", vertexAttrib4Nbv);
783 ASSIGN("glVertexAttrib4NivARB", vertexAttrib4Niv);
784 ASSIGN("glVertexAttrib4NsvARB", vertexAttrib4Nsv);
785 ASSIGN("glVertexAttrib4NubARB", vertexAttrib4Nub);
786 ASSIGN("glVertexAttrib4NubvARB", vertexAttrib4Nubv);
787 ASSIGN("glVertexAttrib4NuivARB", vertexAttrib4Nuiv);
788 ASSIGN("glVertexAttrib4NusvARB", vertexAttrib4Nusv);
789 ASSIGN("glVertexAttrib4bvARB", vertexAttrib4bv);
790 ASSIGN("glVertexAttrib4dARB", vertexAttrib4d);
791 ASSIGN("glVertexAttrib4dvARB", vertexAttrib4dv);
792 ASSIGN("glVertexAttrib4fARB", vertexAttrib4f);
793 ASSIGN("glVertexAttrib4fvARB", vertexAttrib4fv);
794 ASSIGN("glVertexAttrib4ivARB", vertexAttrib4iv);
795 ASSIGN("glVertexAttrib4sARB", vertexAttrib4s);
796 ASSIGN("glVertexAttrib4svARB", vertexAttrib4sv);
797 ASSIGN("glVertexAttrib4ubvARB", vertexAttrib4ubv);
798 ASSIGN("glVertexAttrib4uivARB", vertexAttrib4uiv);
799 ASSIGN("glVertexAttrib4usvARB", vertexAttrib4usv);
800 ASSIGN("glVertexAttribPointerARB", vertexAttribPointer);
801 }
802
803 if (extensions.count("GL_ARB_vertex_shader") != 0)
804 {
805 ASSIGN("glBindAttribLocationARB", bindAttribLocation);
806 ASSIGN("glDisableVertexAttribArrayARB", disableVertexAttribArray);
807 ASSIGN("glEnableVertexAttribArrayARB", enableVertexAttribArray);
808 ASSIGN("glGetActiveAttribARB", getActiveAttrib);
809 ASSIGN("glGetAttribLocationARB", getAttribLocation);
810 ASSIGN("glGetVertexAttribPointervARB", getVertexAttribPointerv);
811 ASSIGN("glGetVertexAttribdvARB", getVertexAttribdv);
812 ASSIGN("glGetVertexAttribfvARB", getVertexAttribfv);
813 ASSIGN("glGetVertexAttribivARB", getVertexAttribiv);
814 ASSIGN("glVertexAttrib1dARB", vertexAttrib1d);
815 ASSIGN("glVertexAttrib1dvARB", vertexAttrib1dv);
816 ASSIGN("glVertexAttrib1fARB", vertexAttrib1f);
817 ASSIGN("glVertexAttrib1fvARB", vertexAttrib1fv);
818 ASSIGN("glVertexAttrib1sARB", vertexAttrib1s);
819 ASSIGN("glVertexAttrib1svARB", vertexAttrib1sv);
820 ASSIGN("glVertexAttrib2dARB", vertexAttrib2d);
821 ASSIGN("glVertexAttrib2dvARB", vertexAttrib2dv);
822 ASSIGN("glVertexAttrib2fARB", vertexAttrib2f);
823 ASSIGN("glVertexAttrib2fvARB", vertexAttrib2fv);
824 ASSIGN("glVertexAttrib2sARB", vertexAttrib2s);
825 ASSIGN("glVertexAttrib2svARB", vertexAttrib2sv);
826 ASSIGN("glVertexAttrib3dARB", vertexAttrib3d);
827 ASSIGN("glVertexAttrib3dvARB", vertexAttrib3dv);
828 ASSIGN("glVertexAttrib3fARB", vertexAttrib3f);
829 ASSIGN("glVertexAttrib3fvARB", vertexAttrib3fv);
830 ASSIGN("glVertexAttrib3sARB", vertexAttrib3s);
831 ASSIGN("glVertexAttrib3svARB", vertexAttrib3sv);
832 ASSIGN("glVertexAttrib4NbvARB", vertexAttrib4Nbv);
833 ASSIGN("glVertexAttrib4NivARB", vertexAttrib4Niv);
834 ASSIGN("glVertexAttrib4NsvARB", vertexAttrib4Nsv);
835 ASSIGN("glVertexAttrib4NubARB", vertexAttrib4Nub);
836 ASSIGN("glVertexAttrib4NubvARB", vertexAttrib4Nubv);
837 ASSIGN("glVertexAttrib4NuivARB", vertexAttrib4Nuiv);
838 ASSIGN("glVertexAttrib4NusvARB", vertexAttrib4Nusv);
839 ASSIGN("glVertexAttrib4bvARB", vertexAttrib4bv);
840 ASSIGN("glVertexAttrib4dARB", vertexAttrib4d);
841 ASSIGN("glVertexAttrib4dvARB", vertexAttrib4dv);
842 ASSIGN("glVertexAttrib4fARB", vertexAttrib4f);
843 ASSIGN("glVertexAttrib4fvARB", vertexAttrib4fv);
844 ASSIGN("glVertexAttrib4ivARB", vertexAttrib4iv);
845 ASSIGN("glVertexAttrib4sARB", vertexAttrib4s);
846 ASSIGN("glVertexAttrib4svARB", vertexAttrib4sv);
847 ASSIGN("glVertexAttrib4ubvARB", vertexAttrib4ubv);
848 ASSIGN("glVertexAttrib4uivARB", vertexAttrib4uiv);
849 ASSIGN("glVertexAttrib4usvARB", vertexAttrib4usv);
850 ASSIGN("glVertexAttribPointerARB", vertexAttribPointer);
851 }
852
853 if (extensions.count("GL_ARB_vertex_type_2_10_10_10_rev") != 0)
854 {
855 ASSIGN("glVertexAttribP1ui", vertexAttribP1ui);
856 ASSIGN("glVertexAttribP1uiv", vertexAttribP1uiv);
857 ASSIGN("glVertexAttribP2ui", vertexAttribP2ui);
858 ASSIGN("glVertexAttribP2uiv", vertexAttribP2uiv);
859 ASSIGN("glVertexAttribP3ui", vertexAttribP3ui);
860 ASSIGN("glVertexAttribP3uiv", vertexAttribP3uiv);
861 ASSIGN("glVertexAttribP4ui", vertexAttribP4ui);
862 ASSIGN("glVertexAttribP4uiv", vertexAttribP4uiv);
863 }
864
865 if (extensions.count("GL_ARB_viewport_array") != 0)
866 {
867 ASSIGN("glDepthRangeArrayv", depthRangeArrayv);
868 ASSIGN("glDepthRangeIndexed", depthRangeIndexed);
869 ASSIGN("glGetDoublei_v", getDoublei_v);
870 ASSIGN("glGetFloati_v", getFloati_v);
871 ASSIGN("glScissorArrayv", scissorArrayv);
872 ASSIGN("glScissorIndexed", scissorIndexed);
873 ASSIGN("glScissorIndexedv", scissorIndexedv);
874 ASSIGN("glViewportArrayv", viewportArrayv);
875 ASSIGN("glViewportIndexedf", viewportIndexedf);
876 ASSIGN("glViewportIndexedfv", viewportIndexedfv);
877 }
878
879 if (extensions.count("GL_EXT_blend_color") != 0)
880 {
881 ASSIGN("glBlendColorEXT", blendColor);
882 }
883
884 if (extensions.count("GL_EXT_blend_equation_separate") != 0)
885 {
886 ASSIGN("glBlendEquationSeparateEXT", blendEquationSeparate);
887 }
888
889 if (extensions.count("GL_EXT_blend_func_separate") != 0)
890 {
891 ASSIGN("glBlendFuncSeparateEXT", blendFuncSeparate);
892 }
893
894 if (extensions.count("GL_EXT_blend_minmax") != 0)
895 {
896 ASSIGN("glBlendEquationEXT", blendEquation);
897 }
898
899 if (extensions.count("GL_EXT_copy_texture") != 0)
900 {
901 ASSIGN("glCopyTexImage1DEXT", copyTexImage1D);
902 ASSIGN("glCopyTexImage2DEXT", copyTexImage2D);
903 ASSIGN("glCopyTexSubImage1DEXT", copyTexSubImage1D);
904 ASSIGN("glCopyTexSubImage2DEXT", copyTexSubImage2D);
905 ASSIGN("glCopyTexSubImage3DEXT", copyTexSubImage3D);
906 }
907
908 if (extensions.count("GL_EXT_direct_state_access") != 0)
909 {
910 ASSIGN("glCheckNamedFramebufferStatusEXT", checkNamedFramebufferStatus);
911 ASSIGN("glClearNamedBufferDataEXT", clearNamedBufferData);
912 ASSIGN("glClearNamedBufferSubDataEXT", clearNamedBufferSubData);
913 ASSIGN("glCompressedTextureSubImage1DEXT", compressedTextureSubImage1D);
914 ASSIGN("glCompressedTextureSubImage2DEXT", compressedTextureSubImage2D);
915 ASSIGN("glCompressedTextureSubImage3DEXT", compressedTextureSubImage3D);
916 ASSIGN("glCopyTextureSubImage1DEXT", copyTextureSubImage1D);
917 ASSIGN("glCopyTextureSubImage2DEXT", copyTextureSubImage2D);
918 ASSIGN("glCopyTextureSubImage3DEXT", copyTextureSubImage3D);
919 ASSIGN("glDisableVertexArrayAttribEXT", disableVertexArrayAttrib);
920 ASSIGN("glEnableVertexArrayAttribEXT", enableVertexArrayAttrib);
921 ASSIGN("glFlushMappedNamedBufferRangeEXT", flushMappedNamedBufferRange);
922 ASSIGN("glGenerateTextureMipmapEXT", generateTextureMipmap);
923 ASSIGN("glGetCompressedTextureImageEXT", getCompressedTextureImage);
924 ASSIGN("glGetDoublei_vEXT", getDoublei_v);
925 ASSIGN("glGetFloati_vEXT", getFloati_v);
926 ASSIGN("glGetFramebufferParameterivEXT", getFramebufferParameteriv);
927 ASSIGN("glGetNamedBufferParameterivEXT", getNamedBufferParameteriv);
928 ASSIGN("glGetNamedBufferPointervEXT", getNamedBufferPointerv);
929 ASSIGN("glGetNamedBufferSubDataEXT", getNamedBufferSubData);
930 ASSIGN("glGetNamedFramebufferAttachmentParameterivEXT",
931 getNamedFramebufferAttachmentParameteriv);
932 ASSIGN("glGetNamedFramebufferParameterivEXT", getNamedFramebufferParameteriv);
933 ASSIGN("glGetNamedRenderbufferParameterivEXT", getNamedRenderbufferParameteriv);
934 ASSIGN("glGetTextureImageEXT", getTextureImage);
935 ASSIGN("glGetTextureLevelParameterfvEXT", getTextureLevelParameterfv);
936 ASSIGN("glGetTextureLevelParameterivEXT", getTextureLevelParameteriv);
937 ASSIGN("glGetTextureParameterIivEXT", getTextureParameterIiv);
938 ASSIGN("glGetTextureParameterIuivEXT", getTextureParameterIuiv);
939 ASSIGN("glGetTextureParameterfvEXT", getTextureParameterfv);
940 ASSIGN("glGetTextureParameterivEXT", getTextureParameteriv);
941 ASSIGN("glMapNamedBufferEXT", mapNamedBuffer);
942 ASSIGN("glMapNamedBufferRangeEXT", mapNamedBufferRange);
943 ASSIGN("glNamedBufferDataEXT", namedBufferData);
944 ASSIGN("glNamedBufferStorageEXT", namedBufferStorage);
945 ASSIGN("glNamedBufferSubDataEXT", namedBufferSubData);
946 ASSIGN("glNamedFramebufferParameteriEXT", namedFramebufferParameteri);
947 ASSIGN("glNamedFramebufferRenderbufferEXT", namedFramebufferRenderbuffer);
948 ASSIGN("glNamedFramebufferTextureEXT", namedFramebufferTexture);
949 ASSIGN("glNamedFramebufferTextureLayerEXT", namedFramebufferTextureLayer);
950 ASSIGN("glNamedRenderbufferStorageEXT", namedRenderbufferStorage);
951 ASSIGN("glNamedRenderbufferStorageMultisampleEXT", namedRenderbufferStorageMultisample);
952 ASSIGN("glProgramUniform1dEXT", programUniform1d);
953 ASSIGN("glProgramUniform1dvEXT", programUniform1dv);
954 ASSIGN("glProgramUniform1fEXT", programUniform1f);
955 ASSIGN("glProgramUniform1fvEXT", programUniform1fv);
956 ASSIGN("glProgramUniform1iEXT", programUniform1i);
957 ASSIGN("glProgramUniform1ivEXT", programUniform1iv);
958 ASSIGN("glProgramUniform1uiEXT", programUniform1ui);
959 ASSIGN("glProgramUniform1uivEXT", programUniform1uiv);
960 ASSIGN("glProgramUniform2dEXT", programUniform2d);
961 ASSIGN("glProgramUniform2dvEXT", programUniform2dv);
962 ASSIGN("glProgramUniform2fEXT", programUniform2f);
963 ASSIGN("glProgramUniform2fvEXT", programUniform2fv);
964 ASSIGN("glProgramUniform2iEXT", programUniform2i);
965 ASSIGN("glProgramUniform2ivEXT", programUniform2iv);
966 ASSIGN("glProgramUniform2uiEXT", programUniform2ui);
967 ASSIGN("glProgramUniform2uivEXT", programUniform2uiv);
968 ASSIGN("glProgramUniform3dEXT", programUniform3d);
969 ASSIGN("glProgramUniform3dvEXT", programUniform3dv);
970 ASSIGN("glProgramUniform3fEXT", programUniform3f);
971 ASSIGN("glProgramUniform3fvEXT", programUniform3fv);
972 ASSIGN("glProgramUniform3iEXT", programUniform3i);
973 ASSIGN("glProgramUniform3ivEXT", programUniform3iv);
974 ASSIGN("glProgramUniform3uiEXT", programUniform3ui);
975 ASSIGN("glProgramUniform3uivEXT", programUniform3uiv);
976 ASSIGN("glProgramUniform4dEXT", programUniform4d);
977 ASSIGN("glProgramUniform4dvEXT", programUniform4dv);
978 ASSIGN("glProgramUniform4fEXT", programUniform4f);
979 ASSIGN("glProgramUniform4fvEXT", programUniform4fv);
980 ASSIGN("glProgramUniform4iEXT", programUniform4i);
981 ASSIGN("glProgramUniform4ivEXT", programUniform4iv);
982 ASSIGN("glProgramUniform4uiEXT", programUniform4ui);
983 ASSIGN("glProgramUniform4uivEXT", programUniform4uiv);
984 ASSIGN("glProgramUniformMatrix2dvEXT", programUniformMatrix2dv);
985 ASSIGN("glProgramUniformMatrix2fvEXT", programUniformMatrix2fv);
986 ASSIGN("glProgramUniformMatrix2x3dvEXT", programUniformMatrix2x3dv);
987 ASSIGN("glProgramUniformMatrix2x3fvEXT", programUniformMatrix2x3fv);
988 ASSIGN("glProgramUniformMatrix2x4dvEXT", programUniformMatrix2x4dv);
989 ASSIGN("glProgramUniformMatrix2x4fvEXT", programUniformMatrix2x4fv);
990 ASSIGN("glProgramUniformMatrix3dvEXT", programUniformMatrix3dv);
991 ASSIGN("glProgramUniformMatrix3fvEXT", programUniformMatrix3fv);
992 ASSIGN("glProgramUniformMatrix3x2dvEXT", programUniformMatrix3x2dv);
993 ASSIGN("glProgramUniformMatrix3x2fvEXT", programUniformMatrix3x2fv);
994 ASSIGN("glProgramUniformMatrix3x4dvEXT", programUniformMatrix3x4dv);
995 ASSIGN("glProgramUniformMatrix3x4fvEXT", programUniformMatrix3x4fv);
996 ASSIGN("glProgramUniformMatrix4dvEXT", programUniformMatrix4dv);
997 ASSIGN("glProgramUniformMatrix4fvEXT", programUniformMatrix4fv);
998 ASSIGN("glProgramUniformMatrix4x2dvEXT", programUniformMatrix4x2dv);
999 ASSIGN("glProgramUniformMatrix4x2fvEXT", programUniformMatrix4x2fv);
1000 ASSIGN("glProgramUniformMatrix4x3dvEXT", programUniformMatrix4x3dv);
1001 ASSIGN("glProgramUniformMatrix4x3fvEXT", programUniformMatrix4x3fv);
1002 ASSIGN("glTextureBufferEXT", textureBuffer);
1003 ASSIGN("glTextureBufferRangeEXT", textureBufferRange);
1004 ASSIGN("glTextureParameterIivEXT", textureParameterIiv);
1005 ASSIGN("glTextureParameterIuivEXT", textureParameterIuiv);
1006 ASSIGN("glTextureParameterfEXT", textureParameterf);
1007 ASSIGN("glTextureParameterfvEXT", textureParameterfv);
1008 ASSIGN("glTextureParameteriEXT", textureParameteri);
1009 ASSIGN("glTextureParameterivEXT", textureParameteriv);
1010 ASSIGN("glTextureStorage2DMultisampleEXT", textureStorage2DMultisample);
1011 ASSIGN("glTextureStorage3DMultisampleEXT", textureStorage3DMultisample);
1012 ASSIGN("glTextureSubImage1DEXT", textureSubImage1D);
1013 ASSIGN("glTextureSubImage2DEXT", textureSubImage2D);
1014 ASSIGN("glTextureSubImage3DEXT", textureSubImage3D);
1015 ASSIGN("glUnmapNamedBufferEXT", unmapNamedBuffer);
1016 }
1017
1018 if (extensions.count("GL_EXT_draw_range_elements") != 0)
1019 {
1020 ASSIGN("glDrawRangeElementsEXT", drawRangeElements);
1021 }
1022
1023 if (extensions.count("GL_EXT_framebuffer_blit") != 0)
1024 {
1025 ASSIGN("glBlitFramebufferEXT", blitFramebuffer);
1026 ASSIGN("glBlitFramebufferEXT", blitFramebufferEXT);
1027 }
1028
1029 if (extensions.count("GL_EXT_framebuffer_multisample") != 0)
1030 {
1031 ASSIGN("glRenderbufferStorageMultisampleEXT", renderbufferStorageMultisample);
1032 ASSIGN("glRenderbufferStorageMultisampleEXT", renderbufferStorageMultisampleEXT);
1033 }
1034
1035 if (extensions.count("GL_EXT_framebuffer_object") != 0)
1036 {
1037 ASSIGN("glBindFramebufferEXT", bindFramebuffer);
1038 ASSIGN("glBindRenderbufferEXT", bindRenderbuffer);
1039 ASSIGN("glCheckFramebufferStatusEXT", checkFramebufferStatus);
1040 ASSIGN("glDeleteFramebuffersEXT", deleteFramebuffers);
1041 ASSIGN("glDeleteRenderbuffersEXT", deleteRenderbuffers);
1042 ASSIGN("glFramebufferRenderbufferEXT", framebufferRenderbuffer);
1043 ASSIGN("glFramebufferTexture1DEXT", framebufferTexture1D);
1044 ASSIGN("glFramebufferTexture2DEXT", framebufferTexture2D);
1045 ASSIGN("glFramebufferTexture3DEXT", framebufferTexture3D);
1046 ASSIGN("glGenFramebuffersEXT", genFramebuffers);
1047 ASSIGN("glGenRenderbuffersEXT", genRenderbuffers);
1048 ASSIGN("glGenerateMipmapEXT", generateMipmap);
1049 ASSIGN("glGetFramebufferAttachmentParameterivEXT", getFramebufferAttachmentParameteriv);
1050 ASSIGN("glGetRenderbufferParameterivEXT", getRenderbufferParameteriv);
1051 ASSIGN("glIsFramebufferEXT", isFramebuffer);
1052 ASSIGN("glIsRenderbufferEXT", isRenderbuffer);
1053 ASSIGN("glRenderbufferStorageEXT", renderbufferStorage);
1054 }
1055
1056 if (extensions.count("GL_EXT_geometry_shader4") != 0)
1057 {
1058 ASSIGN("glProgramParameteriEXT", programParameteri);
1059 }
1060
1061 if (extensions.count("GL_EXT_gpu_shader4") != 0)
1062 {
1063 ASSIGN("glBindFragDataLocationEXT", bindFragDataLocation);
1064 ASSIGN("glGetFragDataLocationEXT", getFragDataLocation);
1065 ASSIGN("glGetUniformuivEXT", getUniformuiv);
1066 ASSIGN("glGetVertexAttribIivEXT", getVertexAttribIiv);
1067 ASSIGN("glGetVertexAttribIuivEXT", getVertexAttribIuiv);
1068 ASSIGN("glUniform1uiEXT", uniform1ui);
1069 ASSIGN("glUniform1uivEXT", uniform1uiv);
1070 ASSIGN("glUniform2uiEXT", uniform2ui);
1071 ASSIGN("glUniform2uivEXT", uniform2uiv);
1072 ASSIGN("glUniform3uiEXT", uniform3ui);
1073 ASSIGN("glUniform3uivEXT", uniform3uiv);
1074 ASSIGN("glUniform4uiEXT", uniform4ui);
1075 ASSIGN("glUniform4uivEXT", uniform4uiv);
1076 ASSIGN("glVertexAttribI1iEXT", vertexAttribI1i);
1077 ASSIGN("glVertexAttribI1ivEXT", vertexAttribI1iv);
1078 ASSIGN("glVertexAttribI1uiEXT", vertexAttribI1ui);
1079 ASSIGN("glVertexAttribI1uivEXT", vertexAttribI1uiv);
1080 ASSIGN("glVertexAttribI2iEXT", vertexAttribI2i);
1081 ASSIGN("glVertexAttribI2ivEXT", vertexAttribI2iv);
1082 ASSIGN("glVertexAttribI2uiEXT", vertexAttribI2ui);
1083 ASSIGN("glVertexAttribI2uivEXT", vertexAttribI2uiv);
1084 ASSIGN("glVertexAttribI3iEXT", vertexAttribI3i);
1085 ASSIGN("glVertexAttribI3ivEXT", vertexAttribI3iv);
1086 ASSIGN("glVertexAttribI3uiEXT", vertexAttribI3ui);
1087 ASSIGN("glVertexAttribI3uivEXT", vertexAttribI3uiv);
1088 ASSIGN("glVertexAttribI4bvEXT", vertexAttribI4bv);
1089 ASSIGN("glVertexAttribI4iEXT", vertexAttribI4i);
1090 ASSIGN("glVertexAttribI4ivEXT", vertexAttribI4iv);
1091 ASSIGN("glVertexAttribI4svEXT", vertexAttribI4sv);
1092 ASSIGN("glVertexAttribI4ubvEXT", vertexAttribI4ubv);
1093 ASSIGN("glVertexAttribI4uiEXT", vertexAttribI4ui);
1094 ASSIGN("glVertexAttribI4uivEXT", vertexAttribI4uiv);
1095 ASSIGN("glVertexAttribI4usvEXT", vertexAttribI4usv);
1096 ASSIGN("glVertexAttribIPointerEXT", vertexAttribIPointer);
1097 }
1098
1099 if (extensions.count("GL_EXT_point_parameters") != 0)
1100 {
1101 ASSIGN("glPointParameterfEXT", pointParameterf);
1102 ASSIGN("glPointParameterfvEXT", pointParameterfv);
1103 }
1104
1105 if (extensions.count("GL_EXT_polygon_offset") != 0)
1106 {
1107 ASSIGN("glPolygonOffsetEXT", polygonOffset);
1108 }
1109
1110 if (extensions.count("GL_EXT_provoking_vertex") != 0)
1111 {
1112 ASSIGN("glProvokingVertexEXT", provokingVertex);
1113 }
1114
1115 if (extensions.count("GL_EXT_shader_image_load_store") != 0)
1116 {
1117 ASSIGN("glBindImageTextureEXT", bindImageTexture);
1118 ASSIGN("glMemoryBarrierEXT", memoryBarrier);
1119 }
1120
1121 if (extensions.count("GL_EXT_subtexture") != 0)
1122 {
1123 ASSIGN("glTexSubImage1DEXT", texSubImage1D);
1124 ASSIGN("glTexSubImage2DEXT", texSubImage2D);
1125 }
1126
1127 if (extensions.count("GL_EXT_texture3D") != 0)
1128 {
1129 ASSIGN("glTexImage3DEXT", texImage3D);
1130 ASSIGN("glTexSubImage3DEXT", texSubImage3D);
1131 }
1132
1133 if (extensions.count("GL_EXT_texture_array") != 0)
1134 {
1135 ASSIGN("glFramebufferTextureLayerEXT", framebufferTextureLayer);
1136 }
1137
1138 if (extensions.count("GL_EXT_texture_buffer_object") != 0)
1139 {
1140 ASSIGN("glTexBufferEXT", texBuffer);
1141 ASSIGN("glTexBufferEXT", texBufferEXT);
1142 }
1143
1144 if (extensions.count("GL_EXT_texture_integer") != 0)
1145 {
1146 ASSIGN("glGetTexParameterIivEXT", getTexParameterIiv);
1147 ASSIGN("glGetTexParameterIuivEXT", getTexParameterIuiv);
1148 ASSIGN("glTexParameterIivEXT", texParameterIiv);
1149 ASSIGN("glTexParameterIuivEXT", texParameterIuiv);
1150 }
1151
1152 if (extensions.count("GL_EXT_texture_object") != 0)
1153 {
1154 ASSIGN("glBindTextureEXT", bindTexture);
1155 ASSIGN("glDeleteTexturesEXT", deleteTextures);
1156 ASSIGN("glGenTexturesEXT", genTextures);
1157 ASSIGN("glIsTextureEXT", isTexture);
1158 }
1159
1160 if (extensions.count("GL_EXT_timer_query") != 0)
1161 {
1162 ASSIGN("glGetQueryObjecti64vEXT", getQueryObjecti64v);
1163 ASSIGN("glGetQueryObjectui64vEXT", getQueryObjectui64v);
1164 }
1165
1166 if (extensions.count("GL_EXT_transform_feedback") != 0)
1167 {
1168 ASSIGN("glBeginTransformFeedbackEXT", beginTransformFeedback);
1169 ASSIGN("glBindBufferBaseEXT", bindBufferBase);
1170 ASSIGN("glBindBufferRangeEXT", bindBufferRange);
1171 ASSIGN("glEndTransformFeedbackEXT", endTransformFeedback);
1172 ASSIGN("glGetTransformFeedbackVaryingEXT", getTransformFeedbackVarying);
1173 ASSIGN("glTransformFeedbackVaryingsEXT", transformFeedbackVaryings);
1174 }
1175
1176 if (extensions.count("GL_EXT_vertex_array") != 0)
1177 {
1178 ASSIGN("glDrawArraysEXT", drawArrays);
1179 ASSIGN("glGetPointervEXT", getPointerv);
1180 }
1181
1182 if (extensions.count("GL_EXT_vertex_attrib_64bit") != 0)
1183 {
1184 ASSIGN("glGetVertexAttribLdvEXT", getVertexAttribLdv);
1185 ASSIGN("glVertexAttribL1dEXT", vertexAttribL1d);
1186 ASSIGN("glVertexAttribL1dvEXT", vertexAttribL1dv);
1187 ASSIGN("glVertexAttribL2dEXT", vertexAttribL2d);
1188 ASSIGN("glVertexAttribL2dvEXT", vertexAttribL2dv);
1189 ASSIGN("glVertexAttribL3dEXT", vertexAttribL3d);
1190 ASSIGN("glVertexAttribL3dvEXT", vertexAttribL3dv);
1191 ASSIGN("glVertexAttribL4dEXT", vertexAttribL4d);
1192 ASSIGN("glVertexAttribL4dvEXT", vertexAttribL4dv);
1193 ASSIGN("glVertexAttribLPointerEXT", vertexAttribLPointer);
1194 }
1195
1196 if (extensions.count("GL_KHR_debug") != 0)
1197 {
1198 ASSIGN("glDebugMessageCallback", debugMessageCallback);
1199 ASSIGN("glDebugMessageControl", debugMessageControl);
1200 ASSIGN("glDebugMessageInsert", debugMessageInsert);
1201 ASSIGN("glGetDebugMessageLog", getDebugMessageLog);
1202 ASSIGN("glGetObjectLabel", getObjectLabel);
1203 ASSIGN("glGetObjectPtrLabel", getObjectPtrLabel);
1204 ASSIGN("glGetPointerv", getPointerv);
1205 ASSIGN("glObjectLabel", objectLabel);
1206 ASSIGN("glObjectPtrLabel", objectPtrLabel);
1207 ASSIGN("glPopDebugGroup", popDebugGroup);
1208 ASSIGN("glPushDebugGroup", pushDebugGroup);
1209 }
1210
1211 if (extensions.count("GL_KHR_robustness") != 0)
1212 {
1213 ASSIGN("glGetGraphicsResetStatus", getGraphicsResetStatus);
1214 ASSIGN("glGetnUniformfv", getnUniformfv);
1215 ASSIGN("glGetnUniformiv", getnUniformiv);
1216 ASSIGN("glGetnUniformuiv", getnUniformuiv);
1217 ASSIGN("glReadnPixels", readnPixels);
1218 }
1219
1220 if (extensions.count("GL_NV_geometry_program4") != 0)
1221 {
1222 ASSIGN("glFramebufferTextureEXT", framebufferTexture);
1223 ASSIGN("glFramebufferTextureLayerEXT", framebufferTextureLayer);
1224 }
1225
1226 if (extensions.count("GL_NV_vertex_program4") != 0)
1227 {
1228 ASSIGN("glGetVertexAttribIivEXT", getVertexAttribIiv);
1229 ASSIGN("glGetVertexAttribIuivEXT", getVertexAttribIuiv);
1230 ASSIGN("glVertexAttribI1iEXT", vertexAttribI1i);
1231 ASSIGN("glVertexAttribI1ivEXT", vertexAttribI1iv);
1232 ASSIGN("glVertexAttribI1uiEXT", vertexAttribI1ui);
1233 ASSIGN("glVertexAttribI1uivEXT", vertexAttribI1uiv);
1234 ASSIGN("glVertexAttribI2iEXT", vertexAttribI2i);
1235 ASSIGN("glVertexAttribI2ivEXT", vertexAttribI2iv);
1236 ASSIGN("glVertexAttribI2uiEXT", vertexAttribI2ui);
1237 ASSIGN("glVertexAttribI2uivEXT", vertexAttribI2uiv);
1238 ASSIGN("glVertexAttribI3iEXT", vertexAttribI3i);
1239 ASSIGN("glVertexAttribI3ivEXT", vertexAttribI3iv);
1240 ASSIGN("glVertexAttribI3uiEXT", vertexAttribI3ui);
1241 ASSIGN("glVertexAttribI3uivEXT", vertexAttribI3uiv);
1242 ASSIGN("glVertexAttribI4bvEXT", vertexAttribI4bv);
1243 ASSIGN("glVertexAttribI4iEXT", vertexAttribI4i);
1244 ASSIGN("glVertexAttribI4ivEXT", vertexAttribI4iv);
1245 ASSIGN("glVertexAttribI4svEXT", vertexAttribI4sv);
1246 ASSIGN("glVertexAttribI4ubvEXT", vertexAttribI4ubv);
1247 ASSIGN("glVertexAttribI4uiEXT", vertexAttribI4ui);
1248 ASSIGN("glVertexAttribI4uivEXT", vertexAttribI4uiv);
1249 ASSIGN("glVertexAttribI4usvEXT", vertexAttribI4usv);
1250 ASSIGN("glVertexAttribIPointerEXT", vertexAttribIPointer);
1251 }
1252
1253 if (extensions.count("GL_OES_single_precision") != 0)
1254 {
1255 ASSIGN("glClearDepthfOES", clearDepthf);
1256 ASSIGN("glDepthRangefOES", depthRangef);
1257 }
1258
1259 if (version >= gl::Version(1, 0))
1260 {
1261 ASSIGN("glBlendFunc", blendFunc);
1262 ASSIGN("glClear", clear);
1263 ASSIGN("glClearColor", clearColor);
1264 ASSIGN("glClearDepth", clearDepth);
1265 ASSIGN("glClearStencil", clearStencil);
1266 ASSIGN("glColorMask", colorMask);
1267 ASSIGN("glCullFace", cullFace);
1268 ASSIGN("glDepthFunc", depthFunc);
1269 ASSIGN("glDepthMask", depthMask);
1270 ASSIGN("glDepthRange", depthRange);
1271 ASSIGN("glDisable", disable);
1272 ASSIGN("glDrawBuffer", drawBuffer);
1273 ASSIGN("glEnable", enable);
1274 ASSIGN("glFinish", finish);
1275 ASSIGN("glFlush", flush);
1276 ASSIGN("glFrontFace", frontFace);
1277 ASSIGN("glGetBooleanv", getBooleanv);
1278 ASSIGN("glGetDoublev", getDoublev);
1279 ASSIGN("glGetError", getError);
1280 ASSIGN("glGetFloatv", getFloatv);
1281 ASSIGN("glGetIntegerv", getIntegerv);
1282 ASSIGN("glGetString", getString);
1283 ASSIGN("glGetTexImage", getTexImage);
1284 ASSIGN("glGetTexLevelParameterfv", getTexLevelParameterfv);
1285 ASSIGN("glGetTexLevelParameteriv", getTexLevelParameteriv);
1286 ASSIGN("glGetTexParameterfv", getTexParameterfv);
1287 ASSIGN("glGetTexParameteriv", getTexParameteriv);
1288 ASSIGN("glHint", hint);
1289 ASSIGN("glIsEnabled", isEnabled);
1290 ASSIGN("glLineWidth", lineWidth);
1291 ASSIGN("glLogicOp", logicOp);
1292 ASSIGN("glPixelStoref", pixelStoref);
1293 ASSIGN("glPixelStorei", pixelStorei);
1294 ASSIGN("glPointSize", pointSize);
1295 ASSIGN("glPolygonMode", polygonMode);
1296 ASSIGN("glReadBuffer", readBuffer);
1297 ASSIGN("glReadPixels", readPixels);
1298 ASSIGN("glScissor", scissor);
1299 ASSIGN("glStencilFunc", stencilFunc);
1300 ASSIGN("glStencilMask", stencilMask);
1301 ASSIGN("glStencilOp", stencilOp);
1302 ASSIGN("glTexImage1D", texImage1D);
1303 ASSIGN("glTexImage2D", texImage2D);
1304 ASSIGN("glTexParameterf", texParameterf);
1305 ASSIGN("glTexParameterfv", texParameterfv);
1306 ASSIGN("glTexParameteri", texParameteri);
1307 ASSIGN("glTexParameteriv", texParameteriv);
1308 ASSIGN("glViewport", viewport);
1309 }
1310
1311 if (version >= gl::Version(1, 1))
1312 {
1313 ASSIGN("glBindTexture", bindTexture);
1314 ASSIGN("glCopyTexImage1D", copyTexImage1D);
1315 ASSIGN("glCopyTexImage2D", copyTexImage2D);
1316 ASSIGN("glCopyTexSubImage1D", copyTexSubImage1D);
1317 ASSIGN("glCopyTexSubImage2D", copyTexSubImage2D);
1318 ASSIGN("glDeleteTextures", deleteTextures);
1319 ASSIGN("glDrawArrays", drawArrays);
1320 ASSIGN("glDrawElements", drawElements);
1321 ASSIGN("glGenTextures", genTextures);
1322 ASSIGN("glIsTexture", isTexture);
1323 ASSIGN("glPolygonOffset", polygonOffset);
1324 ASSIGN("glTexSubImage1D", texSubImage1D);
1325 ASSIGN("glTexSubImage2D", texSubImage2D);
1326 }
1327
1328 if (version >= gl::Version(1, 2))
1329 {
1330 ASSIGN("glCopyTexSubImage3D", copyTexSubImage3D);
1331 ASSIGN("glDrawRangeElements", drawRangeElements);
1332 ASSIGN("glTexImage3D", texImage3D);
1333 ASSIGN("glTexSubImage3D", texSubImage3D);
1334 }
1335
1336 if (version >= gl::Version(1, 3))
1337 {
1338 ASSIGN("glActiveTexture", activeTexture);
1339 ASSIGN("glCompressedTexImage1D", compressedTexImage1D);
1340 ASSIGN("glCompressedTexImage2D", compressedTexImage2D);
1341 ASSIGN("glCompressedTexImage3D", compressedTexImage3D);
1342 ASSIGN("glCompressedTexSubImage1D", compressedTexSubImage1D);
1343 ASSIGN("glCompressedTexSubImage2D", compressedTexSubImage2D);
1344 ASSIGN("glCompressedTexSubImage3D", compressedTexSubImage3D);
1345 ASSIGN("glGetCompressedTexImage", getCompressedTexImage);
1346 ASSIGN("glSampleCoverage", sampleCoverage);
1347 }
1348
1349 if (version >= gl::Version(1, 4))
1350 {
1351 ASSIGN("glBlendColor", blendColor);
1352 ASSIGN("glBlendEquation", blendEquation);
1353 ASSIGN("glBlendFuncSeparate", blendFuncSeparate);
1354 ASSIGN("glMultiDrawArrays", multiDrawArrays);
1355 ASSIGN("glMultiDrawElements", multiDrawElements);
1356 ASSIGN("glPointParameterf", pointParameterf);
1357 ASSIGN("glPointParameterfv", pointParameterfv);
1358 ASSIGN("glPointParameteri", pointParameteri);
1359 ASSIGN("glPointParameteriv", pointParameteriv);
1360 }
1361
1362 if (version >= gl::Version(1, 5))
1363 {
1364 ASSIGN("glBeginQuery", beginQuery);
1365 ASSIGN("glBindBuffer", bindBuffer);
1366 ASSIGN("glBufferData", bufferData);
1367 ASSIGN("glBufferSubData", bufferSubData);
1368 ASSIGN("glDeleteBuffers", deleteBuffers);
1369 ASSIGN("glDeleteQueries", deleteQueries);
1370 ASSIGN("glEndQuery", endQuery);
1371 ASSIGN("glGenBuffers", genBuffers);
1372 ASSIGN("glGenQueries", genQueries);
1373 ASSIGN("glGetBufferParameteriv", getBufferParameteriv);
1374 ASSIGN("glGetBufferPointerv", getBufferPointerv);
1375 ASSIGN("glGetBufferSubData", getBufferSubData);
1376 ASSIGN("glGetQueryObjectiv", getQueryObjectiv);
1377 ASSIGN("glGetQueryObjectuiv", getQueryObjectuiv);
1378 ASSIGN("glGetQueryiv", getQueryiv);
1379 ASSIGN("glIsBuffer", isBuffer);
1380 ASSIGN("glIsQuery", isQuery);
1381 ASSIGN("glMapBuffer", mapBuffer);
1382 ASSIGN("glUnmapBuffer", unmapBuffer);
1383 }
1384
1385 if (version >= gl::Version(2, 0))
1386 {
1387 ASSIGN("glAttachShader", attachShader);
1388 ASSIGN("glBindAttribLocation", bindAttribLocation);
1389 ASSIGN("glBlendEquationSeparate", blendEquationSeparate);
1390 ASSIGN("glCompileShader", compileShader);
1391 ASSIGN("glCreateProgram", createProgram);
1392 ASSIGN("glCreateShader", createShader);
1393 ASSIGN("glDeleteProgram", deleteProgram);
1394 ASSIGN("glDeleteShader", deleteShader);
1395 ASSIGN("glDetachShader", detachShader);
1396 ASSIGN("glDisableVertexAttribArray", disableVertexAttribArray);
1397 ASSIGN("glDrawBuffers", drawBuffers);
1398 ASSIGN("glEnableVertexAttribArray", enableVertexAttribArray);
1399 ASSIGN("glGetActiveAttrib", getActiveAttrib);
1400 ASSIGN("glGetActiveUniform", getActiveUniform);
1401 ASSIGN("glGetAttachedShaders", getAttachedShaders);
1402 ASSIGN("glGetAttribLocation", getAttribLocation);
1403 ASSIGN("glGetProgramInfoLog", getProgramInfoLog);
1404 ASSIGN("glGetProgramiv", getProgramiv);
1405 ASSIGN("glGetShaderInfoLog", getShaderInfoLog);
1406 ASSIGN("glGetShaderSource", getShaderSource);
1407 ASSIGN("glGetShaderiv", getShaderiv);
1408 ASSIGN("glGetUniformLocation", getUniformLocation);
1409 ASSIGN("glGetUniformfv", getUniformfv);
1410 ASSIGN("glGetUniformiv", getUniformiv);
1411 ASSIGN("glGetVertexAttribPointerv", getVertexAttribPointerv);
1412 ASSIGN("glGetVertexAttribdv", getVertexAttribdv);
1413 ASSIGN("glGetVertexAttribfv", getVertexAttribfv);
1414 ASSIGN("glGetVertexAttribiv", getVertexAttribiv);
1415 ASSIGN("glIsProgram", isProgram);
1416 ASSIGN("glIsShader", isShader);
1417 ASSIGN("glLinkProgram", linkProgram);
1418 ASSIGN("glShaderSource", shaderSource);
1419 ASSIGN("glStencilFuncSeparate", stencilFuncSeparate);
1420 ASSIGN("glStencilMaskSeparate", stencilMaskSeparate);
1421 ASSIGN("glStencilOpSeparate", stencilOpSeparate);
1422 ASSIGN("glUniform1f", uniform1f);
1423 ASSIGN("glUniform1fv", uniform1fv);
1424 ASSIGN("glUniform1i", uniform1i);
1425 ASSIGN("glUniform1iv", uniform1iv);
1426 ASSIGN("glUniform2f", uniform2f);
1427 ASSIGN("glUniform2fv", uniform2fv);
1428 ASSIGN("glUniform2i", uniform2i);
1429 ASSIGN("glUniform2iv", uniform2iv);
1430 ASSIGN("glUniform3f", uniform3f);
1431 ASSIGN("glUniform3fv", uniform3fv);
1432 ASSIGN("glUniform3i", uniform3i);
1433 ASSIGN("glUniform3iv", uniform3iv);
1434 ASSIGN("glUniform4f", uniform4f);
1435 ASSIGN("glUniform4fv", uniform4fv);
1436 ASSIGN("glUniform4i", uniform4i);
1437 ASSIGN("glUniform4iv", uniform4iv);
1438 ASSIGN("glUniformMatrix2fv", uniformMatrix2fv);
1439 ASSIGN("glUniformMatrix3fv", uniformMatrix3fv);
1440 ASSIGN("glUniformMatrix4fv", uniformMatrix4fv);
1441 ASSIGN("glUseProgram", useProgram);
1442 ASSIGN("glValidateProgram", validateProgram);
1443 ASSIGN("glVertexAttrib1d", vertexAttrib1d);
1444 ASSIGN("glVertexAttrib1dv", vertexAttrib1dv);
1445 ASSIGN("glVertexAttrib1f", vertexAttrib1f);
1446 ASSIGN("glVertexAttrib1fv", vertexAttrib1fv);
1447 ASSIGN("glVertexAttrib1s", vertexAttrib1s);
1448 ASSIGN("glVertexAttrib1sv", vertexAttrib1sv);
1449 ASSIGN("glVertexAttrib2d", vertexAttrib2d);
1450 ASSIGN("glVertexAttrib2dv", vertexAttrib2dv);
1451 ASSIGN("glVertexAttrib2f", vertexAttrib2f);
1452 ASSIGN("glVertexAttrib2fv", vertexAttrib2fv);
1453 ASSIGN("glVertexAttrib2s", vertexAttrib2s);
1454 ASSIGN("glVertexAttrib2sv", vertexAttrib2sv);
1455 ASSIGN("glVertexAttrib3d", vertexAttrib3d);
1456 ASSIGN("glVertexAttrib3dv", vertexAttrib3dv);
1457 ASSIGN("glVertexAttrib3f", vertexAttrib3f);
1458 ASSIGN("glVertexAttrib3fv", vertexAttrib3fv);
1459 ASSIGN("glVertexAttrib3s", vertexAttrib3s);
1460 ASSIGN("glVertexAttrib3sv", vertexAttrib3sv);
1461 ASSIGN("glVertexAttrib4Nbv", vertexAttrib4Nbv);
1462 ASSIGN("glVertexAttrib4Niv", vertexAttrib4Niv);
1463 ASSIGN("glVertexAttrib4Nsv", vertexAttrib4Nsv);
1464 ASSIGN("glVertexAttrib4Nub", vertexAttrib4Nub);
1465 ASSIGN("glVertexAttrib4Nubv", vertexAttrib4Nubv);
1466 ASSIGN("glVertexAttrib4Nuiv", vertexAttrib4Nuiv);
1467 ASSIGN("glVertexAttrib4Nusv", vertexAttrib4Nusv);
1468 ASSIGN("glVertexAttrib4bv", vertexAttrib4bv);
1469 ASSIGN("glVertexAttrib4d", vertexAttrib4d);
1470 ASSIGN("glVertexAttrib4dv", vertexAttrib4dv);
1471 ASSIGN("glVertexAttrib4f", vertexAttrib4f);
1472 ASSIGN("glVertexAttrib4fv", vertexAttrib4fv);
1473 ASSIGN("glVertexAttrib4iv", vertexAttrib4iv);
1474 ASSIGN("glVertexAttrib4s", vertexAttrib4s);
1475 ASSIGN("glVertexAttrib4sv", vertexAttrib4sv);
1476 ASSIGN("glVertexAttrib4ubv", vertexAttrib4ubv);
1477 ASSIGN("glVertexAttrib4uiv", vertexAttrib4uiv);
1478 ASSIGN("glVertexAttrib4usv", vertexAttrib4usv);
1479 ASSIGN("glVertexAttribPointer", vertexAttribPointer);
1480 }
1481
1482 if (version >= gl::Version(2, 1))
1483 {
1484 ASSIGN("glUniformMatrix2x3fv", uniformMatrix2x3fv);
1485 ASSIGN("glUniformMatrix2x4fv", uniformMatrix2x4fv);
1486 ASSIGN("glUniformMatrix3x2fv", uniformMatrix3x2fv);
1487 ASSIGN("glUniformMatrix3x4fv", uniformMatrix3x4fv);
1488 ASSIGN("glUniformMatrix4x2fv", uniformMatrix4x2fv);
1489 ASSIGN("glUniformMatrix4x3fv", uniformMatrix4x3fv);
1490 }
1491
1492 if (version >= gl::Version(3, 0))
1493 {
1494 ASSIGN("glBeginConditionalRender", beginConditionalRender);
1495 ASSIGN("glBeginTransformFeedback", beginTransformFeedback);
1496 ASSIGN("glBindBufferBase", bindBufferBase);
1497 ASSIGN("glBindBufferRange", bindBufferRange);
1498 ASSIGN("glBindFragDataLocation", bindFragDataLocation);
1499 ASSIGN("glBindFramebuffer", bindFramebuffer);
1500 ASSIGN("glBindRenderbuffer", bindRenderbuffer);
1501 ASSIGN("glBindVertexArray", bindVertexArray);
1502 ASSIGN("glBlitFramebuffer", blitFramebuffer);
1503 ASSIGN("glCheckFramebufferStatus", checkFramebufferStatus);
1504 ASSIGN("glClampColor", clampColor);
1505 ASSIGN("glClearBufferfi", clearBufferfi);
1506 ASSIGN("glClearBufferfv", clearBufferfv);
1507 ASSIGN("glClearBufferiv", clearBufferiv);
1508 ASSIGN("glClearBufferuiv", clearBufferuiv);
1509 ASSIGN("glColorMaski", colorMaski);
1510 ASSIGN("glDeleteFramebuffers", deleteFramebuffers);
1511 ASSIGN("glDeleteRenderbuffers", deleteRenderbuffers);
1512 ASSIGN("glDeleteVertexArrays", deleteVertexArrays);
1513 ASSIGN("glDisablei", disablei);
1514 ASSIGN("glEnablei", enablei);
1515 ASSIGN("glEndConditionalRender", endConditionalRender);
1516 ASSIGN("glEndTransformFeedback", endTransformFeedback);
1517 ASSIGN("glFlushMappedBufferRange", flushMappedBufferRange);
1518 ASSIGN("glFramebufferRenderbuffer", framebufferRenderbuffer);
1519 ASSIGN("glFramebufferTexture1D", framebufferTexture1D);
1520 ASSIGN("glFramebufferTexture2D", framebufferTexture2D);
1521 ASSIGN("glFramebufferTexture3D", framebufferTexture3D);
1522 ASSIGN("glFramebufferTextureLayer", framebufferTextureLayer);
1523 ASSIGN("glGenFramebuffers", genFramebuffers);
1524 ASSIGN("glGenRenderbuffers", genRenderbuffers);
1525 ASSIGN("glGenVertexArrays", genVertexArrays);
1526 ASSIGN("glGenerateMipmap", generateMipmap);
1527 ASSIGN("glGetBooleani_v", getBooleani_v);
1528 ASSIGN("glGetFragDataLocation", getFragDataLocation);
1529 ASSIGN("glGetFramebufferAttachmentParameteriv", getFramebufferAttachmentParameteriv);
1530 ASSIGN("glGetIntegeri_v", getIntegeri_v);
1531 ASSIGN("glGetRenderbufferParameteriv", getRenderbufferParameteriv);
1532 ASSIGN("glGetStringi", getStringi);
1533 ASSIGN("glGetTexParameterIiv", getTexParameterIiv);
1534 ASSIGN("glGetTexParameterIuiv", getTexParameterIuiv);
1535 ASSIGN("glGetTransformFeedbackVarying", getTransformFeedbackVarying);
1536 ASSIGN("glGetUniformuiv", getUniformuiv);
1537 ASSIGN("glGetVertexAttribIiv", getVertexAttribIiv);
1538 ASSIGN("glGetVertexAttribIuiv", getVertexAttribIuiv);
1539 ASSIGN("glIsEnabledi", isEnabledi);
1540 ASSIGN("glIsFramebuffer", isFramebuffer);
1541 ASSIGN("glIsRenderbuffer", isRenderbuffer);
1542 ASSIGN("glIsVertexArray", isVertexArray);
1543 ASSIGN("glMapBufferRange", mapBufferRange);
1544 ASSIGN("glRenderbufferStorage", renderbufferStorage);
1545 ASSIGN("glRenderbufferStorageMultisample", renderbufferStorageMultisample);
1546 ASSIGN("glTexParameterIiv", texParameterIiv);
1547 ASSIGN("glTexParameterIuiv", texParameterIuiv);
1548 ASSIGN("glTransformFeedbackVaryings", transformFeedbackVaryings);
1549 ASSIGN("glUniform1ui", uniform1ui);
1550 ASSIGN("glUniform1uiv", uniform1uiv);
1551 ASSIGN("glUniform2ui", uniform2ui);
1552 ASSIGN("glUniform2uiv", uniform2uiv);
1553 ASSIGN("glUniform3ui", uniform3ui);
1554 ASSIGN("glUniform3uiv", uniform3uiv);
1555 ASSIGN("glUniform4ui", uniform4ui);
1556 ASSIGN("glUniform4uiv", uniform4uiv);
1557 ASSIGN("glVertexAttribI1i", vertexAttribI1i);
1558 ASSIGN("glVertexAttribI1iv", vertexAttribI1iv);
1559 ASSIGN("glVertexAttribI1ui", vertexAttribI1ui);
1560 ASSIGN("glVertexAttribI1uiv", vertexAttribI1uiv);
1561 ASSIGN("glVertexAttribI2i", vertexAttribI2i);
1562 ASSIGN("glVertexAttribI2iv", vertexAttribI2iv);
1563 ASSIGN("glVertexAttribI2ui", vertexAttribI2ui);
1564 ASSIGN("glVertexAttribI2uiv", vertexAttribI2uiv);
1565 ASSIGN("glVertexAttribI3i", vertexAttribI3i);
1566 ASSIGN("glVertexAttribI3iv", vertexAttribI3iv);
1567 ASSIGN("glVertexAttribI3ui", vertexAttribI3ui);
1568 ASSIGN("glVertexAttribI3uiv", vertexAttribI3uiv);
1569 ASSIGN("glVertexAttribI4bv", vertexAttribI4bv);
1570 ASSIGN("glVertexAttribI4i", vertexAttribI4i);
1571 ASSIGN("glVertexAttribI4iv", vertexAttribI4iv);
1572 ASSIGN("glVertexAttribI4sv", vertexAttribI4sv);
1573 ASSIGN("glVertexAttribI4ubv", vertexAttribI4ubv);
1574 ASSIGN("glVertexAttribI4ui", vertexAttribI4ui);
1575 ASSIGN("glVertexAttribI4uiv", vertexAttribI4uiv);
1576 ASSIGN("glVertexAttribI4usv", vertexAttribI4usv);
1577 ASSIGN("glVertexAttribIPointer", vertexAttribIPointer);
1578 }
1579
1580 if (version >= gl::Version(3, 1))
1581 {
1582 ASSIGN("glCopyBufferSubData", copyBufferSubData);
1583 ASSIGN("glDrawArraysInstanced", drawArraysInstanced);
1584 ASSIGN("glDrawElementsInstanced", drawElementsInstanced);
1585 ASSIGN("glGetActiveUniformBlockName", getActiveUniformBlockName);
1586 ASSIGN("glGetActiveUniformBlockiv", getActiveUniformBlockiv);
1587 ASSIGN("glGetActiveUniformName", getActiveUniformName);
1588 ASSIGN("glGetActiveUniformsiv", getActiveUniformsiv);
1589 ASSIGN("glGetUniformBlockIndex", getUniformBlockIndex);
1590 ASSIGN("glGetUniformIndices", getUniformIndices);
1591 ASSIGN("glPrimitiveRestartIndex", primitiveRestartIndex);
1592 ASSIGN("glTexBuffer", texBuffer);
1593 ASSIGN("glUniformBlockBinding", uniformBlockBinding);
1594 }
1595
1596 if (version >= gl::Version(3, 2))
1597 {
1598 ASSIGN("glClientWaitSync", clientWaitSync);
1599 ASSIGN("glDeleteSync", deleteSync);
1600 ASSIGN("glDrawElementsBaseVertex", drawElementsBaseVertex);
1601 ASSIGN("glDrawElementsInstancedBaseVertex", drawElementsInstancedBaseVertex);
1602 ASSIGN("glDrawRangeElementsBaseVertex", drawRangeElementsBaseVertex);
1603 ASSIGN("glFenceSync", fenceSync);
1604 ASSIGN("glFramebufferTexture", framebufferTexture);
1605 ASSIGN("glGetBufferParameteri64v", getBufferParameteri64v);
1606 ASSIGN("glGetInteger64i_v", getInteger64i_v);
1607 ASSIGN("glGetInteger64v", getInteger64v);
1608 ASSIGN("glGetMultisamplefv", getMultisamplefv);
1609 ASSIGN("glGetSynciv", getSynciv);
1610 ASSIGN("glIsSync", isSync);
1611 ASSIGN("glMultiDrawElementsBaseVertex", multiDrawElementsBaseVertex);
1612 ASSIGN("glProvokingVertex", provokingVertex);
1613 ASSIGN("glSampleMaski", sampleMaski);
1614 ASSIGN("glTexImage2DMultisample", texImage2DMultisample);
1615 ASSIGN("glTexImage3DMultisample", texImage3DMultisample);
1616 ASSIGN("glWaitSync", waitSync);
1617 }
1618
1619 if (version >= gl::Version(3, 3))
1620 {
1621 ASSIGN("glBindFragDataLocationIndexed", bindFragDataLocationIndexed);
1622 ASSIGN("glBindSampler", bindSampler);
1623 ASSIGN("glDeleteSamplers", deleteSamplers);
1624 ASSIGN("glGenSamplers", genSamplers);
1625 ASSIGN("glGetFragDataIndex", getFragDataIndex);
1626 ASSIGN("glGetQueryObjecti64v", getQueryObjecti64v);
1627 ASSIGN("glGetQueryObjectui64v", getQueryObjectui64v);
1628 ASSIGN("glGetSamplerParameterIiv", getSamplerParameterIiv);
1629 ASSIGN("glGetSamplerParameterIuiv", getSamplerParameterIuiv);
1630 ASSIGN("glGetSamplerParameterfv", getSamplerParameterfv);
1631 ASSIGN("glGetSamplerParameteriv", getSamplerParameteriv);
1632 ASSIGN("glIsSampler", isSampler);
1633 ASSIGN("glQueryCounter", queryCounter);
1634 ASSIGN("glSamplerParameterIiv", samplerParameterIiv);
1635 ASSIGN("glSamplerParameterIuiv", samplerParameterIuiv);
1636 ASSIGN("glSamplerParameterf", samplerParameterf);
1637 ASSIGN("glSamplerParameterfv", samplerParameterfv);
1638 ASSIGN("glSamplerParameteri", samplerParameteri);
1639 ASSIGN("glSamplerParameteriv", samplerParameteriv);
1640 ASSIGN("glVertexAttribDivisor", vertexAttribDivisor);
1641 ASSIGN("glVertexAttribP1ui", vertexAttribP1ui);
1642 ASSIGN("glVertexAttribP1uiv", vertexAttribP1uiv);
1643 ASSIGN("glVertexAttribP2ui", vertexAttribP2ui);
1644 ASSIGN("glVertexAttribP2uiv", vertexAttribP2uiv);
1645 ASSIGN("glVertexAttribP3ui", vertexAttribP3ui);
1646 ASSIGN("glVertexAttribP3uiv", vertexAttribP3uiv);
1647 ASSIGN("glVertexAttribP4ui", vertexAttribP4ui);
1648 ASSIGN("glVertexAttribP4uiv", vertexAttribP4uiv);
1649 }
1650
1651 if (version >= gl::Version(4, 0))
1652 {
1653 ASSIGN("glBeginQueryIndexed", beginQueryIndexed);
1654 ASSIGN("glBindTransformFeedback", bindTransformFeedback);
1655 ASSIGN("glBlendEquationSeparatei", blendEquationSeparatei);
1656 ASSIGN("glBlendEquationi", blendEquationi);
1657 ASSIGN("glBlendFuncSeparatei", blendFuncSeparatei);
1658 ASSIGN("glBlendFunci", blendFunci);
1659 ASSIGN("glDeleteTransformFeedbacks", deleteTransformFeedbacks);
1660 ASSIGN("glDrawArraysIndirect", drawArraysIndirect);
1661 ASSIGN("glDrawElementsIndirect", drawElementsIndirect);
1662 ASSIGN("glDrawTransformFeedback", drawTransformFeedback);
1663 ASSIGN("glDrawTransformFeedbackStream", drawTransformFeedbackStream);
1664 ASSIGN("glEndQueryIndexed", endQueryIndexed);
1665 ASSIGN("glGenTransformFeedbacks", genTransformFeedbacks);
1666 ASSIGN("glGetActiveSubroutineName", getActiveSubroutineName);
1667 ASSIGN("glGetActiveSubroutineUniformName", getActiveSubroutineUniformName);
1668 ASSIGN("glGetActiveSubroutineUniformiv", getActiveSubroutineUniformiv);
1669 ASSIGN("glGetProgramStageiv", getProgramStageiv);
1670 ASSIGN("glGetQueryIndexediv", getQueryIndexediv);
1671 ASSIGN("glGetSubroutineIndex", getSubroutineIndex);
1672 ASSIGN("glGetSubroutineUniformLocation", getSubroutineUniformLocation);
1673 ASSIGN("glGetUniformSubroutineuiv", getUniformSubroutineuiv);
1674 ASSIGN("glGetUniformdv", getUniformdv);
1675 ASSIGN("glIsTransformFeedback", isTransformFeedback);
1676 ASSIGN("glMinSampleShading", minSampleShading);
1677 ASSIGN("glPatchParameterfv", patchParameterfv);
1678 ASSIGN("glPatchParameteri", patchParameteri);
1679 ASSIGN("glPauseTransformFeedback", pauseTransformFeedback);
1680 ASSIGN("glResumeTransformFeedback", resumeTransformFeedback);
1681 ASSIGN("glUniform1d", uniform1d);
1682 ASSIGN("glUniform1dv", uniform1dv);
1683 ASSIGN("glUniform2d", uniform2d);
1684 ASSIGN("glUniform2dv", uniform2dv);
1685 ASSIGN("glUniform3d", uniform3d);
1686 ASSIGN("glUniform3dv", uniform3dv);
1687 ASSIGN("glUniform4d", uniform4d);
1688 ASSIGN("glUniform4dv", uniform4dv);
1689 ASSIGN("glUniformMatrix2dv", uniformMatrix2dv);
1690 ASSIGN("glUniformMatrix2x3dv", uniformMatrix2x3dv);
1691 ASSIGN("glUniformMatrix2x4dv", uniformMatrix2x4dv);
1692 ASSIGN("glUniformMatrix3dv", uniformMatrix3dv);
1693 ASSIGN("glUniformMatrix3x2dv", uniformMatrix3x2dv);
1694 ASSIGN("glUniformMatrix3x4dv", uniformMatrix3x4dv);
1695 ASSIGN("glUniformMatrix4dv", uniformMatrix4dv);
1696 ASSIGN("glUniformMatrix4x2dv", uniformMatrix4x2dv);
1697 ASSIGN("glUniformMatrix4x3dv", uniformMatrix4x3dv);
1698 ASSIGN("glUniformSubroutinesuiv", uniformSubroutinesuiv);
1699 }
1700
1701 if (version >= gl::Version(4, 1))
1702 {
1703 ASSIGN("glActiveShaderProgram", activeShaderProgram);
1704 ASSIGN("glBindProgramPipeline", bindProgramPipeline);
1705 ASSIGN("glClearDepthf", clearDepthf);
1706 ASSIGN("glCreateShaderProgramv", createShaderProgramv);
1707 ASSIGN("glDeleteProgramPipelines", deleteProgramPipelines);
1708 ASSIGN("glDepthRangeArrayv", depthRangeArrayv);
1709 ASSIGN("glDepthRangeIndexed", depthRangeIndexed);
1710 ASSIGN("glDepthRangef", depthRangef);
1711 ASSIGN("glGenProgramPipelines", genProgramPipelines);
1712 ASSIGN("glGetDoublei_v", getDoublei_v);
1713 ASSIGN("glGetFloati_v", getFloati_v);
1714 ASSIGN("glGetProgramBinary", getProgramBinary);
1715 ASSIGN("glGetProgramPipelineInfoLog", getProgramPipelineInfoLog);
1716 ASSIGN("glGetProgramPipelineiv", getProgramPipelineiv);
1717 ASSIGN("glGetShaderPrecisionFormat", getShaderPrecisionFormat);
1718 ASSIGN("glGetVertexAttribLdv", getVertexAttribLdv);
1719 ASSIGN("glIsProgramPipeline", isProgramPipeline);
1720 ASSIGN("glProgramBinary", programBinary);
1721 ASSIGN("glProgramParameteri", programParameteri);
1722 ASSIGN("glProgramUniform1d", programUniform1d);
1723 ASSIGN("glProgramUniform1dv", programUniform1dv);
1724 ASSIGN("glProgramUniform1f", programUniform1f);
1725 ASSIGN("glProgramUniform1fv", programUniform1fv);
1726 ASSIGN("glProgramUniform1i", programUniform1i);
1727 ASSIGN("glProgramUniform1iv", programUniform1iv);
1728 ASSIGN("glProgramUniform1ui", programUniform1ui);
1729 ASSIGN("glProgramUniform1uiv", programUniform1uiv);
1730 ASSIGN("glProgramUniform2d", programUniform2d);
1731 ASSIGN("glProgramUniform2dv", programUniform2dv);
1732 ASSIGN("glProgramUniform2f", programUniform2f);
1733 ASSIGN("glProgramUniform2fv", programUniform2fv);
1734 ASSIGN("glProgramUniform2i", programUniform2i);
1735 ASSIGN("glProgramUniform2iv", programUniform2iv);
1736 ASSIGN("glProgramUniform2ui", programUniform2ui);
1737 ASSIGN("glProgramUniform2uiv", programUniform2uiv);
1738 ASSIGN("glProgramUniform3d", programUniform3d);
1739 ASSIGN("glProgramUniform3dv", programUniform3dv);
1740 ASSIGN("glProgramUniform3f", programUniform3f);
1741 ASSIGN("glProgramUniform3fv", programUniform3fv);
1742 ASSIGN("glProgramUniform3i", programUniform3i);
1743 ASSIGN("glProgramUniform3iv", programUniform3iv);
1744 ASSIGN("glProgramUniform3ui", programUniform3ui);
1745 ASSIGN("glProgramUniform3uiv", programUniform3uiv);
1746 ASSIGN("glProgramUniform4d", programUniform4d);
1747 ASSIGN("glProgramUniform4dv", programUniform4dv);
1748 ASSIGN("glProgramUniform4f", programUniform4f);
1749 ASSIGN("glProgramUniform4fv", programUniform4fv);
1750 ASSIGN("glProgramUniform4i", programUniform4i);
1751 ASSIGN("glProgramUniform4iv", programUniform4iv);
1752 ASSIGN("glProgramUniform4ui", programUniform4ui);
1753 ASSIGN("glProgramUniform4uiv", programUniform4uiv);
1754 ASSIGN("glProgramUniformMatrix2dv", programUniformMatrix2dv);
1755 ASSIGN("glProgramUniformMatrix2fv", programUniformMatrix2fv);
1756 ASSIGN("glProgramUniformMatrix2x3dv", programUniformMatrix2x3dv);
1757 ASSIGN("glProgramUniformMatrix2x3fv", programUniformMatrix2x3fv);
1758 ASSIGN("glProgramUniformMatrix2x4dv", programUniformMatrix2x4dv);
1759 ASSIGN("glProgramUniformMatrix2x4fv", programUniformMatrix2x4fv);
1760 ASSIGN("glProgramUniformMatrix3dv", programUniformMatrix3dv);
1761 ASSIGN("glProgramUniformMatrix3fv", programUniformMatrix3fv);
1762 ASSIGN("glProgramUniformMatrix3x2dv", programUniformMatrix3x2dv);
1763 ASSIGN("glProgramUniformMatrix3x2fv", programUniformMatrix3x2fv);
1764 ASSIGN("glProgramUniformMatrix3x4dv", programUniformMatrix3x4dv);
1765 ASSIGN("glProgramUniformMatrix3x4fv", programUniformMatrix3x4fv);
1766 ASSIGN("glProgramUniformMatrix4dv", programUniformMatrix4dv);
1767 ASSIGN("glProgramUniformMatrix4fv", programUniformMatrix4fv);
1768 ASSIGN("glProgramUniformMatrix4x2dv", programUniformMatrix4x2dv);
1769 ASSIGN("glProgramUniformMatrix4x2fv", programUniformMatrix4x2fv);
1770 ASSIGN("glProgramUniformMatrix4x3dv", programUniformMatrix4x3dv);
1771 ASSIGN("glProgramUniformMatrix4x3fv", programUniformMatrix4x3fv);
1772 ASSIGN("glReleaseShaderCompiler", releaseShaderCompiler);
1773 ASSIGN("glScissorArrayv", scissorArrayv);
1774 ASSIGN("glScissorIndexed", scissorIndexed);
1775 ASSIGN("glScissorIndexedv", scissorIndexedv);
1776 ASSIGN("glShaderBinary", shaderBinary);
1777 ASSIGN("glUseProgramStages", useProgramStages);
1778 ASSIGN("glValidateProgramPipeline", validateProgramPipeline);
1779 ASSIGN("glVertexAttribL1d", vertexAttribL1d);
1780 ASSIGN("glVertexAttribL1dv", vertexAttribL1dv);
1781 ASSIGN("glVertexAttribL2d", vertexAttribL2d);
1782 ASSIGN("glVertexAttribL2dv", vertexAttribL2dv);
1783 ASSIGN("glVertexAttribL3d", vertexAttribL3d);
1784 ASSIGN("glVertexAttribL3dv", vertexAttribL3dv);
1785 ASSIGN("glVertexAttribL4d", vertexAttribL4d);
1786 ASSIGN("glVertexAttribL4dv", vertexAttribL4dv);
1787 ASSIGN("glVertexAttribLPointer", vertexAttribLPointer);
1788 ASSIGN("glViewportArrayv", viewportArrayv);
1789 ASSIGN("glViewportIndexedf", viewportIndexedf);
1790 ASSIGN("glViewportIndexedfv", viewportIndexedfv);
1791 }
1792
1793 if (version >= gl::Version(4, 2))
1794 {
1795 ASSIGN("glBindImageTexture", bindImageTexture);
1796 ASSIGN("glDrawArraysInstancedBaseInstance", drawArraysInstancedBaseInstance);
1797 ASSIGN("glDrawElementsInstancedBaseInstance", drawElementsInstancedBaseInstance);
1798 ASSIGN("glDrawElementsInstancedBaseVertexBaseInstance",
1799 drawElementsInstancedBaseVertexBaseInstance);
1800 ASSIGN("glDrawTransformFeedbackInstanced", drawTransformFeedbackInstanced);
1801 ASSIGN("glDrawTransformFeedbackStreamInstanced", drawTransformFeedbackStreamInstanced);
1802 ASSIGN("glGetActiveAtomicCounterBufferiv", getActiveAtomicCounterBufferiv);
1803 ASSIGN("glGetInternalformativ", getInternalformativ);
1804 ASSIGN("glMemoryBarrier", memoryBarrier);
1805 ASSIGN("glTexStorage1D", texStorage1D);
1806 ASSIGN("glTexStorage2D", texStorage2D);
1807 ASSIGN("glTexStorage3D", texStorage3D);
1808 }
1809
1810 if (version >= gl::Version(4, 3))
1811 {
1812 ASSIGN("glBindVertexBuffer", bindVertexBuffer);
1813 ASSIGN("glClearBufferData", clearBufferData);
1814 ASSIGN("glClearBufferSubData", clearBufferSubData);
1815 ASSIGN("glCopyImageSubData", copyImageSubData);
1816 ASSIGN("glDebugMessageCallback", debugMessageCallback);
1817 ASSIGN("glDebugMessageControl", debugMessageControl);
1818 ASSIGN("glDebugMessageInsert", debugMessageInsert);
1819 ASSIGN("glDispatchCompute", dispatchCompute);
1820 ASSIGN("glDispatchComputeIndirect", dispatchComputeIndirect);
1821 ASSIGN("glFramebufferParameteri", framebufferParameteri);
1822 ASSIGN("glGetDebugMessageLog", getDebugMessageLog);
1823 ASSIGN("glGetFramebufferParameteriv", getFramebufferParameteriv);
1824 ASSIGN("glGetInternalformati64v", getInternalformati64v);
1825 ASSIGN("glGetObjectLabel", getObjectLabel);
1826 ASSIGN("glGetObjectPtrLabel", getObjectPtrLabel);
1827 ASSIGN("glGetPointerv", getPointerv);
1828 ASSIGN("glGetProgramInterfaceiv", getProgramInterfaceiv);
1829 ASSIGN("glGetProgramResourceIndex", getProgramResourceIndex);
1830 ASSIGN("glGetProgramResourceLocation", getProgramResourceLocation);
1831 ASSIGN("glGetProgramResourceLocationIndex", getProgramResourceLocationIndex);
1832 ASSIGN("glGetProgramResourceName", getProgramResourceName);
1833 ASSIGN("glGetProgramResourceiv", getProgramResourceiv);
1834 ASSIGN("glInvalidateBufferData", invalidateBufferData);
1835 ASSIGN("glInvalidateBufferSubData", invalidateBufferSubData);
1836 ASSIGN("glInvalidateFramebuffer", invalidateFramebuffer);
1837 ASSIGN("glInvalidateSubFramebuffer", invalidateSubFramebuffer);
1838 ASSIGN("glInvalidateTexImage", invalidateTexImage);
1839 ASSIGN("glInvalidateTexSubImage", invalidateTexSubImage);
1840 ASSIGN("glMultiDrawArraysIndirect", multiDrawArraysIndirect);
1841 ASSIGN("glMultiDrawElementsIndirect", multiDrawElementsIndirect);
1842 ASSIGN("glObjectLabel", objectLabel);
1843 ASSIGN("glObjectPtrLabel", objectPtrLabel);
1844 ASSIGN("glPopDebugGroup", popDebugGroup);
1845 ASSIGN("glPushDebugGroup", pushDebugGroup);
1846 ASSIGN("glShaderStorageBlockBinding", shaderStorageBlockBinding);
1847 ASSIGN("glTexBufferRange", texBufferRange);
1848 ASSIGN("glTexStorage2DMultisample", texStorage2DMultisample);
1849 ASSIGN("glTexStorage3DMultisample", texStorage3DMultisample);
1850 ASSIGN("glTextureView", textureView);
1851 ASSIGN("glVertexAttribBinding", vertexAttribBinding);
1852 ASSIGN("glVertexAttribFormat", vertexAttribFormat);
1853 ASSIGN("glVertexAttribIFormat", vertexAttribIFormat);
1854 ASSIGN("glVertexAttribLFormat", vertexAttribLFormat);
1855 ASSIGN("glVertexBindingDivisor", vertexBindingDivisor);
1856 }
1857
1858 if (version >= gl::Version(4, 4))
1859 {
1860 ASSIGN("glBindBuffersBase", bindBuffersBase);
1861 ASSIGN("glBindBuffersRange", bindBuffersRange);
1862 ASSIGN("glBindImageTextures", bindImageTextures);
1863 ASSIGN("glBindSamplers", bindSamplers);
1864 ASSIGN("glBindTextures", bindTextures);
1865 ASSIGN("glBindVertexBuffers", bindVertexBuffers);
1866 ASSIGN("glBufferStorage", bufferStorage);
1867 ASSIGN("glClearTexImage", clearTexImage);
1868 ASSIGN("glClearTexSubImage", clearTexSubImage);
1869 }
1870
1871 if (version >= gl::Version(4, 5))
1872 {
1873 ASSIGN("glBindTextureUnit", bindTextureUnit);
1874 ASSIGN("glBlitNamedFramebuffer", blitNamedFramebuffer);
1875 ASSIGN("glCheckNamedFramebufferStatus", checkNamedFramebufferStatus);
1876 ASSIGN("glClearNamedBufferData", clearNamedBufferData);
1877 ASSIGN("glClearNamedBufferSubData", clearNamedBufferSubData);
1878 ASSIGN("glClearNamedFramebufferfi", clearNamedFramebufferfi);
1879 ASSIGN("glClearNamedFramebufferfv", clearNamedFramebufferfv);
1880 ASSIGN("glClearNamedFramebufferiv", clearNamedFramebufferiv);
1881 ASSIGN("glClearNamedFramebufferuiv", clearNamedFramebufferuiv);
1882 ASSIGN("glClipControl", clipControl);
1883 ASSIGN("glCompressedTextureSubImage1D", compressedTextureSubImage1D);
1884 ASSIGN("glCompressedTextureSubImage2D", compressedTextureSubImage2D);
1885 ASSIGN("glCompressedTextureSubImage3D", compressedTextureSubImage3D);
1886 ASSIGN("glCopyNamedBufferSubData", copyNamedBufferSubData);
1887 ASSIGN("glCopyTextureSubImage1D", copyTextureSubImage1D);
1888 ASSIGN("glCopyTextureSubImage2D", copyTextureSubImage2D);
1889 ASSIGN("glCopyTextureSubImage3D", copyTextureSubImage3D);
1890 ASSIGN("glCreateBuffers", createBuffers);
1891 ASSIGN("glCreateFramebuffers", createFramebuffers);
1892 ASSIGN("glCreateProgramPipelines", createProgramPipelines);
1893 ASSIGN("glCreateQueries", createQueries);
1894 ASSIGN("glCreateRenderbuffers", createRenderbuffers);
1895 ASSIGN("glCreateSamplers", createSamplers);
1896 ASSIGN("glCreateTextures", createTextures);
1897 ASSIGN("glCreateTransformFeedbacks", createTransformFeedbacks);
1898 ASSIGN("glCreateVertexArrays", createVertexArrays);
1899 ASSIGN("glDisableVertexArrayAttrib", disableVertexArrayAttrib);
1900 ASSIGN("glEnableVertexArrayAttrib", enableVertexArrayAttrib);
1901 ASSIGN("glFlushMappedNamedBufferRange", flushMappedNamedBufferRange);
1902 ASSIGN("glGenerateTextureMipmap", generateTextureMipmap);
1903 ASSIGN("glGetCompressedTextureImage", getCompressedTextureImage);
1904 ASSIGN("glGetCompressedTextureSubImage", getCompressedTextureSubImage);
1905 ASSIGN("glGetGraphicsResetStatus", getGraphicsResetStatus);
1906 ASSIGN("glGetNamedBufferParameteri64v", getNamedBufferParameteri64v);
1907 ASSIGN("glGetNamedBufferParameteriv", getNamedBufferParameteriv);
1908 ASSIGN("glGetNamedBufferPointerv", getNamedBufferPointerv);
1909 ASSIGN("glGetNamedBufferSubData", getNamedBufferSubData);
1910 ASSIGN("glGetNamedFramebufferAttachmentParameteriv",
1911 getNamedFramebufferAttachmentParameteriv);
1912 ASSIGN("glGetNamedFramebufferParameteriv", getNamedFramebufferParameteriv);
1913 ASSIGN("glGetNamedRenderbufferParameteriv", getNamedRenderbufferParameteriv);
1914 ASSIGN("glGetQueryBufferObjecti64v", getQueryBufferObjecti64v);
1915 ASSIGN("glGetQueryBufferObjectiv", getQueryBufferObjectiv);
1916 ASSIGN("glGetQueryBufferObjectui64v", getQueryBufferObjectui64v);
1917 ASSIGN("glGetQueryBufferObjectuiv", getQueryBufferObjectuiv);
1918 ASSIGN("glGetTextureImage", getTextureImage);
1919 ASSIGN("glGetTextureLevelParameterfv", getTextureLevelParameterfv);
1920 ASSIGN("glGetTextureLevelParameteriv", getTextureLevelParameteriv);
1921 ASSIGN("glGetTextureParameterIiv", getTextureParameterIiv);
1922 ASSIGN("glGetTextureParameterIuiv", getTextureParameterIuiv);
1923 ASSIGN("glGetTextureParameterfv", getTextureParameterfv);
1924 ASSIGN("glGetTextureParameteriv", getTextureParameteriv);
1925 ASSIGN("glGetTextureSubImage", getTextureSubImage);
1926 ASSIGN("glGetTransformFeedbacki64_v", getTransformFeedbacki64_v);
1927 ASSIGN("glGetTransformFeedbacki_v", getTransformFeedbacki_v);
1928 ASSIGN("glGetTransformFeedbackiv", getTransformFeedbackiv);
1929 ASSIGN("glGetVertexArrayIndexed64iv", getVertexArrayIndexed64iv);
1930 ASSIGN("glGetVertexArrayIndexediv", getVertexArrayIndexediv);
1931 ASSIGN("glGetVertexArrayiv", getVertexArrayiv);
1932 ASSIGN("glGetnCompressedTexImage", getnCompressedTexImage);
1933 ASSIGN("glGetnTexImage", getnTexImage);
1934 ASSIGN("glGetnUniformdv", getnUniformdv);
1935 ASSIGN("glGetnUniformfv", getnUniformfv);
1936 ASSIGN("glGetnUniformiv", getnUniformiv);
1937 ASSIGN("glGetnUniformuiv", getnUniformuiv);
1938 ASSIGN("glInvalidateNamedFramebufferData", invalidateNamedFramebufferData);
1939 ASSIGN("glInvalidateNamedFramebufferSubData", invalidateNamedFramebufferSubData);
1940 ASSIGN("glMapNamedBuffer", mapNamedBuffer);
1941 ASSIGN("glMapNamedBufferRange", mapNamedBufferRange);
1942 ASSIGN("glMemoryBarrierByRegion", memoryBarrierByRegion);
1943 ASSIGN("glNamedBufferData", namedBufferData);
1944 ASSIGN("glNamedBufferStorage", namedBufferStorage);
1945 ASSIGN("glNamedBufferSubData", namedBufferSubData);
1946 ASSIGN("glNamedFramebufferDrawBuffer", namedFramebufferDrawBuffer);
1947 ASSIGN("glNamedFramebufferDrawBuffers", namedFramebufferDrawBuffers);
1948 ASSIGN("glNamedFramebufferParameteri", namedFramebufferParameteri);
1949 ASSIGN("glNamedFramebufferReadBuffer", namedFramebufferReadBuffer);
1950 ASSIGN("glNamedFramebufferRenderbuffer", namedFramebufferRenderbuffer);
1951 ASSIGN("glNamedFramebufferTexture", namedFramebufferTexture);
1952 ASSIGN("glNamedFramebufferTextureLayer", namedFramebufferTextureLayer);
1953 ASSIGN("glNamedRenderbufferStorage", namedRenderbufferStorage);
1954 ASSIGN("glNamedRenderbufferStorageMultisample", namedRenderbufferStorageMultisample);
1955 ASSIGN("glReadnPixels", readnPixels);
1956 ASSIGN("glTextureBarrier", textureBarrier);
1957 ASSIGN("glTextureBuffer", textureBuffer);
1958 ASSIGN("glTextureBufferRange", textureBufferRange);
1959 ASSIGN("glTextureParameterIiv", textureParameterIiv);
1960 ASSIGN("glTextureParameterIuiv", textureParameterIuiv);
1961 ASSIGN("glTextureParameterf", textureParameterf);
1962 ASSIGN("glTextureParameterfv", textureParameterfv);
1963 ASSIGN("glTextureParameteri", textureParameteri);
1964 ASSIGN("glTextureParameteriv", textureParameteriv);
1965 ASSIGN("glTextureStorage1D", textureStorage1D);
1966 ASSIGN("glTextureStorage2D", textureStorage2D);
1967 ASSIGN("glTextureStorage2DMultisample", textureStorage2DMultisample);
1968 ASSIGN("glTextureStorage3D", textureStorage3D);
1969 ASSIGN("glTextureStorage3DMultisample", textureStorage3DMultisample);
1970 ASSIGN("glTextureSubImage1D", textureSubImage1D);
1971 ASSIGN("glTextureSubImage2D", textureSubImage2D);
1972 ASSIGN("glTextureSubImage3D", textureSubImage3D);
1973 ASSIGN("glTransformFeedbackBufferBase", transformFeedbackBufferBase);
1974 ASSIGN("glTransformFeedbackBufferRange", transformFeedbackBufferRange);
1975 ASSIGN("glUnmapNamedBuffer", unmapNamedBuffer);
1976 ASSIGN("glVertexArrayAttribBinding", vertexArrayAttribBinding);
1977 ASSIGN("glVertexArrayAttribFormat", vertexArrayAttribFormat);
1978 ASSIGN("glVertexArrayAttribIFormat", vertexArrayAttribIFormat);
1979 ASSIGN("glVertexArrayAttribLFormat", vertexArrayAttribLFormat);
1980 ASSIGN("glVertexArrayBindingDivisor", vertexArrayBindingDivisor);
1981 ASSIGN("glVertexArrayElementBuffer", vertexArrayElementBuffer);
1982 ASSIGN("glVertexArrayVertexBuffer", vertexArrayVertexBuffer);
1983 ASSIGN("glVertexArrayVertexBuffers", vertexArrayVertexBuffers);
1984 }
1985 #endif // defined(ANGLE_ENABLE_GL_DESKTOP_BACKEND)
1986 }
1987
initProcsGLES(const gl::Version & version,const std::set<std::string> & extensions)1988 void DispatchTableGL::initProcsGLES(const gl::Version &version,
1989 const std::set<std::string> &extensions)
1990 {
1991 if (extensions.count("GL_EXT_base_instance") != 0)
1992 {
1993 ASSIGN("glDrawArraysInstancedBaseInstanceEXT", drawArraysInstancedBaseInstance);
1994 ASSIGN("glDrawElementsInstancedBaseInstanceEXT", drawElementsInstancedBaseInstance);
1995 ASSIGN("glDrawElementsInstancedBaseVertexBaseInstanceEXT",
1996 drawElementsInstancedBaseVertexBaseInstance);
1997 }
1998
1999 if (extensions.count("GL_EXT_blend_func_extended") != 0)
2000 {
2001 ASSIGN("glBindFragDataLocationEXT", bindFragDataLocation);
2002 ASSIGN("glBindFragDataLocationIndexedEXT", bindFragDataLocationIndexed);
2003 ASSIGN("glGetFragDataIndexEXT", getFragDataIndex);
2004 ASSIGN("glGetProgramResourceLocationIndexEXT", getProgramResourceLocationIndex);
2005 }
2006
2007 if (extensions.count("GL_EXT_buffer_storage") != 0)
2008 {
2009 ASSIGN("glBufferStorageEXT", bufferStorage);
2010 }
2011
2012 if (extensions.count("GL_EXT_clear_texture") != 0)
2013 {
2014 ASSIGN("glClearTexImageEXT", clearTexImage);
2015 ASSIGN("glClearTexSubImageEXT", clearTexSubImage);
2016 }
2017
2018 if (extensions.count("GL_EXT_clip_control") != 0)
2019 {
2020 ASSIGN("glClipControlEXT", clipControl);
2021 }
2022
2023 if (extensions.count("GL_EXT_copy_image") != 0)
2024 {
2025 ASSIGN("glCopyImageSubDataEXT", copyImageSubData);
2026 }
2027
2028 if (extensions.count("GL_EXT_discard_framebuffer") != 0)
2029 {
2030 ASSIGN("glDiscardFramebufferEXT", discardFramebufferEXT);
2031 }
2032
2033 if (extensions.count("GL_EXT_disjoint_timer_query") != 0)
2034 {
2035 ASSIGN("glBeginQueryEXT", beginQuery);
2036 ASSIGN("glDeleteQueriesEXT", deleteQueries);
2037 ASSIGN("glEndQueryEXT", endQuery);
2038 ASSIGN("glGenQueriesEXT", genQueries);
2039 ASSIGN("glGetInteger64vEXT", getInteger64v);
2040 ASSIGN("glGetQueryObjecti64vEXT", getQueryObjecti64v);
2041 ASSIGN("glGetQueryObjectivEXT", getQueryObjectiv);
2042 ASSIGN("glGetQueryObjectui64vEXT", getQueryObjectui64v);
2043 ASSIGN("glGetQueryObjectuivEXT", getQueryObjectuiv);
2044 ASSIGN("glGetQueryivEXT", getQueryiv);
2045 ASSIGN("glIsQueryEXT", isQuery);
2046 ASSIGN("glQueryCounterEXT", queryCounter);
2047 }
2048
2049 if (extensions.count("GL_EXT_draw_buffers") != 0)
2050 {
2051 ASSIGN("glDrawBuffersEXT", drawBuffers);
2052 }
2053
2054 if (extensions.count("GL_EXT_draw_buffers_indexed") != 0)
2055 {
2056 ASSIGN("glBlendEquationSeparateiEXT", blendEquationSeparatei);
2057 ASSIGN("glBlendEquationiEXT", blendEquationi);
2058 ASSIGN("glBlendFuncSeparateiEXT", blendFuncSeparatei);
2059 ASSIGN("glBlendFunciEXT", blendFunci);
2060 ASSIGN("glColorMaskiEXT", colorMaski);
2061 ASSIGN("glDisableiEXT", disablei);
2062 ASSIGN("glEnableiEXT", enablei);
2063 ASSIGN("glIsEnablediEXT", isEnabledi);
2064 }
2065
2066 if (extensions.count("GL_EXT_draw_elements_base_vertex") != 0)
2067 {
2068 ASSIGN("glDrawElementsBaseVertexEXT", drawElementsBaseVertex);
2069 ASSIGN("glDrawElementsInstancedBaseVertexEXT", drawElementsInstancedBaseVertex);
2070 ASSIGN("glDrawRangeElementsBaseVertexEXT", drawRangeElementsBaseVertex);
2071 ASSIGN("glMultiDrawElementsBaseVertexEXT", multiDrawElementsBaseVertex);
2072 }
2073
2074 if (extensions.count("GL_EXT_draw_transform_feedback") != 0)
2075 {
2076 ASSIGN("glDrawTransformFeedbackEXT", drawTransformFeedback);
2077 ASSIGN("glDrawTransformFeedbackInstancedEXT", drawTransformFeedbackInstanced);
2078 }
2079
2080 if (extensions.count("GL_EXT_geometry_shader") != 0)
2081 {
2082 ASSIGN("glFramebufferTextureEXT", framebufferTexture);
2083 }
2084
2085 if (extensions.count("GL_EXT_instanced_arrays") != 0)
2086 {
2087 ASSIGN("glVertexAttribDivisorEXT", vertexAttribDivisor);
2088 }
2089
2090 if (extensions.count("GL_EXT_map_buffer_range") != 0)
2091 {
2092 ASSIGN("glFlushMappedBufferRangeEXT", flushMappedBufferRange);
2093 ASSIGN("glMapBufferRangeEXT", mapBufferRange);
2094 }
2095
2096 if (extensions.count("GL_EXT_multi_draw_indirect") != 0)
2097 {
2098 ASSIGN("glMultiDrawArraysIndirectEXT", multiDrawArraysIndirect);
2099 ASSIGN("glMultiDrawElementsIndirectEXT", multiDrawElementsIndirect);
2100 }
2101
2102 if (extensions.count("GL_EXT_multisampled_render_to_texture") != 0)
2103 {
2104 ASSIGN("glFramebufferTexture2DMultisampleEXT", framebufferTexture2DMultisampleEXT);
2105 ASSIGN("glRenderbufferStorageMultisampleEXT", renderbufferStorageMultisample);
2106 ASSIGN("glRenderbufferStorageMultisampleEXT", renderbufferStorageMultisampleEXT);
2107 }
2108
2109 if (extensions.count("GL_EXT_multiview_draw_buffers") != 0)
2110 {
2111 ASSIGN("glGetIntegeri_vEXT", getIntegeri_v);
2112 }
2113
2114 if (extensions.count("GL_EXT_occlusion_query_boolean") != 0)
2115 {
2116 ASSIGN("glBeginQueryEXT", beginQuery);
2117 ASSIGN("glDeleteQueriesEXT", deleteQueries);
2118 ASSIGN("glEndQueryEXT", endQuery);
2119 ASSIGN("glGenQueriesEXT", genQueries);
2120 ASSIGN("glGetQueryObjectuivEXT", getQueryObjectuiv);
2121 ASSIGN("glGetQueryivEXT", getQueryiv);
2122 ASSIGN("glIsQueryEXT", isQuery);
2123 }
2124
2125 if (extensions.count("GL_EXT_primitive_bounding_box") != 0)
2126 {
2127 ASSIGN("glPrimitiveBoundingBoxEXT", primitiveBoundingBox);
2128 }
2129
2130 if (extensions.count("GL_EXT_robustness") != 0)
2131 {
2132 ASSIGN("glGetGraphicsResetStatusEXT", getGraphicsResetStatus);
2133 ASSIGN("glGetnUniformfvEXT", getnUniformfv);
2134 ASSIGN("glGetnUniformivEXT", getnUniformiv);
2135 ASSIGN("glReadnPixelsEXT", readnPixels);
2136 }
2137
2138 if (extensions.count("GL_EXT_separate_shader_objects") != 0)
2139 {
2140 ASSIGN("glActiveShaderProgramEXT", activeShaderProgram);
2141 ASSIGN("glBindProgramPipelineEXT", bindProgramPipeline);
2142 ASSIGN("glCreateShaderProgramvEXT", createShaderProgramv);
2143 ASSIGN("glDeleteProgramPipelinesEXT", deleteProgramPipelines);
2144 ASSIGN("glGenProgramPipelinesEXT", genProgramPipelines);
2145 ASSIGN("glGetProgramPipelineInfoLogEXT", getProgramPipelineInfoLog);
2146 ASSIGN("glGetProgramPipelineivEXT", getProgramPipelineiv);
2147 ASSIGN("glIsProgramPipelineEXT", isProgramPipeline);
2148 ASSIGN("glProgramParameteriEXT", programParameteri);
2149 ASSIGN("glProgramUniform1fEXT", programUniform1f);
2150 ASSIGN("glProgramUniform1fvEXT", programUniform1fv);
2151 ASSIGN("glProgramUniform1iEXT", programUniform1i);
2152 ASSIGN("glProgramUniform1ivEXT", programUniform1iv);
2153 ASSIGN("glProgramUniform1uiEXT", programUniform1ui);
2154 ASSIGN("glProgramUniform1uivEXT", programUniform1uiv);
2155 ASSIGN("glProgramUniform2fEXT", programUniform2f);
2156 ASSIGN("glProgramUniform2fvEXT", programUniform2fv);
2157 ASSIGN("glProgramUniform2iEXT", programUniform2i);
2158 ASSIGN("glProgramUniform2ivEXT", programUniform2iv);
2159 ASSIGN("glProgramUniform2uiEXT", programUniform2ui);
2160 ASSIGN("glProgramUniform2uivEXT", programUniform2uiv);
2161 ASSIGN("glProgramUniform3fEXT", programUniform3f);
2162 ASSIGN("glProgramUniform3fvEXT", programUniform3fv);
2163 ASSIGN("glProgramUniform3iEXT", programUniform3i);
2164 ASSIGN("glProgramUniform3ivEXT", programUniform3iv);
2165 ASSIGN("glProgramUniform3uiEXT", programUniform3ui);
2166 ASSIGN("glProgramUniform3uivEXT", programUniform3uiv);
2167 ASSIGN("glProgramUniform4fEXT", programUniform4f);
2168 ASSIGN("glProgramUniform4fvEXT", programUniform4fv);
2169 ASSIGN("glProgramUniform4iEXT", programUniform4i);
2170 ASSIGN("glProgramUniform4ivEXT", programUniform4iv);
2171 ASSIGN("glProgramUniform4uiEXT", programUniform4ui);
2172 ASSIGN("glProgramUniform4uivEXT", programUniform4uiv);
2173 ASSIGN("glProgramUniformMatrix2fvEXT", programUniformMatrix2fv);
2174 ASSIGN("glProgramUniformMatrix2x3fvEXT", programUniformMatrix2x3fv);
2175 ASSIGN("glProgramUniformMatrix2x4fvEXT", programUniformMatrix2x4fv);
2176 ASSIGN("glProgramUniformMatrix3fvEXT", programUniformMatrix3fv);
2177 ASSIGN("glProgramUniformMatrix3x2fvEXT", programUniformMatrix3x2fv);
2178 ASSIGN("glProgramUniformMatrix3x4fvEXT", programUniformMatrix3x4fv);
2179 ASSIGN("glProgramUniformMatrix4fvEXT", programUniformMatrix4fv);
2180 ASSIGN("glProgramUniformMatrix4x2fvEXT", programUniformMatrix4x2fv);
2181 ASSIGN("glProgramUniformMatrix4x3fvEXT", programUniformMatrix4x3fv);
2182 ASSIGN("glUseProgramStagesEXT", useProgramStages);
2183 ASSIGN("glValidateProgramPipelineEXT", validateProgramPipeline);
2184 }
2185
2186 if (extensions.count("GL_EXT_tessellation_shader") != 0)
2187 {
2188 ASSIGN("glPatchParameteriEXT", patchParameteri);
2189 }
2190
2191 if (extensions.count("GL_EXT_texture_border_clamp") != 0)
2192 {
2193 ASSIGN("glGetSamplerParameterIivEXT", getSamplerParameterIiv);
2194 ASSIGN("glGetSamplerParameterIuivEXT", getSamplerParameterIuiv);
2195 ASSIGN("glGetTexParameterIivEXT", getTexParameterIiv);
2196 ASSIGN("glGetTexParameterIuivEXT", getTexParameterIuiv);
2197 ASSIGN("glSamplerParameterIivEXT", samplerParameterIiv);
2198 ASSIGN("glSamplerParameterIuivEXT", samplerParameterIuiv);
2199 ASSIGN("glTexParameterIivEXT", texParameterIiv);
2200 ASSIGN("glTexParameterIuivEXT", texParameterIuiv);
2201 }
2202
2203 if (extensions.count("GL_EXT_texture_buffer") != 0)
2204 {
2205 ASSIGN("glTexBufferEXT", texBuffer);
2206 ASSIGN("glTexBufferEXT", texBufferEXT);
2207 ASSIGN("glTexBufferRangeEXT", texBufferRange);
2208 ASSIGN("glTexBufferRangeEXT", texBufferRangeEXT);
2209 }
2210
2211 if (extensions.count("GL_EXT_texture_view") != 0)
2212 {
2213 ASSIGN("glTextureViewEXT", textureView);
2214 }
2215
2216 if (extensions.count("GL_IMG_multisampled_render_to_texture") != 0)
2217 {
2218 ASSIGN("glFramebufferTexture2DMultisampleIMG", framebufferTexture2DMultisampleIMG);
2219 ASSIGN("glRenderbufferStorageMultisampleIMG", renderbufferStorageMultisampleIMG);
2220 }
2221
2222 if (extensions.count("GL_KHR_debug") != 0)
2223 {
2224 ASSIGN("glDebugMessageCallbackKHR", debugMessageCallback);
2225 ASSIGN("glDebugMessageControlKHR", debugMessageControl);
2226 ASSIGN("glDebugMessageInsertKHR", debugMessageInsert);
2227 ASSIGN("glGetDebugMessageLogKHR", getDebugMessageLog);
2228 ASSIGN("glGetObjectLabelKHR", getObjectLabel);
2229 ASSIGN("glGetObjectPtrLabelKHR", getObjectPtrLabel);
2230 ASSIGN("glGetPointervKHR", getPointerv);
2231 ASSIGN("glObjectLabelKHR", objectLabel);
2232 ASSIGN("glObjectPtrLabelKHR", objectPtrLabel);
2233 ASSIGN("glPopDebugGroupKHR", popDebugGroup);
2234 ASSIGN("glPushDebugGroupKHR", pushDebugGroup);
2235 }
2236
2237 if (extensions.count("GL_KHR_robustness") != 0)
2238 {
2239 ASSIGN("glGetGraphicsResetStatusKHR", getGraphicsResetStatus);
2240 ASSIGN("glGetnUniformfvKHR", getnUniformfv);
2241 ASSIGN("glGetnUniformivKHR", getnUniformiv);
2242 ASSIGN("glGetnUniformuivKHR", getnUniformuiv);
2243 ASSIGN("glReadnPixelsKHR", readnPixels);
2244 }
2245
2246 if (extensions.count("GL_NV_framebuffer_blit") != 0)
2247 {
2248 ASSIGN("glBlitFramebufferNV", blitFramebufferNV);
2249 }
2250
2251 if (extensions.count("GL_NV_polygon_mode") != 0)
2252 {
2253 ASSIGN("glPolygonModeNV", polygonModeNV);
2254 }
2255
2256 if (extensions.count("GL_OES_EGL_image") != 0)
2257 {
2258 ASSIGN("glEGLImageTargetRenderbufferStorageOES", eGLImageTargetRenderbufferStorageOES);
2259 ASSIGN("glEGLImageTargetTexture2DOES", eGLImageTargetTexture2DOES);
2260 }
2261
2262 if (extensions.count("GL_OES_copy_image") != 0)
2263 {
2264 ASSIGN("glCopyImageSubDataOES", copyImageSubData);
2265 }
2266
2267 if (extensions.count("GL_OES_draw_buffers_indexed") != 0)
2268 {
2269 ASSIGN("glBlendEquationSeparateiOES", blendEquationSeparatei);
2270 ASSIGN("glBlendEquationiOES", blendEquationi);
2271 ASSIGN("glBlendFuncSeparateiOES", blendFuncSeparatei);
2272 ASSIGN("glBlendFunciOES", blendFunci);
2273 ASSIGN("glColorMaskiOES", colorMaski);
2274 ASSIGN("glDisableiOES", disablei);
2275 ASSIGN("glEnableiOES", enablei);
2276 ASSIGN("glIsEnablediOES", isEnabledi);
2277 }
2278
2279 if (extensions.count("GL_OES_draw_elements_base_vertex") != 0)
2280 {
2281 ASSIGN("glDrawElementsBaseVertexOES", drawElementsBaseVertex);
2282 ASSIGN("glDrawElementsInstancedBaseVertexOES", drawElementsInstancedBaseVertex);
2283 ASSIGN("glDrawRangeElementsBaseVertexOES", drawRangeElementsBaseVertex);
2284 ASSIGN("glMultiDrawElementsBaseVertexEXT", multiDrawElementsBaseVertex);
2285 }
2286
2287 if (extensions.count("GL_OES_geometry_shader") != 0)
2288 {
2289 ASSIGN("glFramebufferTextureOES", framebufferTexture);
2290 }
2291
2292 if (extensions.count("GL_OES_get_program_binary") != 0)
2293 {
2294 ASSIGN("glGetProgramBinaryOES", getProgramBinary);
2295 ASSIGN("glProgramBinaryOES", programBinary);
2296 }
2297
2298 if (extensions.count("GL_OES_mapbuffer") != 0)
2299 {
2300 ASSIGN("glGetBufferPointervOES", getBufferPointerv);
2301 ASSIGN("glMapBufferOES", mapBuffer);
2302 ASSIGN("glUnmapBufferOES", unmapBuffer);
2303 }
2304
2305 if (extensions.count("GL_OES_primitive_bounding_box") != 0)
2306 {
2307 ASSIGN("glPrimitiveBoundingBoxOES", primitiveBoundingBox);
2308 }
2309
2310 if (extensions.count("GL_OES_sample_shading") != 0)
2311 {
2312 ASSIGN("glMinSampleShadingOES", minSampleShading);
2313 }
2314
2315 if (extensions.count("GL_OES_tessellation_shader") != 0)
2316 {
2317 ASSIGN("glPatchParameteriOES", patchParameteri);
2318 }
2319
2320 if (extensions.count("GL_OES_texture_3D") != 0)
2321 {
2322 ASSIGN("glCompressedTexImage3DOES", compressedTexImage3D);
2323 ASSIGN("glCompressedTexSubImage3DOES", compressedTexSubImage3D);
2324 ASSIGN("glCopyTexSubImage3DOES", copyTexSubImage3D);
2325 ASSIGN("glFramebufferTexture3DOES", framebufferTexture3D);
2326 ASSIGN("glTexImage3DOES", texImage3D);
2327 ASSIGN("glTexSubImage3DOES", texSubImage3D);
2328 }
2329
2330 if (extensions.count("GL_OES_texture_border_clamp") != 0)
2331 {
2332 ASSIGN("glGetSamplerParameterIivOES", getSamplerParameterIiv);
2333 ASSIGN("glGetSamplerParameterIuivOES", getSamplerParameterIuiv);
2334 ASSIGN("glGetTexParameterIivOES", getTexParameterIiv);
2335 ASSIGN("glGetTexParameterIuivOES", getTexParameterIuiv);
2336 ASSIGN("glSamplerParameterIivOES", samplerParameterIiv);
2337 ASSIGN("glSamplerParameterIuivOES", samplerParameterIuiv);
2338 ASSIGN("glTexParameterIivOES", texParameterIiv);
2339 ASSIGN("glTexParameterIuivOES", texParameterIuiv);
2340 }
2341
2342 if (extensions.count("GL_OES_texture_buffer") != 0)
2343 {
2344 ASSIGN("glTexBufferOES", texBuffer);
2345 ASSIGN("glTexBufferOES", texBufferOES);
2346 ASSIGN("glTexBufferRangeOES", texBufferRange);
2347 ASSIGN("glTexBufferRangeOES", texBufferRangeOES);
2348 }
2349
2350 if (extensions.count("GL_OES_texture_storage_multisample_2d_array") != 0)
2351 {
2352 ASSIGN("glTexStorage3DMultisampleOES", texStorage3DMultisample);
2353 }
2354
2355 if (extensions.count("GL_OES_texture_view") != 0)
2356 {
2357 ASSIGN("glTextureViewOES", textureView);
2358 }
2359
2360 if (extensions.count("GL_OES_vertex_array_object") != 0)
2361 {
2362 ASSIGN("glBindVertexArrayOES", bindVertexArray);
2363 ASSIGN("glDeleteVertexArraysOES", deleteVertexArrays);
2364 ASSIGN("glGenVertexArraysOES", genVertexArrays);
2365 ASSIGN("glIsVertexArrayOES", isVertexArray);
2366 }
2367
2368 if (extensions.count("GL_OES_viewport_array") != 0)
2369 {
2370 ASSIGN("glDisableiOES", disablei);
2371 ASSIGN("glEnableiOES", enablei);
2372 ASSIGN("glGetFloati_vOES", getFloati_v);
2373 ASSIGN("glIsEnablediOES", isEnabledi);
2374 ASSIGN("glScissorArrayvOES", scissorArrayv);
2375 ASSIGN("glScissorIndexedOES", scissorIndexed);
2376 ASSIGN("glScissorIndexedvOES", scissorIndexedv);
2377 ASSIGN("glViewportArrayvOES", viewportArrayv);
2378 ASSIGN("glViewportIndexedfOES", viewportIndexedf);
2379 ASSIGN("glViewportIndexedfvOES", viewportIndexedfv);
2380 }
2381
2382 if (extensions.count("GL_QCOM_tiled_rendering") != 0)
2383 {
2384 ASSIGN("glEndTilingQCOM", endTilingQCOM);
2385 ASSIGN("glStartTilingQCOM", startTilingQCOM);
2386 }
2387
2388 if (version >= gl::Version(2, 0))
2389 {
2390 ASSIGN("glActiveTexture", activeTexture);
2391 ASSIGN("glAttachShader", attachShader);
2392 ASSIGN("glBindAttribLocation", bindAttribLocation);
2393 ASSIGN("glBindBuffer", bindBuffer);
2394 ASSIGN("glBindFramebuffer", bindFramebuffer);
2395 ASSIGN("glBindRenderbuffer", bindRenderbuffer);
2396 ASSIGN("glBindTexture", bindTexture);
2397 ASSIGN("glBlendColor", blendColor);
2398 ASSIGN("glBlendEquation", blendEquation);
2399 ASSIGN("glBlendEquationSeparate", blendEquationSeparate);
2400 ASSIGN("glBlendFunc", blendFunc);
2401 ASSIGN("glBlendFuncSeparate", blendFuncSeparate);
2402 ASSIGN("glBufferData", bufferData);
2403 ASSIGN("glBufferSubData", bufferSubData);
2404 ASSIGN("glCheckFramebufferStatus", checkFramebufferStatus);
2405 ASSIGN("glClear", clear);
2406 ASSIGN("glClearColor", clearColor);
2407 ASSIGN("glClearDepthf", clearDepthf);
2408 ASSIGN("glClearStencil", clearStencil);
2409 ASSIGN("glColorMask", colorMask);
2410 ASSIGN("glCompileShader", compileShader);
2411 ASSIGN("glCompressedTexImage2D", compressedTexImage2D);
2412 ASSIGN("glCompressedTexSubImage2D", compressedTexSubImage2D);
2413 ASSIGN("glCopyTexImage2D", copyTexImage2D);
2414 ASSIGN("glCopyTexSubImage2D", copyTexSubImage2D);
2415 ASSIGN("glCreateProgram", createProgram);
2416 ASSIGN("glCreateShader", createShader);
2417 ASSIGN("glCullFace", cullFace);
2418 ASSIGN("glDeleteBuffers", deleteBuffers);
2419 ASSIGN("glDeleteFramebuffers", deleteFramebuffers);
2420 ASSIGN("glDeleteProgram", deleteProgram);
2421 ASSIGN("glDeleteRenderbuffers", deleteRenderbuffers);
2422 ASSIGN("glDeleteShader", deleteShader);
2423 ASSIGN("glDeleteTextures", deleteTextures);
2424 ASSIGN("glDepthFunc", depthFunc);
2425 ASSIGN("glDepthMask", depthMask);
2426 ASSIGN("glDepthRangef", depthRangef);
2427 ASSIGN("glDetachShader", detachShader);
2428 ASSIGN("glDisable", disable);
2429 ASSIGN("glDisableVertexAttribArray", disableVertexAttribArray);
2430 ASSIGN("glDrawArrays", drawArrays);
2431 ASSIGN("glDrawElements", drawElements);
2432 ASSIGN("glEnable", enable);
2433 ASSIGN("glEnableVertexAttribArray", enableVertexAttribArray);
2434 ASSIGN("glFinish", finish);
2435 ASSIGN("glFlush", flush);
2436 ASSIGN("glFramebufferRenderbuffer", framebufferRenderbuffer);
2437 ASSIGN("glFramebufferTexture2D", framebufferTexture2D);
2438 ASSIGN("glFrontFace", frontFace);
2439 ASSIGN("glGenBuffers", genBuffers);
2440 ASSIGN("glGenFramebuffers", genFramebuffers);
2441 ASSIGN("glGenRenderbuffers", genRenderbuffers);
2442 ASSIGN("glGenTextures", genTextures);
2443 ASSIGN("glGenerateMipmap", generateMipmap);
2444 ASSIGN("glGetActiveAttrib", getActiveAttrib);
2445 ASSIGN("glGetActiveUniform", getActiveUniform);
2446 ASSIGN("glGetAttachedShaders", getAttachedShaders);
2447 ASSIGN("glGetAttribLocation", getAttribLocation);
2448 ASSIGN("glGetBooleanv", getBooleanv);
2449 ASSIGN("glGetBufferParameteriv", getBufferParameteriv);
2450 ASSIGN("glGetError", getError);
2451 ASSIGN("glGetFloatv", getFloatv);
2452 ASSIGN("glGetFramebufferAttachmentParameteriv", getFramebufferAttachmentParameteriv);
2453 ASSIGN("glGetIntegerv", getIntegerv);
2454 ASSIGN("glGetProgramInfoLog", getProgramInfoLog);
2455 ASSIGN("glGetProgramiv", getProgramiv);
2456 ASSIGN("glGetRenderbufferParameteriv", getRenderbufferParameteriv);
2457 ASSIGN("glGetShaderInfoLog", getShaderInfoLog);
2458 ASSIGN("glGetShaderPrecisionFormat", getShaderPrecisionFormat);
2459 ASSIGN("glGetShaderSource", getShaderSource);
2460 ASSIGN("glGetShaderiv", getShaderiv);
2461 ASSIGN("glGetString", getString);
2462 ASSIGN("glGetTexParameterfv", getTexParameterfv);
2463 ASSIGN("glGetTexParameteriv", getTexParameteriv);
2464 ASSIGN("glGetUniformLocation", getUniformLocation);
2465 ASSIGN("glGetUniformfv", getUniformfv);
2466 ASSIGN("glGetUniformiv", getUniformiv);
2467 ASSIGN("glGetVertexAttribPointerv", getVertexAttribPointerv);
2468 ASSIGN("glGetVertexAttribfv", getVertexAttribfv);
2469 ASSIGN("glGetVertexAttribiv", getVertexAttribiv);
2470 ASSIGN("glHint", hint);
2471 ASSIGN("glIsBuffer", isBuffer);
2472 ASSIGN("glIsEnabled", isEnabled);
2473 ASSIGN("glIsFramebuffer", isFramebuffer);
2474 ASSIGN("glIsProgram", isProgram);
2475 ASSIGN("glIsRenderbuffer", isRenderbuffer);
2476 ASSIGN("glIsShader", isShader);
2477 ASSIGN("glIsTexture", isTexture);
2478 ASSIGN("glLineWidth", lineWidth);
2479 ASSIGN("glLinkProgram", linkProgram);
2480 ASSIGN("glPixelStorei", pixelStorei);
2481 ASSIGN("glPolygonOffset", polygonOffset);
2482 ASSIGN("glReadPixels", readPixels);
2483 ASSIGN("glReleaseShaderCompiler", releaseShaderCompiler);
2484 ASSIGN("glRenderbufferStorage", renderbufferStorage);
2485 ASSIGN("glSampleCoverage", sampleCoverage);
2486 ASSIGN("glScissor", scissor);
2487 ASSIGN("glShaderBinary", shaderBinary);
2488 ASSIGN("glShaderSource", shaderSource);
2489 ASSIGN("glStencilFunc", stencilFunc);
2490 ASSIGN("glStencilFuncSeparate", stencilFuncSeparate);
2491 ASSIGN("glStencilMask", stencilMask);
2492 ASSIGN("glStencilMaskSeparate", stencilMaskSeparate);
2493 ASSIGN("glStencilOp", stencilOp);
2494 ASSIGN("glStencilOpSeparate", stencilOpSeparate);
2495 ASSIGN("glTexImage2D", texImage2D);
2496 ASSIGN("glTexParameterf", texParameterf);
2497 ASSIGN("glTexParameterfv", texParameterfv);
2498 ASSIGN("glTexParameteri", texParameteri);
2499 ASSIGN("glTexParameteriv", texParameteriv);
2500 ASSIGN("glTexSubImage2D", texSubImage2D);
2501 ASSIGN("glUniform1f", uniform1f);
2502 ASSIGN("glUniform1fv", uniform1fv);
2503 ASSIGN("glUniform1i", uniform1i);
2504 ASSIGN("glUniform1iv", uniform1iv);
2505 ASSIGN("glUniform2f", uniform2f);
2506 ASSIGN("glUniform2fv", uniform2fv);
2507 ASSIGN("glUniform2i", uniform2i);
2508 ASSIGN("glUniform2iv", uniform2iv);
2509 ASSIGN("glUniform3f", uniform3f);
2510 ASSIGN("glUniform3fv", uniform3fv);
2511 ASSIGN("glUniform3i", uniform3i);
2512 ASSIGN("glUniform3iv", uniform3iv);
2513 ASSIGN("glUniform4f", uniform4f);
2514 ASSIGN("glUniform4fv", uniform4fv);
2515 ASSIGN("glUniform4i", uniform4i);
2516 ASSIGN("glUniform4iv", uniform4iv);
2517 ASSIGN("glUniformMatrix2fv", uniformMatrix2fv);
2518 ASSIGN("glUniformMatrix3fv", uniformMatrix3fv);
2519 ASSIGN("glUniformMatrix4fv", uniformMatrix4fv);
2520 ASSIGN("glUseProgram", useProgram);
2521 ASSIGN("glValidateProgram", validateProgram);
2522 ASSIGN("glVertexAttrib1f", vertexAttrib1f);
2523 ASSIGN("glVertexAttrib1fv", vertexAttrib1fv);
2524 ASSIGN("glVertexAttrib2f", vertexAttrib2f);
2525 ASSIGN("glVertexAttrib2fv", vertexAttrib2fv);
2526 ASSIGN("glVertexAttrib3f", vertexAttrib3f);
2527 ASSIGN("glVertexAttrib3fv", vertexAttrib3fv);
2528 ASSIGN("glVertexAttrib4f", vertexAttrib4f);
2529 ASSIGN("glVertexAttrib4fv", vertexAttrib4fv);
2530 ASSIGN("glVertexAttribPointer", vertexAttribPointer);
2531 ASSIGN("glViewport", viewport);
2532 }
2533
2534 if (version >= gl::Version(3, 0))
2535 {
2536 ASSIGN("glBeginQuery", beginQuery);
2537 ASSIGN("glBeginTransformFeedback", beginTransformFeedback);
2538 ASSIGN("glBindBufferBase", bindBufferBase);
2539 ASSIGN("glBindBufferRange", bindBufferRange);
2540 ASSIGN("glBindSampler", bindSampler);
2541 ASSIGN("glBindTransformFeedback", bindTransformFeedback);
2542 ASSIGN("glBindVertexArray", bindVertexArray);
2543 ASSIGN("glBlitFramebuffer", blitFramebuffer);
2544 ASSIGN("glClearBufferfi", clearBufferfi);
2545 ASSIGN("glClearBufferfv", clearBufferfv);
2546 ASSIGN("glClearBufferiv", clearBufferiv);
2547 ASSIGN("glClearBufferuiv", clearBufferuiv);
2548 ASSIGN("glClientWaitSync", clientWaitSync);
2549 ASSIGN("glCompressedTexImage3D", compressedTexImage3D);
2550 ASSIGN("glCompressedTexSubImage3D", compressedTexSubImage3D);
2551 ASSIGN("glCopyBufferSubData", copyBufferSubData);
2552 ASSIGN("glCopyTexSubImage3D", copyTexSubImage3D);
2553 ASSIGN("glDeleteQueries", deleteQueries);
2554 ASSIGN("glDeleteSamplers", deleteSamplers);
2555 ASSIGN("glDeleteSync", deleteSync);
2556 ASSIGN("glDeleteTransformFeedbacks", deleteTransformFeedbacks);
2557 ASSIGN("glDeleteVertexArrays", deleteVertexArrays);
2558 ASSIGN("glDrawArraysInstanced", drawArraysInstanced);
2559 ASSIGN("glDrawBuffers", drawBuffers);
2560 ASSIGN("glDrawElementsInstanced", drawElementsInstanced);
2561 ASSIGN("glDrawRangeElements", drawRangeElements);
2562 ASSIGN("glEndQuery", endQuery);
2563 ASSIGN("glEndTransformFeedback", endTransformFeedback);
2564 ASSIGN("glFenceSync", fenceSync);
2565 ASSIGN("glFlushMappedBufferRange", flushMappedBufferRange);
2566 ASSIGN("glFramebufferTextureLayer", framebufferTextureLayer);
2567 ASSIGN("glGenQueries", genQueries);
2568 ASSIGN("glGenSamplers", genSamplers);
2569 ASSIGN("glGenTransformFeedbacks", genTransformFeedbacks);
2570 ASSIGN("glGenVertexArrays", genVertexArrays);
2571 ASSIGN("glGetActiveUniformBlockName", getActiveUniformBlockName);
2572 ASSIGN("glGetActiveUniformBlockiv", getActiveUniformBlockiv);
2573 ASSIGN("glGetActiveUniformsiv", getActiveUniformsiv);
2574 ASSIGN("glGetBufferParameteri64v", getBufferParameteri64v);
2575 ASSIGN("glGetBufferPointerv", getBufferPointerv);
2576 ASSIGN("glGetFragDataLocation", getFragDataLocation);
2577 ASSIGN("glGetInteger64i_v", getInteger64i_v);
2578 ASSIGN("glGetInteger64v", getInteger64v);
2579 ASSIGN("glGetIntegeri_v", getIntegeri_v);
2580 ASSIGN("glGetInternalformativ", getInternalformativ);
2581 ASSIGN("glGetProgramBinary", getProgramBinary);
2582 ASSIGN("glGetQueryObjectuiv", getQueryObjectuiv);
2583 ASSIGN("glGetQueryiv", getQueryiv);
2584 ASSIGN("glGetSamplerParameterfv", getSamplerParameterfv);
2585 ASSIGN("glGetSamplerParameteriv", getSamplerParameteriv);
2586 ASSIGN("glGetStringi", getStringi);
2587 ASSIGN("glGetSynciv", getSynciv);
2588 ASSIGN("glGetTransformFeedbackVarying", getTransformFeedbackVarying);
2589 ASSIGN("glGetUniformBlockIndex", getUniformBlockIndex);
2590 ASSIGN("glGetUniformIndices", getUniformIndices);
2591 ASSIGN("glGetUniformuiv", getUniformuiv);
2592 ASSIGN("glGetVertexAttribIiv", getVertexAttribIiv);
2593 ASSIGN("glGetVertexAttribIuiv", getVertexAttribIuiv);
2594 ASSIGN("glInvalidateFramebuffer", invalidateFramebuffer);
2595 ASSIGN("glInvalidateSubFramebuffer", invalidateSubFramebuffer);
2596 ASSIGN("glIsQuery", isQuery);
2597 ASSIGN("glIsSampler", isSampler);
2598 ASSIGN("glIsSync", isSync);
2599 ASSIGN("glIsTransformFeedback", isTransformFeedback);
2600 ASSIGN("glIsVertexArray", isVertexArray);
2601 ASSIGN("glMapBufferRange", mapBufferRange);
2602 ASSIGN("glPauseTransformFeedback", pauseTransformFeedback);
2603 ASSIGN("glProgramBinary", programBinary);
2604 ASSIGN("glProgramParameteri", programParameteri);
2605 ASSIGN("glReadBuffer", readBuffer);
2606 ASSIGN("glRenderbufferStorageMultisample", renderbufferStorageMultisample);
2607 ASSIGN("glResumeTransformFeedback", resumeTransformFeedback);
2608 ASSIGN("glSamplerParameterf", samplerParameterf);
2609 ASSIGN("glSamplerParameterfv", samplerParameterfv);
2610 ASSIGN("glSamplerParameteri", samplerParameteri);
2611 ASSIGN("glSamplerParameteriv", samplerParameteriv);
2612 ASSIGN("glTexImage3D", texImage3D);
2613 ASSIGN("glTexStorage2D", texStorage2D);
2614 ASSIGN("glTexStorage3D", texStorage3D);
2615 ASSIGN("glTexSubImage3D", texSubImage3D);
2616 ASSIGN("glTransformFeedbackVaryings", transformFeedbackVaryings);
2617 ASSIGN("glUniform1ui", uniform1ui);
2618 ASSIGN("glUniform1uiv", uniform1uiv);
2619 ASSIGN("glUniform2ui", uniform2ui);
2620 ASSIGN("glUniform2uiv", uniform2uiv);
2621 ASSIGN("glUniform3ui", uniform3ui);
2622 ASSIGN("glUniform3uiv", uniform3uiv);
2623 ASSIGN("glUniform4ui", uniform4ui);
2624 ASSIGN("glUniform4uiv", uniform4uiv);
2625 ASSIGN("glUniformBlockBinding", uniformBlockBinding);
2626 ASSIGN("glUniformMatrix2x3fv", uniformMatrix2x3fv);
2627 ASSIGN("glUniformMatrix2x4fv", uniformMatrix2x4fv);
2628 ASSIGN("glUniformMatrix3x2fv", uniformMatrix3x2fv);
2629 ASSIGN("glUniformMatrix3x4fv", uniformMatrix3x4fv);
2630 ASSIGN("glUniformMatrix4x2fv", uniformMatrix4x2fv);
2631 ASSIGN("glUniformMatrix4x3fv", uniformMatrix4x3fv);
2632 ASSIGN("glUnmapBuffer", unmapBuffer);
2633 ASSIGN("glVertexAttribDivisor", vertexAttribDivisor);
2634 ASSIGN("glVertexAttribI4i", vertexAttribI4i);
2635 ASSIGN("glVertexAttribI4iv", vertexAttribI4iv);
2636 ASSIGN("glVertexAttribI4ui", vertexAttribI4ui);
2637 ASSIGN("glVertexAttribI4uiv", vertexAttribI4uiv);
2638 ASSIGN("glVertexAttribIPointer", vertexAttribIPointer);
2639 ASSIGN("glWaitSync", waitSync);
2640 }
2641
2642 if (version >= gl::Version(3, 1))
2643 {
2644 ASSIGN("glActiveShaderProgram", activeShaderProgram);
2645 ASSIGN("glBindImageTexture", bindImageTexture);
2646 ASSIGN("glBindProgramPipeline", bindProgramPipeline);
2647 ASSIGN("glBindVertexBuffer", bindVertexBuffer);
2648 ASSIGN("glCreateShaderProgramv", createShaderProgramv);
2649 ASSIGN("glDeleteProgramPipelines", deleteProgramPipelines);
2650 ASSIGN("glDispatchCompute", dispatchCompute);
2651 ASSIGN("glDispatchComputeIndirect", dispatchComputeIndirect);
2652 ASSIGN("glDrawArraysIndirect", drawArraysIndirect);
2653 ASSIGN("glDrawElementsIndirect", drawElementsIndirect);
2654 ASSIGN("glFramebufferParameteri", framebufferParameteri);
2655 ASSIGN("glGenProgramPipelines", genProgramPipelines);
2656 ASSIGN("glGetBooleani_v", getBooleani_v);
2657 ASSIGN("glGetFramebufferParameteriv", getFramebufferParameteriv);
2658 ASSIGN("glGetMultisamplefv", getMultisamplefv);
2659 ASSIGN("glGetProgramInterfaceiv", getProgramInterfaceiv);
2660 ASSIGN("glGetProgramPipelineInfoLog", getProgramPipelineInfoLog);
2661 ASSIGN("glGetProgramPipelineiv", getProgramPipelineiv);
2662 ASSIGN("glGetProgramResourceIndex", getProgramResourceIndex);
2663 ASSIGN("glGetProgramResourceLocation", getProgramResourceLocation);
2664 ASSIGN("glGetProgramResourceName", getProgramResourceName);
2665 ASSIGN("glGetProgramResourceiv", getProgramResourceiv);
2666 ASSIGN("glGetTexLevelParameterfv", getTexLevelParameterfv);
2667 ASSIGN("glGetTexLevelParameteriv", getTexLevelParameteriv);
2668 ASSIGN("glIsProgramPipeline", isProgramPipeline);
2669 ASSIGN("glMemoryBarrier", memoryBarrier);
2670 ASSIGN("glMemoryBarrierByRegion", memoryBarrierByRegion);
2671 ASSIGN("glProgramUniform1f", programUniform1f);
2672 ASSIGN("glProgramUniform1fv", programUniform1fv);
2673 ASSIGN("glProgramUniform1i", programUniform1i);
2674 ASSIGN("glProgramUniform1iv", programUniform1iv);
2675 ASSIGN("glProgramUniform1ui", programUniform1ui);
2676 ASSIGN("glProgramUniform1uiv", programUniform1uiv);
2677 ASSIGN("glProgramUniform2f", programUniform2f);
2678 ASSIGN("glProgramUniform2fv", programUniform2fv);
2679 ASSIGN("glProgramUniform2i", programUniform2i);
2680 ASSIGN("glProgramUniform2iv", programUniform2iv);
2681 ASSIGN("glProgramUniform2ui", programUniform2ui);
2682 ASSIGN("glProgramUniform2uiv", programUniform2uiv);
2683 ASSIGN("glProgramUniform3f", programUniform3f);
2684 ASSIGN("glProgramUniform3fv", programUniform3fv);
2685 ASSIGN("glProgramUniform3i", programUniform3i);
2686 ASSIGN("glProgramUniform3iv", programUniform3iv);
2687 ASSIGN("glProgramUniform3ui", programUniform3ui);
2688 ASSIGN("glProgramUniform3uiv", programUniform3uiv);
2689 ASSIGN("glProgramUniform4f", programUniform4f);
2690 ASSIGN("glProgramUniform4fv", programUniform4fv);
2691 ASSIGN("glProgramUniform4i", programUniform4i);
2692 ASSIGN("glProgramUniform4iv", programUniform4iv);
2693 ASSIGN("glProgramUniform4ui", programUniform4ui);
2694 ASSIGN("glProgramUniform4uiv", programUniform4uiv);
2695 ASSIGN("glProgramUniformMatrix2fv", programUniformMatrix2fv);
2696 ASSIGN("glProgramUniformMatrix2x3fv", programUniformMatrix2x3fv);
2697 ASSIGN("glProgramUniformMatrix2x4fv", programUniformMatrix2x4fv);
2698 ASSIGN("glProgramUniformMatrix3fv", programUniformMatrix3fv);
2699 ASSIGN("glProgramUniformMatrix3x2fv", programUniformMatrix3x2fv);
2700 ASSIGN("glProgramUniformMatrix3x4fv", programUniformMatrix3x4fv);
2701 ASSIGN("glProgramUniformMatrix4fv", programUniformMatrix4fv);
2702 ASSIGN("glProgramUniformMatrix4x2fv", programUniformMatrix4x2fv);
2703 ASSIGN("glProgramUniformMatrix4x3fv", programUniformMatrix4x3fv);
2704 ASSIGN("glSampleMaski", sampleMaski);
2705 ASSIGN("glTexStorage2DMultisample", texStorage2DMultisample);
2706 ASSIGN("glUseProgramStages", useProgramStages);
2707 ASSIGN("glValidateProgramPipeline", validateProgramPipeline);
2708 ASSIGN("glVertexAttribBinding", vertexAttribBinding);
2709 ASSIGN("glVertexAttribFormat", vertexAttribFormat);
2710 ASSIGN("glVertexAttribIFormat", vertexAttribIFormat);
2711 ASSIGN("glVertexBindingDivisor", vertexBindingDivisor);
2712 }
2713
2714 if (version >= gl::Version(3, 2))
2715 {
2716 ASSIGN("glBlendBarrier", blendBarrier);
2717 ASSIGN("glBlendEquationSeparatei", blendEquationSeparatei);
2718 ASSIGN("glBlendEquationi", blendEquationi);
2719 ASSIGN("glBlendFuncSeparatei", blendFuncSeparatei);
2720 ASSIGN("glBlendFunci", blendFunci);
2721 ASSIGN("glColorMaski", colorMaski);
2722 ASSIGN("glCopyImageSubData", copyImageSubData);
2723 ASSIGN("glDebugMessageCallback", debugMessageCallback);
2724 ASSIGN("glDebugMessageControl", debugMessageControl);
2725 ASSIGN("glDebugMessageInsert", debugMessageInsert);
2726 ASSIGN("glDisablei", disablei);
2727 ASSIGN("glDrawElementsBaseVertex", drawElementsBaseVertex);
2728 ASSIGN("glDrawElementsInstancedBaseVertex", drawElementsInstancedBaseVertex);
2729 ASSIGN("glDrawRangeElementsBaseVertex", drawRangeElementsBaseVertex);
2730 ASSIGN("glEnablei", enablei);
2731 ASSIGN("glFramebufferTexture", framebufferTexture);
2732 ASSIGN("glGetDebugMessageLog", getDebugMessageLog);
2733 ASSIGN("glGetGraphicsResetStatus", getGraphicsResetStatus);
2734 ASSIGN("glGetObjectLabel", getObjectLabel);
2735 ASSIGN("glGetObjectPtrLabel", getObjectPtrLabel);
2736 ASSIGN("glGetPointerv", getPointerv);
2737 ASSIGN("glGetSamplerParameterIiv", getSamplerParameterIiv);
2738 ASSIGN("glGetSamplerParameterIuiv", getSamplerParameterIuiv);
2739 ASSIGN("glGetTexParameterIiv", getTexParameterIiv);
2740 ASSIGN("glGetTexParameterIuiv", getTexParameterIuiv);
2741 ASSIGN("glGetnUniformfv", getnUniformfv);
2742 ASSIGN("glGetnUniformiv", getnUniformiv);
2743 ASSIGN("glGetnUniformuiv", getnUniformuiv);
2744 ASSIGN("glIsEnabledi", isEnabledi);
2745 ASSIGN("glMinSampleShading", minSampleShading);
2746 ASSIGN("glObjectLabel", objectLabel);
2747 ASSIGN("glObjectPtrLabel", objectPtrLabel);
2748 ASSIGN("glPatchParameteri", patchParameteri);
2749 ASSIGN("glPopDebugGroup", popDebugGroup);
2750 ASSIGN("glPrimitiveBoundingBox", primitiveBoundingBox);
2751 ASSIGN("glPushDebugGroup", pushDebugGroup);
2752 ASSIGN("glReadnPixels", readnPixels);
2753 ASSIGN("glSamplerParameterIiv", samplerParameterIiv);
2754 ASSIGN("glSamplerParameterIuiv", samplerParameterIuiv);
2755 ASSIGN("glTexBuffer", texBuffer);
2756 ASSIGN("glTexBufferRange", texBufferRange);
2757 ASSIGN("glTexParameterIiv", texParameterIiv);
2758 ASSIGN("glTexParameterIuiv", texParameterIuiv);
2759 ASSIGN("glTexStorage3DMultisample", texStorage3DMultisample);
2760 }
2761 }
2762
initProcsSharedExtensions(const std::set<std::string> & extensions)2763 void DispatchTableGL::initProcsSharedExtensions(const std::set<std::string> &extensions)
2764 {
2765 if (extensions.count("GL_EXT_debug_label") != 0)
2766 {
2767 ASSIGN("glGetObjectLabelEXT", getObjectLabel);
2768 }
2769
2770 if (extensions.count("GL_EXT_debug_marker") != 0)
2771 {
2772 ASSIGN("glInsertEventMarkerEXT", insertEventMarkerEXT);
2773 ASSIGN("glPopGroupMarkerEXT", popGroupMarkerEXT);
2774 ASSIGN("glPushGroupMarkerEXT", pushGroupMarkerEXT);
2775 }
2776
2777 if (extensions.count("GL_EXT_draw_instanced") != 0)
2778 {
2779 ASSIGN("glDrawArraysInstancedEXT", drawArraysInstanced);
2780 ASSIGN("glDrawElementsInstancedEXT", drawElementsInstanced);
2781 }
2782
2783 if (extensions.count("GL_EXT_memory_object") != 0)
2784 {
2785 ASSIGN("glBufferStorageMemEXT", bufferStorageMemEXT);
2786 ASSIGN("glCreateMemoryObjectsEXT", createMemoryObjectsEXT);
2787 ASSIGN("glDeleteMemoryObjectsEXT", deleteMemoryObjectsEXT);
2788 ASSIGN("glGetMemoryObjectParameterivEXT", getMemoryObjectParameterivEXT);
2789 ASSIGN("glGetUnsignedBytei_vEXT", getUnsignedBytei_vEXT);
2790 ASSIGN("glGetUnsignedBytevEXT", getUnsignedBytevEXT);
2791 ASSIGN("glIsMemoryObjectEXT", isMemoryObjectEXT);
2792 ASSIGN("glMemoryObjectParameterivEXT", memoryObjectParameterivEXT);
2793 ASSIGN("glNamedBufferStorageMemEXT", namedBufferStorageMemEXT);
2794 ASSIGN("glTexStorageMem2DEXT", texStorageMem2DEXT);
2795 ASSIGN("glTexStorageMem2DMultisampleEXT", texStorageMem2DMultisampleEXT);
2796 ASSIGN("glTexStorageMem3DEXT", texStorageMem3DEXT);
2797 ASSIGN("glTexStorageMem3DMultisampleEXT", texStorageMem3DMultisampleEXT);
2798 ASSIGN("glTextureStorageMem2DEXT", textureStorageMem2DEXT);
2799 ASSIGN("glTextureStorageMem2DMultisampleEXT", textureStorageMem2DMultisampleEXT);
2800 ASSIGN("glTextureStorageMem3DEXT", textureStorageMem3DEXT);
2801 ASSIGN("glTextureStorageMem3DMultisampleEXT", textureStorageMem3DMultisampleEXT);
2802 }
2803
2804 if (extensions.count("GL_EXT_memory_object_fd") != 0)
2805 {
2806 ASSIGN("glImportMemoryFdEXT", importMemoryFdEXT);
2807 }
2808
2809 if (extensions.count("GL_EXT_memory_object_win32") != 0)
2810 {
2811 ASSIGN("glImportMemoryWin32HandleEXT", importMemoryWin32HandleEXT);
2812 ASSIGN("glImportMemoryWin32NameEXT", importMemoryWin32NameEXT);
2813 }
2814
2815 if (extensions.count("GL_EXT_multi_draw_arrays") != 0)
2816 {
2817 ASSIGN("glMultiDrawArraysEXT", multiDrawArrays);
2818 ASSIGN("glMultiDrawElementsEXT", multiDrawElements);
2819 }
2820
2821 if (extensions.count("GL_EXT_polygon_offset_clamp") != 0)
2822 {
2823 ASSIGN("glPolygonOffsetClampEXT", polygonOffsetClampEXT);
2824 }
2825
2826 if (extensions.count("GL_EXT_semaphore") != 0)
2827 {
2828 ASSIGN("glDeleteSemaphoresEXT", deleteSemaphoresEXT);
2829 ASSIGN("glGenSemaphoresEXT", genSemaphoresEXT);
2830 ASSIGN("glGetSemaphoreParameterui64vEXT", getSemaphoreParameterui64vEXT);
2831 ASSIGN("glGetUnsignedBytei_vEXT", getUnsignedBytei_vEXT);
2832 ASSIGN("glGetUnsignedBytevEXT", getUnsignedBytevEXT);
2833 ASSIGN("glIsSemaphoreEXT", isSemaphoreEXT);
2834 ASSIGN("glSemaphoreParameterui64vEXT", semaphoreParameterui64vEXT);
2835 ASSIGN("glSignalSemaphoreEXT", signalSemaphoreEXT);
2836 ASSIGN("glWaitSemaphoreEXT", waitSemaphoreEXT);
2837 }
2838
2839 if (extensions.count("GL_EXT_semaphore_fd") != 0)
2840 {
2841 ASSIGN("glImportSemaphoreFdEXT", importSemaphoreFdEXT);
2842 }
2843
2844 if (extensions.count("GL_EXT_semaphore_win32") != 0)
2845 {
2846 ASSIGN("glImportSemaphoreWin32HandleEXT", importSemaphoreWin32HandleEXT);
2847 ASSIGN("glImportSemaphoreWin32NameEXT", importSemaphoreWin32NameEXT);
2848 }
2849
2850 if (extensions.count("GL_EXT_shader_framebuffer_fetch_non_coherent") != 0)
2851 {
2852 ASSIGN("glFramebufferFetchBarrierEXT", framebufferFetchBarrierEXT);
2853 }
2854
2855 if (extensions.count("GL_EXT_texture_storage") != 0)
2856 {
2857 ASSIGN("glTexStorage1DEXT", texStorage1D);
2858 ASSIGN("glTexStorage2DEXT", texStorage2D);
2859 ASSIGN("glTexStorage3DEXT", texStorage3D);
2860 ASSIGN("glTextureStorage1DEXT", textureStorage1D);
2861 ASSIGN("glTextureStorage2DEXT", textureStorage2D);
2862 ASSIGN("glTextureStorage3DEXT", textureStorage3D);
2863 }
2864
2865 if (extensions.count("GL_KHR_blend_equation_advanced") != 0)
2866 {
2867 ASSIGN("glBlendBarrierKHR", blendBarrier);
2868 }
2869
2870 if (extensions.count("GL_KHR_parallel_shader_compile") != 0)
2871 {
2872 ASSIGN("glMaxShaderCompilerThreadsKHR", maxShaderCompilerThreadsKHR);
2873 }
2874
2875 if (extensions.count("GL_MESA_framebuffer_flip_y") != 0)
2876 {
2877 ASSIGN("glFramebufferParameteriMESA", framebufferParameteriMESA);
2878 }
2879
2880 if (extensions.count("GL_NV_fence") != 0)
2881 {
2882 ASSIGN("glDeleteFencesNV", deleteFencesNV);
2883 ASSIGN("glFinishFenceNV", finishFenceNV);
2884 ASSIGN("glGenFencesNV", genFencesNV);
2885 ASSIGN("glGetFenceivNV", getFenceivNV);
2886 ASSIGN("glIsFenceNV", isFenceNV);
2887 ASSIGN("glSetFenceNV", setFenceNV);
2888 ASSIGN("glTestFenceNV", testFenceNV);
2889 }
2890
2891 if (extensions.count("GL_NV_framebuffer_mixed_samples") != 0)
2892 {
2893 ASSIGN("glCoverageModulationNV", coverageModulationNV);
2894 }
2895
2896 if (extensions.count("GL_NV_internalformat_sample_query") != 0)
2897 {
2898 ASSIGN("glGetInternalformatSampleivNV", getInternalformatSampleivNV);
2899 }
2900
2901 if (extensions.count("GL_OVR_multiview") != 0)
2902 {
2903 ASSIGN("glFramebufferTextureMultiviewOVR", framebufferTextureMultiviewOVR);
2904 }
2905 }
2906
2907 #if defined(ANGLE_ENABLE_OPENGL_NULL)
initProcsDesktopGLNULL(const gl::Version & version,const std::set<std::string> & extensions)2908 void DispatchTableGL::initProcsDesktopGLNULL(const gl::Version &version,
2909 const std::set<std::string> &extensions)
2910 {
2911 # if defined(ANGLE_ENABLE_GL_DESKTOP_BACKEND)
2912 if (extensions.count("GL_ARB_ES2_compatibility") != 0)
2913 {
2914 clearDepthf = &glClearDepthfNULL;
2915 depthRangef = &glDepthRangefNULL;
2916 getShaderPrecisionFormat = &glGetShaderPrecisionFormatNULL;
2917 releaseShaderCompiler = &glReleaseShaderCompilerNULL;
2918 shaderBinary = &glShaderBinaryNULL;
2919 }
2920
2921 if (extensions.count("GL_ARB_ES3_1_compatibility") != 0)
2922 {
2923 memoryBarrierByRegion = &glMemoryBarrierByRegionNULL;
2924 }
2925
2926 if (extensions.count("GL_ARB_ES3_2_compatibility") != 0)
2927 {
2928 primitiveBoundingBox = &glPrimitiveBoundingBoxNULL;
2929 }
2930
2931 if (extensions.count("GL_ARB_base_instance") != 0)
2932 {
2933 drawArraysInstancedBaseInstance = &glDrawArraysInstancedBaseInstanceNULL;
2934 drawElementsInstancedBaseInstance = &glDrawElementsInstancedBaseInstanceNULL;
2935 drawElementsInstancedBaseVertexBaseInstance =
2936 &glDrawElementsInstancedBaseVertexBaseInstanceNULL;
2937 }
2938
2939 if (extensions.count("GL_ARB_blend_func_extended") != 0)
2940 {
2941 bindFragDataLocationIndexed = &glBindFragDataLocationIndexedNULL;
2942 getFragDataIndex = &glGetFragDataIndexNULL;
2943 }
2944
2945 if (extensions.count("GL_ARB_buffer_storage") != 0)
2946 {
2947 bufferStorage = &glBufferStorageNULL;
2948 }
2949
2950 if (extensions.count("GL_ARB_clear_buffer_object") != 0)
2951 {
2952 clearBufferData = &glClearBufferDataNULL;
2953 clearBufferSubData = &glClearBufferSubDataNULL;
2954 }
2955
2956 if (extensions.count("GL_ARB_clear_texture") != 0)
2957 {
2958 clearTexImage = &glClearTexImageNULL;
2959 clearTexSubImage = &glClearTexSubImageNULL;
2960 }
2961
2962 if (extensions.count("GL_ARB_clip_control") != 0)
2963 {
2964 clipControl = &glClipControlNULL;
2965 }
2966
2967 if (extensions.count("GL_ARB_color_buffer_float") != 0)
2968 {
2969 clampColor = &glClampColorNULL;
2970 }
2971
2972 if (extensions.count("GL_ARB_compute_shader") != 0)
2973 {
2974 dispatchCompute = &glDispatchComputeNULL;
2975 dispatchComputeIndirect = &glDispatchComputeIndirectNULL;
2976 }
2977
2978 if (extensions.count("GL_ARB_copy_buffer") != 0)
2979 {
2980 copyBufferSubData = &glCopyBufferSubDataNULL;
2981 }
2982
2983 if (extensions.count("GL_ARB_copy_image") != 0)
2984 {
2985 copyImageSubData = &glCopyImageSubDataNULL;
2986 }
2987
2988 if (extensions.count("GL_ARB_debug_output") != 0)
2989 {
2990 debugMessageCallback = &glDebugMessageCallbackNULL;
2991 debugMessageControl = &glDebugMessageControlNULL;
2992 debugMessageInsert = &glDebugMessageInsertNULL;
2993 getDebugMessageLog = &glGetDebugMessageLogNULL;
2994 }
2995
2996 if (extensions.count("GL_ARB_direct_state_access") != 0)
2997 {
2998 bindTextureUnit = &glBindTextureUnitNULL;
2999 blitNamedFramebuffer = &glBlitNamedFramebufferNULL;
3000 checkNamedFramebufferStatus = &glCheckNamedFramebufferStatusNULL;
3001 clearNamedBufferData = &glClearNamedBufferDataNULL;
3002 clearNamedBufferSubData = &glClearNamedBufferSubDataNULL;
3003 clearNamedFramebufferfi = &glClearNamedFramebufferfiNULL;
3004 clearNamedFramebufferfv = &glClearNamedFramebufferfvNULL;
3005 clearNamedFramebufferiv = &glClearNamedFramebufferivNULL;
3006 clearNamedFramebufferuiv = &glClearNamedFramebufferuivNULL;
3007 compressedTextureSubImage1D = &glCompressedTextureSubImage1DNULL;
3008 compressedTextureSubImage2D = &glCompressedTextureSubImage2DNULL;
3009 compressedTextureSubImage3D = &glCompressedTextureSubImage3DNULL;
3010 copyNamedBufferSubData = &glCopyNamedBufferSubDataNULL;
3011 copyTextureSubImage1D = &glCopyTextureSubImage1DNULL;
3012 copyTextureSubImage2D = &glCopyTextureSubImage2DNULL;
3013 copyTextureSubImage3D = &glCopyTextureSubImage3DNULL;
3014 createBuffers = &glCreateBuffersNULL;
3015 createFramebuffers = &glCreateFramebuffersNULL;
3016 createProgramPipelines = &glCreateProgramPipelinesNULL;
3017 createQueries = &glCreateQueriesNULL;
3018 createRenderbuffers = &glCreateRenderbuffersNULL;
3019 createSamplers = &glCreateSamplersNULL;
3020 createTextures = &glCreateTexturesNULL;
3021 createTransformFeedbacks = &glCreateTransformFeedbacksNULL;
3022 createVertexArrays = &glCreateVertexArraysNULL;
3023 disableVertexArrayAttrib = &glDisableVertexArrayAttribNULL;
3024 enableVertexArrayAttrib = &glEnableVertexArrayAttribNULL;
3025 flushMappedNamedBufferRange = &glFlushMappedNamedBufferRangeNULL;
3026 generateTextureMipmap = &glGenerateTextureMipmapNULL;
3027 getCompressedTextureImage = &glGetCompressedTextureImageNULL;
3028 getNamedBufferParameteri64v = &glGetNamedBufferParameteri64vNULL;
3029 getNamedBufferParameteriv = &glGetNamedBufferParameterivNULL;
3030 getNamedBufferPointerv = &glGetNamedBufferPointervNULL;
3031 getNamedBufferSubData = &glGetNamedBufferSubDataNULL;
3032 getNamedFramebufferAttachmentParameteriv = &glGetNamedFramebufferAttachmentParameterivNULL;
3033 getNamedFramebufferParameteriv = &glGetNamedFramebufferParameterivNULL;
3034 getNamedRenderbufferParameteriv = &glGetNamedRenderbufferParameterivNULL;
3035 getQueryBufferObjecti64v = &glGetQueryBufferObjecti64vNULL;
3036 getQueryBufferObjectiv = &glGetQueryBufferObjectivNULL;
3037 getQueryBufferObjectui64v = &glGetQueryBufferObjectui64vNULL;
3038 getQueryBufferObjectuiv = &glGetQueryBufferObjectuivNULL;
3039 getTextureImage = &glGetTextureImageNULL;
3040 getTextureLevelParameterfv = &glGetTextureLevelParameterfvNULL;
3041 getTextureLevelParameteriv = &glGetTextureLevelParameterivNULL;
3042 getTextureParameterIiv = &glGetTextureParameterIivNULL;
3043 getTextureParameterIuiv = &glGetTextureParameterIuivNULL;
3044 getTextureParameterfv = &glGetTextureParameterfvNULL;
3045 getTextureParameteriv = &glGetTextureParameterivNULL;
3046 getTransformFeedbacki64_v = &glGetTransformFeedbacki64_vNULL;
3047 getTransformFeedbacki_v = &glGetTransformFeedbacki_vNULL;
3048 getTransformFeedbackiv = &glGetTransformFeedbackivNULL;
3049 getVertexArrayIndexed64iv = &glGetVertexArrayIndexed64ivNULL;
3050 getVertexArrayIndexediv = &glGetVertexArrayIndexedivNULL;
3051 getVertexArrayiv = &glGetVertexArrayivNULL;
3052 invalidateNamedFramebufferData = &glInvalidateNamedFramebufferDataNULL;
3053 invalidateNamedFramebufferSubData = &glInvalidateNamedFramebufferSubDataNULL;
3054 mapNamedBuffer = &glMapNamedBufferNULL;
3055 mapNamedBufferRange = &glMapNamedBufferRangeNULL;
3056 namedBufferData = &glNamedBufferDataNULL;
3057 namedBufferStorage = &glNamedBufferStorageNULL;
3058 namedBufferSubData = &glNamedBufferSubDataNULL;
3059 namedFramebufferDrawBuffer = &glNamedFramebufferDrawBufferNULL;
3060 namedFramebufferDrawBuffers = &glNamedFramebufferDrawBuffersNULL;
3061 namedFramebufferParameteri = &glNamedFramebufferParameteriNULL;
3062 namedFramebufferReadBuffer = &glNamedFramebufferReadBufferNULL;
3063 namedFramebufferRenderbuffer = &glNamedFramebufferRenderbufferNULL;
3064 namedFramebufferTexture = &glNamedFramebufferTextureNULL;
3065 namedFramebufferTextureLayer = &glNamedFramebufferTextureLayerNULL;
3066 namedRenderbufferStorage = &glNamedRenderbufferStorageNULL;
3067 namedRenderbufferStorageMultisample = &glNamedRenderbufferStorageMultisampleNULL;
3068 textureBuffer = &glTextureBufferNULL;
3069 textureBufferRange = &glTextureBufferRangeNULL;
3070 textureParameterIiv = &glTextureParameterIivNULL;
3071 textureParameterIuiv = &glTextureParameterIuivNULL;
3072 textureParameterf = &glTextureParameterfNULL;
3073 textureParameterfv = &glTextureParameterfvNULL;
3074 textureParameteri = &glTextureParameteriNULL;
3075 textureParameteriv = &glTextureParameterivNULL;
3076 textureStorage1D = &glTextureStorage1DNULL;
3077 textureStorage2D = &glTextureStorage2DNULL;
3078 textureStorage2DMultisample = &glTextureStorage2DMultisampleNULL;
3079 textureStorage3D = &glTextureStorage3DNULL;
3080 textureStorage3DMultisample = &glTextureStorage3DMultisampleNULL;
3081 textureSubImage1D = &glTextureSubImage1DNULL;
3082 textureSubImage2D = &glTextureSubImage2DNULL;
3083 textureSubImage3D = &glTextureSubImage3DNULL;
3084 transformFeedbackBufferBase = &glTransformFeedbackBufferBaseNULL;
3085 transformFeedbackBufferRange = &glTransformFeedbackBufferRangeNULL;
3086 unmapNamedBuffer = &glUnmapNamedBufferNULL;
3087 vertexArrayAttribBinding = &glVertexArrayAttribBindingNULL;
3088 vertexArrayAttribFormat = &glVertexArrayAttribFormatNULL;
3089 vertexArrayAttribIFormat = &glVertexArrayAttribIFormatNULL;
3090 vertexArrayAttribLFormat = &glVertexArrayAttribLFormatNULL;
3091 vertexArrayBindingDivisor = &glVertexArrayBindingDivisorNULL;
3092 vertexArrayElementBuffer = &glVertexArrayElementBufferNULL;
3093 vertexArrayVertexBuffer = &glVertexArrayVertexBufferNULL;
3094 vertexArrayVertexBuffers = &glVertexArrayVertexBuffersNULL;
3095 }
3096
3097 if (extensions.count("GL_ARB_draw_buffers") != 0)
3098 {
3099 drawBuffers = &glDrawBuffersNULL;
3100 }
3101
3102 if (extensions.count("GL_ARB_draw_buffers_blend") != 0)
3103 {
3104 blendEquationSeparatei = &glBlendEquationSeparateiNULL;
3105 blendEquationi = &glBlendEquationiNULL;
3106 blendFuncSeparatei = &glBlendFuncSeparateiNULL;
3107 blendFunci = &glBlendFunciNULL;
3108 }
3109
3110 if (extensions.count("GL_ARB_draw_elements_base_vertex") != 0)
3111 {
3112 drawElementsBaseVertex = &glDrawElementsBaseVertexNULL;
3113 drawElementsInstancedBaseVertex = &glDrawElementsInstancedBaseVertexNULL;
3114 drawRangeElementsBaseVertex = &glDrawRangeElementsBaseVertexNULL;
3115 multiDrawElementsBaseVertex = &glMultiDrawElementsBaseVertexNULL;
3116 }
3117
3118 if (extensions.count("GL_ARB_draw_indirect") != 0)
3119 {
3120 drawArraysIndirect = &glDrawArraysIndirectNULL;
3121 drawElementsIndirect = &glDrawElementsIndirectNULL;
3122 }
3123
3124 if (extensions.count("GL_ARB_draw_instanced") != 0)
3125 {
3126 drawArraysInstanced = &glDrawArraysInstancedNULL;
3127 drawElementsInstanced = &glDrawElementsInstancedNULL;
3128 }
3129
3130 if (extensions.count("GL_ARB_fragment_program") != 0)
3131 {
3132 getProgramiv = &glGetProgramivNULL;
3133 isProgram = &glIsProgramNULL;
3134 }
3135
3136 if (extensions.count("GL_ARB_framebuffer_no_attachments") != 0)
3137 {
3138 framebufferParameteri = &glFramebufferParameteriNULL;
3139 getFramebufferParameteriv = &glGetFramebufferParameterivNULL;
3140 }
3141
3142 if (extensions.count("GL_ARB_framebuffer_object") != 0)
3143 {
3144 bindFramebuffer = &glBindFramebufferNULL;
3145 bindRenderbuffer = &glBindRenderbufferNULL;
3146 blitFramebuffer = &glBlitFramebufferNULL;
3147 checkFramebufferStatus = &glCheckFramebufferStatusNULL;
3148 deleteFramebuffers = &glDeleteFramebuffersNULL;
3149 deleteRenderbuffers = &glDeleteRenderbuffersNULL;
3150 framebufferRenderbuffer = &glFramebufferRenderbufferNULL;
3151 framebufferTexture1D = &glFramebufferTexture1DNULL;
3152 framebufferTexture2D = &glFramebufferTexture2DNULL;
3153 framebufferTexture3D = &glFramebufferTexture3DNULL;
3154 framebufferTextureLayer = &glFramebufferTextureLayerNULL;
3155 genFramebuffers = &glGenFramebuffersNULL;
3156 genRenderbuffers = &glGenRenderbuffersNULL;
3157 generateMipmap = &glGenerateMipmapNULL;
3158 getFramebufferAttachmentParameteriv = &glGetFramebufferAttachmentParameterivNULL;
3159 getRenderbufferParameteriv = &glGetRenderbufferParameterivNULL;
3160 isFramebuffer = &glIsFramebufferNULL;
3161 isRenderbuffer = &glIsRenderbufferNULL;
3162 renderbufferStorage = &glRenderbufferStorageNULL;
3163 renderbufferStorageMultisample = &glRenderbufferStorageMultisampleNULL;
3164 }
3165
3166 if (extensions.count("GL_ARB_geometry_shader4") != 0)
3167 {
3168 framebufferTexture = &glFramebufferTextureNULL;
3169 framebufferTextureLayer = &glFramebufferTextureLayerNULL;
3170 programParameteri = &glProgramParameteriNULL;
3171 }
3172
3173 if (extensions.count("GL_ARB_get_program_binary") != 0)
3174 {
3175 getProgramBinary = &glGetProgramBinaryNULL;
3176 programBinary = &glProgramBinaryNULL;
3177 programParameteri = &glProgramParameteriNULL;
3178 }
3179
3180 if (extensions.count("GL_ARB_get_texture_sub_image") != 0)
3181 {
3182 getCompressedTextureSubImage = &glGetCompressedTextureSubImageNULL;
3183 getTextureSubImage = &glGetTextureSubImageNULL;
3184 }
3185
3186 if (extensions.count("GL_ARB_gpu_shader_fp64") != 0)
3187 {
3188 getUniformdv = &glGetUniformdvNULL;
3189 uniform1d = &glUniform1dNULL;
3190 uniform1dv = &glUniform1dvNULL;
3191 uniform2d = &glUniform2dNULL;
3192 uniform2dv = &glUniform2dvNULL;
3193 uniform3d = &glUniform3dNULL;
3194 uniform3dv = &glUniform3dvNULL;
3195 uniform4d = &glUniform4dNULL;
3196 uniform4dv = &glUniform4dvNULL;
3197 uniformMatrix2dv = &glUniformMatrix2dvNULL;
3198 uniformMatrix2x3dv = &glUniformMatrix2x3dvNULL;
3199 uniformMatrix2x4dv = &glUniformMatrix2x4dvNULL;
3200 uniformMatrix3dv = &glUniformMatrix3dvNULL;
3201 uniformMatrix3x2dv = &glUniformMatrix3x2dvNULL;
3202 uniformMatrix3x4dv = &glUniformMatrix3x4dvNULL;
3203 uniformMatrix4dv = &glUniformMatrix4dvNULL;
3204 uniformMatrix4x2dv = &glUniformMatrix4x2dvNULL;
3205 uniformMatrix4x3dv = &glUniformMatrix4x3dvNULL;
3206 }
3207
3208 if (extensions.count("GL_ARB_imaging") != 0)
3209 {
3210 blendColor = &glBlendColorNULL;
3211 blendEquation = &glBlendEquationNULL;
3212 }
3213
3214 if (extensions.count("GL_ARB_instanced_arrays") != 0)
3215 {
3216 vertexAttribDivisor = &glVertexAttribDivisorNULL;
3217 }
3218
3219 if (extensions.count("GL_ARB_internalformat_query") != 0)
3220 {
3221 getInternalformativ = &glGetInternalformativNULL;
3222 }
3223
3224 if (extensions.count("GL_ARB_internalformat_query2") != 0)
3225 {
3226 getInternalformati64v = &glGetInternalformati64vNULL;
3227 }
3228
3229 if (extensions.count("GL_ARB_invalidate_subdata") != 0)
3230 {
3231 invalidateBufferData = &glInvalidateBufferDataNULL;
3232 invalidateBufferSubData = &glInvalidateBufferSubDataNULL;
3233 invalidateFramebuffer = &glInvalidateFramebufferNULL;
3234 invalidateSubFramebuffer = &glInvalidateSubFramebufferNULL;
3235 invalidateTexImage = &glInvalidateTexImageNULL;
3236 invalidateTexSubImage = &glInvalidateTexSubImageNULL;
3237 }
3238
3239 if (extensions.count("GL_ARB_map_buffer_range") != 0)
3240 {
3241 flushMappedBufferRange = &glFlushMappedBufferRangeNULL;
3242 mapBufferRange = &glMapBufferRangeNULL;
3243 }
3244
3245 if (extensions.count("GL_ARB_multi_bind") != 0)
3246 {
3247 bindBuffersBase = &glBindBuffersBaseNULL;
3248 bindBuffersRange = &glBindBuffersRangeNULL;
3249 bindImageTextures = &glBindImageTexturesNULL;
3250 bindSamplers = &glBindSamplersNULL;
3251 bindTextures = &glBindTexturesNULL;
3252 bindVertexBuffers = &glBindVertexBuffersNULL;
3253 }
3254
3255 if (extensions.count("GL_ARB_multi_draw_indirect") != 0)
3256 {
3257 multiDrawArraysIndirect = &glMultiDrawArraysIndirectNULL;
3258 multiDrawElementsIndirect = &glMultiDrawElementsIndirectNULL;
3259 }
3260
3261 if (extensions.count("GL_ARB_multisample") != 0)
3262 {
3263 sampleCoverage = &glSampleCoverageNULL;
3264 }
3265
3266 if (extensions.count("GL_ARB_multitexture") != 0)
3267 {
3268 activeTexture = &glActiveTextureNULL;
3269 }
3270
3271 if (extensions.count("GL_ARB_occlusion_query") != 0)
3272 {
3273 beginQuery = &glBeginQueryNULL;
3274 deleteQueries = &glDeleteQueriesNULL;
3275 endQuery = &glEndQueryNULL;
3276 genQueries = &glGenQueriesNULL;
3277 getQueryObjectiv = &glGetQueryObjectivNULL;
3278 getQueryObjectuiv = &glGetQueryObjectuivNULL;
3279 getQueryiv = &glGetQueryivNULL;
3280 isQuery = &glIsQueryNULL;
3281 }
3282
3283 if (extensions.count("GL_ARB_parallel_shader_compile") != 0)
3284 {
3285 maxShaderCompilerThreadsARB = &glMaxShaderCompilerThreadsARBNULL;
3286 }
3287
3288 if (extensions.count("GL_ARB_point_parameters") != 0)
3289 {
3290 pointParameterf = &glPointParameterfNULL;
3291 pointParameterfv = &glPointParameterfvNULL;
3292 }
3293
3294 if (extensions.count("GL_ARB_program_interface_query") != 0)
3295 {
3296 getProgramInterfaceiv = &glGetProgramInterfaceivNULL;
3297 getProgramResourceIndex = &glGetProgramResourceIndexNULL;
3298 getProgramResourceLocation = &glGetProgramResourceLocationNULL;
3299 getProgramResourceLocationIndex = &glGetProgramResourceLocationIndexNULL;
3300 getProgramResourceName = &glGetProgramResourceNameNULL;
3301 getProgramResourceiv = &glGetProgramResourceivNULL;
3302 }
3303
3304 if (extensions.count("GL_ARB_provoking_vertex") != 0)
3305 {
3306 provokingVertex = &glProvokingVertexNULL;
3307 }
3308
3309 if (extensions.count("GL_ARB_robustness") != 0)
3310 {
3311 getGraphicsResetStatus = &glGetGraphicsResetStatusNULL;
3312 getnCompressedTexImage = &glGetnCompressedTexImageNULL;
3313 getnTexImage = &glGetnTexImageNULL;
3314 getnUniformdv = &glGetnUniformdvNULL;
3315 getnUniformfv = &glGetnUniformfvNULL;
3316 getnUniformiv = &glGetnUniformivNULL;
3317 getnUniformuiv = &glGetnUniformuivNULL;
3318 readnPixels = &glReadnPixelsNULL;
3319 }
3320
3321 if (extensions.count("GL_ARB_sample_shading") != 0)
3322 {
3323 minSampleShading = &glMinSampleShadingNULL;
3324 }
3325
3326 if (extensions.count("GL_ARB_sampler_objects") != 0)
3327 {
3328 bindSampler = &glBindSamplerNULL;
3329 deleteSamplers = &glDeleteSamplersNULL;
3330 genSamplers = &glGenSamplersNULL;
3331 getSamplerParameterIiv = &glGetSamplerParameterIivNULL;
3332 getSamplerParameterIuiv = &glGetSamplerParameterIuivNULL;
3333 getSamplerParameterfv = &glGetSamplerParameterfvNULL;
3334 getSamplerParameteriv = &glGetSamplerParameterivNULL;
3335 isSampler = &glIsSamplerNULL;
3336 samplerParameterIiv = &glSamplerParameterIivNULL;
3337 samplerParameterIuiv = &glSamplerParameterIuivNULL;
3338 samplerParameterf = &glSamplerParameterfNULL;
3339 samplerParameterfv = &glSamplerParameterfvNULL;
3340 samplerParameteri = &glSamplerParameteriNULL;
3341 samplerParameteriv = &glSamplerParameterivNULL;
3342 }
3343
3344 if (extensions.count("GL_ARB_separate_shader_objects") != 0)
3345 {
3346 activeShaderProgram = &glActiveShaderProgramNULL;
3347 bindProgramPipeline = &glBindProgramPipelineNULL;
3348 createShaderProgramv = &glCreateShaderProgramvNULL;
3349 deleteProgramPipelines = &glDeleteProgramPipelinesNULL;
3350 genProgramPipelines = &glGenProgramPipelinesNULL;
3351 getProgramPipelineInfoLog = &glGetProgramPipelineInfoLogNULL;
3352 getProgramPipelineiv = &glGetProgramPipelineivNULL;
3353 isProgramPipeline = &glIsProgramPipelineNULL;
3354 programParameteri = &glProgramParameteriNULL;
3355 programUniform1d = &glProgramUniform1dNULL;
3356 programUniform1dv = &glProgramUniform1dvNULL;
3357 programUniform1f = &glProgramUniform1fNULL;
3358 programUniform1fv = &glProgramUniform1fvNULL;
3359 programUniform1i = &glProgramUniform1iNULL;
3360 programUniform1iv = &glProgramUniform1ivNULL;
3361 programUniform1ui = &glProgramUniform1uiNULL;
3362 programUniform1uiv = &glProgramUniform1uivNULL;
3363 programUniform2d = &glProgramUniform2dNULL;
3364 programUniform2dv = &glProgramUniform2dvNULL;
3365 programUniform2f = &glProgramUniform2fNULL;
3366 programUniform2fv = &glProgramUniform2fvNULL;
3367 programUniform2i = &glProgramUniform2iNULL;
3368 programUniform2iv = &glProgramUniform2ivNULL;
3369 programUniform2ui = &glProgramUniform2uiNULL;
3370 programUniform2uiv = &glProgramUniform2uivNULL;
3371 programUniform3d = &glProgramUniform3dNULL;
3372 programUniform3dv = &glProgramUniform3dvNULL;
3373 programUniform3f = &glProgramUniform3fNULL;
3374 programUniform3fv = &glProgramUniform3fvNULL;
3375 programUniform3i = &glProgramUniform3iNULL;
3376 programUniform3iv = &glProgramUniform3ivNULL;
3377 programUniform3ui = &glProgramUniform3uiNULL;
3378 programUniform3uiv = &glProgramUniform3uivNULL;
3379 programUniform4d = &glProgramUniform4dNULL;
3380 programUniform4dv = &glProgramUniform4dvNULL;
3381 programUniform4f = &glProgramUniform4fNULL;
3382 programUniform4fv = &glProgramUniform4fvNULL;
3383 programUniform4i = &glProgramUniform4iNULL;
3384 programUniform4iv = &glProgramUniform4ivNULL;
3385 programUniform4ui = &glProgramUniform4uiNULL;
3386 programUniform4uiv = &glProgramUniform4uivNULL;
3387 programUniformMatrix2dv = &glProgramUniformMatrix2dvNULL;
3388 programUniformMatrix2fv = &glProgramUniformMatrix2fvNULL;
3389 programUniformMatrix2x3dv = &glProgramUniformMatrix2x3dvNULL;
3390 programUniformMatrix2x3fv = &glProgramUniformMatrix2x3fvNULL;
3391 programUniformMatrix2x4dv = &glProgramUniformMatrix2x4dvNULL;
3392 programUniformMatrix2x4fv = &glProgramUniformMatrix2x4fvNULL;
3393 programUniformMatrix3dv = &glProgramUniformMatrix3dvNULL;
3394 programUniformMatrix3fv = &glProgramUniformMatrix3fvNULL;
3395 programUniformMatrix3x2dv = &glProgramUniformMatrix3x2dvNULL;
3396 programUniformMatrix3x2fv = &glProgramUniformMatrix3x2fvNULL;
3397 programUniformMatrix3x4dv = &glProgramUniformMatrix3x4dvNULL;
3398 programUniformMatrix3x4fv = &glProgramUniformMatrix3x4fvNULL;
3399 programUniformMatrix4dv = &glProgramUniformMatrix4dvNULL;
3400 programUniformMatrix4fv = &glProgramUniformMatrix4fvNULL;
3401 programUniformMatrix4x2dv = &glProgramUniformMatrix4x2dvNULL;
3402 programUniformMatrix4x2fv = &glProgramUniformMatrix4x2fvNULL;
3403 programUniformMatrix4x3dv = &glProgramUniformMatrix4x3dvNULL;
3404 programUniformMatrix4x3fv = &glProgramUniformMatrix4x3fvNULL;
3405 useProgramStages = &glUseProgramStagesNULL;
3406 validateProgramPipeline = &glValidateProgramPipelineNULL;
3407 }
3408
3409 if (extensions.count("GL_ARB_shader_atomic_counters") != 0)
3410 {
3411 getActiveAtomicCounterBufferiv = &glGetActiveAtomicCounterBufferivNULL;
3412 }
3413
3414 if (extensions.count("GL_ARB_shader_image_load_store") != 0)
3415 {
3416 bindImageTexture = &glBindImageTextureNULL;
3417 memoryBarrier = &glMemoryBarrierNULL;
3418 }
3419
3420 if (extensions.count("GL_ARB_shader_objects") != 0)
3421 {
3422 compileShader = &glCompileShaderNULL;
3423 getActiveUniform = &glGetActiveUniformNULL;
3424 getShaderSource = &glGetShaderSourceNULL;
3425 getUniformLocation = &glGetUniformLocationNULL;
3426 getUniformfv = &glGetUniformfvNULL;
3427 getUniformiv = &glGetUniformivNULL;
3428 linkProgram = &glLinkProgramNULL;
3429 shaderSource = &glShaderSourceNULL;
3430 uniform1f = &glUniform1fNULL;
3431 uniform1fv = &glUniform1fvNULL;
3432 uniform1i = &glUniform1iNULL;
3433 uniform1iv = &glUniform1ivNULL;
3434 uniform2f = &glUniform2fNULL;
3435 uniform2fv = &glUniform2fvNULL;
3436 uniform2i = &glUniform2iNULL;
3437 uniform2iv = &glUniform2ivNULL;
3438 uniform3f = &glUniform3fNULL;
3439 uniform3fv = &glUniform3fvNULL;
3440 uniform3i = &glUniform3iNULL;
3441 uniform3iv = &glUniform3ivNULL;
3442 uniform4f = &glUniform4fNULL;
3443 uniform4fv = &glUniform4fvNULL;
3444 uniform4i = &glUniform4iNULL;
3445 uniform4iv = &glUniform4ivNULL;
3446 uniformMatrix2fv = &glUniformMatrix2fvNULL;
3447 uniformMatrix3fv = &glUniformMatrix3fvNULL;
3448 uniformMatrix4fv = &glUniformMatrix4fvNULL;
3449 validateProgram = &glValidateProgramNULL;
3450 }
3451
3452 if (extensions.count("GL_ARB_shader_storage_buffer_object") != 0)
3453 {
3454 shaderStorageBlockBinding = &glShaderStorageBlockBindingNULL;
3455 }
3456
3457 if (extensions.count("GL_ARB_shader_subroutine") != 0)
3458 {
3459 getActiveSubroutineName = &glGetActiveSubroutineNameNULL;
3460 getActiveSubroutineUniformName = &glGetActiveSubroutineUniformNameNULL;
3461 getActiveSubroutineUniformiv = &glGetActiveSubroutineUniformivNULL;
3462 getProgramStageiv = &glGetProgramStageivNULL;
3463 getSubroutineIndex = &glGetSubroutineIndexNULL;
3464 getSubroutineUniformLocation = &glGetSubroutineUniformLocationNULL;
3465 getUniformSubroutineuiv = &glGetUniformSubroutineuivNULL;
3466 uniformSubroutinesuiv = &glUniformSubroutinesuivNULL;
3467 }
3468
3469 if (extensions.count("GL_ARB_sync") != 0)
3470 {
3471 clientWaitSync = &glClientWaitSyncNULL;
3472 deleteSync = &glDeleteSyncNULL;
3473 fenceSync = &glFenceSyncNULL;
3474 getInteger64v = &glGetInteger64vNULL;
3475 getSynciv = &glGetSyncivNULL;
3476 isSync = &glIsSyncNULL;
3477 waitSync = &glWaitSyncNULL;
3478 }
3479
3480 if (extensions.count("GL_ARB_tessellation_shader") != 0)
3481 {
3482 patchParameterfv = &glPatchParameterfvNULL;
3483 patchParameteri = &glPatchParameteriNULL;
3484 }
3485
3486 if (extensions.count("GL_ARB_texture_barrier") != 0)
3487 {
3488 textureBarrier = &glTextureBarrierNULL;
3489 }
3490
3491 if (extensions.count("GL_ARB_texture_buffer_object") != 0)
3492 {
3493 texBuffer = &glTexBufferNULL;
3494 }
3495
3496 if (extensions.count("GL_ARB_texture_buffer_range") != 0)
3497 {
3498 texBufferRange = &glTexBufferRangeNULL;
3499 }
3500
3501 if (extensions.count("GL_ARB_texture_compression") != 0)
3502 {
3503 compressedTexImage1D = &glCompressedTexImage1DNULL;
3504 compressedTexImage2D = &glCompressedTexImage2DNULL;
3505 compressedTexImage3D = &glCompressedTexImage3DNULL;
3506 compressedTexSubImage1D = &glCompressedTexSubImage1DNULL;
3507 compressedTexSubImage2D = &glCompressedTexSubImage2DNULL;
3508 compressedTexSubImage3D = &glCompressedTexSubImage3DNULL;
3509 getCompressedTexImage = &glGetCompressedTexImageNULL;
3510 }
3511
3512 if (extensions.count("GL_ARB_texture_multisample") != 0)
3513 {
3514 getMultisamplefv = &glGetMultisamplefvNULL;
3515 sampleMaski = &glSampleMaskiNULL;
3516 texImage2DMultisample = &glTexImage2DMultisampleNULL;
3517 texImage3DMultisample = &glTexImage3DMultisampleNULL;
3518 }
3519
3520 if (extensions.count("GL_ARB_texture_storage") != 0)
3521 {
3522 texStorage1D = &glTexStorage1DNULL;
3523 texStorage2D = &glTexStorage2DNULL;
3524 texStorage3D = &glTexStorage3DNULL;
3525 }
3526
3527 if (extensions.count("GL_ARB_texture_storage_multisample") != 0)
3528 {
3529 texStorage2DMultisample = &glTexStorage2DMultisampleNULL;
3530 texStorage3DMultisample = &glTexStorage3DMultisampleNULL;
3531 }
3532
3533 if (extensions.count("GL_ARB_texture_view") != 0)
3534 {
3535 textureView = &glTextureViewNULL;
3536 }
3537
3538 if (extensions.count("GL_ARB_timer_query") != 0)
3539 {
3540 getQueryObjecti64v = &glGetQueryObjecti64vNULL;
3541 getQueryObjectui64v = &glGetQueryObjectui64vNULL;
3542 queryCounter = &glQueryCounterNULL;
3543 }
3544
3545 if (extensions.count("GL_ARB_transform_feedback2") != 0)
3546 {
3547 bindTransformFeedback = &glBindTransformFeedbackNULL;
3548 deleteTransformFeedbacks = &glDeleteTransformFeedbacksNULL;
3549 drawTransformFeedback = &glDrawTransformFeedbackNULL;
3550 genTransformFeedbacks = &glGenTransformFeedbacksNULL;
3551 isTransformFeedback = &glIsTransformFeedbackNULL;
3552 pauseTransformFeedback = &glPauseTransformFeedbackNULL;
3553 resumeTransformFeedback = &glResumeTransformFeedbackNULL;
3554 }
3555
3556 if (extensions.count("GL_ARB_transform_feedback3") != 0)
3557 {
3558 beginQueryIndexed = &glBeginQueryIndexedNULL;
3559 drawTransformFeedbackStream = &glDrawTransformFeedbackStreamNULL;
3560 endQueryIndexed = &glEndQueryIndexedNULL;
3561 getQueryIndexediv = &glGetQueryIndexedivNULL;
3562 }
3563
3564 if (extensions.count("GL_ARB_transform_feedback_instanced") != 0)
3565 {
3566 drawTransformFeedbackInstanced = &glDrawTransformFeedbackInstancedNULL;
3567 drawTransformFeedbackStreamInstanced = &glDrawTransformFeedbackStreamInstancedNULL;
3568 }
3569
3570 if (extensions.count("GL_ARB_uniform_buffer_object") != 0)
3571 {
3572 bindBufferBase = &glBindBufferBaseNULL;
3573 bindBufferRange = &glBindBufferRangeNULL;
3574 getActiveUniformBlockName = &glGetActiveUniformBlockNameNULL;
3575 getActiveUniformBlockiv = &glGetActiveUniformBlockivNULL;
3576 getActiveUniformName = &glGetActiveUniformNameNULL;
3577 getActiveUniformsiv = &glGetActiveUniformsivNULL;
3578 getIntegeri_v = &glGetIntegeri_vNULL;
3579 getUniformBlockIndex = &glGetUniformBlockIndexNULL;
3580 getUniformIndices = &glGetUniformIndicesNULL;
3581 uniformBlockBinding = &glUniformBlockBindingNULL;
3582 }
3583
3584 if (extensions.count("GL_ARB_vertex_array_object") != 0)
3585 {
3586 bindVertexArray = &glBindVertexArrayNULL;
3587 deleteVertexArrays = &glDeleteVertexArraysNULL;
3588 genVertexArrays = &glGenVertexArraysNULL;
3589 isVertexArray = &glIsVertexArrayNULL;
3590 }
3591
3592 if (extensions.count("GL_ARB_vertex_attrib_64bit") != 0)
3593 {
3594 getVertexAttribLdv = &glGetVertexAttribLdvNULL;
3595 vertexAttribL1d = &glVertexAttribL1dNULL;
3596 vertexAttribL1dv = &glVertexAttribL1dvNULL;
3597 vertexAttribL2d = &glVertexAttribL2dNULL;
3598 vertexAttribL2dv = &glVertexAttribL2dvNULL;
3599 vertexAttribL3d = &glVertexAttribL3dNULL;
3600 vertexAttribL3dv = &glVertexAttribL3dvNULL;
3601 vertexAttribL4d = &glVertexAttribL4dNULL;
3602 vertexAttribL4dv = &glVertexAttribL4dvNULL;
3603 vertexAttribLPointer = &glVertexAttribLPointerNULL;
3604 }
3605
3606 if (extensions.count("GL_ARB_vertex_attrib_binding") != 0)
3607 {
3608 bindVertexBuffer = &glBindVertexBufferNULL;
3609 vertexAttribBinding = &glVertexAttribBindingNULL;
3610 vertexAttribFormat = &glVertexAttribFormatNULL;
3611 vertexAttribIFormat = &glVertexAttribIFormatNULL;
3612 vertexAttribLFormat = &glVertexAttribLFormatNULL;
3613 vertexBindingDivisor = &glVertexBindingDivisorNULL;
3614 }
3615
3616 if (extensions.count("GL_ARB_vertex_buffer_object") != 0)
3617 {
3618 bindBuffer = &glBindBufferNULL;
3619 bufferData = &glBufferDataNULL;
3620 bufferSubData = &glBufferSubDataNULL;
3621 deleteBuffers = &glDeleteBuffersNULL;
3622 genBuffers = &glGenBuffersNULL;
3623 getBufferParameteriv = &glGetBufferParameterivNULL;
3624 getBufferPointerv = &glGetBufferPointervNULL;
3625 getBufferSubData = &glGetBufferSubDataNULL;
3626 isBuffer = &glIsBufferNULL;
3627 mapBuffer = &glMapBufferNULL;
3628 unmapBuffer = &glUnmapBufferNULL;
3629 }
3630
3631 if (extensions.count("GL_ARB_vertex_program") != 0)
3632 {
3633 disableVertexAttribArray = &glDisableVertexAttribArrayNULL;
3634 enableVertexAttribArray = &glEnableVertexAttribArrayNULL;
3635 getProgramiv = &glGetProgramivNULL;
3636 getVertexAttribPointerv = &glGetVertexAttribPointervNULL;
3637 getVertexAttribdv = &glGetVertexAttribdvNULL;
3638 getVertexAttribfv = &glGetVertexAttribfvNULL;
3639 getVertexAttribiv = &glGetVertexAttribivNULL;
3640 isProgram = &glIsProgramNULL;
3641 vertexAttrib1d = &glVertexAttrib1dNULL;
3642 vertexAttrib1dv = &glVertexAttrib1dvNULL;
3643 vertexAttrib1f = &glVertexAttrib1fNULL;
3644 vertexAttrib1fv = &glVertexAttrib1fvNULL;
3645 vertexAttrib1s = &glVertexAttrib1sNULL;
3646 vertexAttrib1sv = &glVertexAttrib1svNULL;
3647 vertexAttrib2d = &glVertexAttrib2dNULL;
3648 vertexAttrib2dv = &glVertexAttrib2dvNULL;
3649 vertexAttrib2f = &glVertexAttrib2fNULL;
3650 vertexAttrib2fv = &glVertexAttrib2fvNULL;
3651 vertexAttrib2s = &glVertexAttrib2sNULL;
3652 vertexAttrib2sv = &glVertexAttrib2svNULL;
3653 vertexAttrib3d = &glVertexAttrib3dNULL;
3654 vertexAttrib3dv = &glVertexAttrib3dvNULL;
3655 vertexAttrib3f = &glVertexAttrib3fNULL;
3656 vertexAttrib3fv = &glVertexAttrib3fvNULL;
3657 vertexAttrib3s = &glVertexAttrib3sNULL;
3658 vertexAttrib3sv = &glVertexAttrib3svNULL;
3659 vertexAttrib4Nbv = &glVertexAttrib4NbvNULL;
3660 vertexAttrib4Niv = &glVertexAttrib4NivNULL;
3661 vertexAttrib4Nsv = &glVertexAttrib4NsvNULL;
3662 vertexAttrib4Nub = &glVertexAttrib4NubNULL;
3663 vertexAttrib4Nubv = &glVertexAttrib4NubvNULL;
3664 vertexAttrib4Nuiv = &glVertexAttrib4NuivNULL;
3665 vertexAttrib4Nusv = &glVertexAttrib4NusvNULL;
3666 vertexAttrib4bv = &glVertexAttrib4bvNULL;
3667 vertexAttrib4d = &glVertexAttrib4dNULL;
3668 vertexAttrib4dv = &glVertexAttrib4dvNULL;
3669 vertexAttrib4f = &glVertexAttrib4fNULL;
3670 vertexAttrib4fv = &glVertexAttrib4fvNULL;
3671 vertexAttrib4iv = &glVertexAttrib4ivNULL;
3672 vertexAttrib4s = &glVertexAttrib4sNULL;
3673 vertexAttrib4sv = &glVertexAttrib4svNULL;
3674 vertexAttrib4ubv = &glVertexAttrib4ubvNULL;
3675 vertexAttrib4uiv = &glVertexAttrib4uivNULL;
3676 vertexAttrib4usv = &glVertexAttrib4usvNULL;
3677 vertexAttribPointer = &glVertexAttribPointerNULL;
3678 }
3679
3680 if (extensions.count("GL_ARB_vertex_shader") != 0)
3681 {
3682 bindAttribLocation = &glBindAttribLocationNULL;
3683 disableVertexAttribArray = &glDisableVertexAttribArrayNULL;
3684 enableVertexAttribArray = &glEnableVertexAttribArrayNULL;
3685 getActiveAttrib = &glGetActiveAttribNULL;
3686 getAttribLocation = &glGetAttribLocationNULL;
3687 getVertexAttribPointerv = &glGetVertexAttribPointervNULL;
3688 getVertexAttribdv = &glGetVertexAttribdvNULL;
3689 getVertexAttribfv = &glGetVertexAttribfvNULL;
3690 getVertexAttribiv = &glGetVertexAttribivNULL;
3691 vertexAttrib1d = &glVertexAttrib1dNULL;
3692 vertexAttrib1dv = &glVertexAttrib1dvNULL;
3693 vertexAttrib1f = &glVertexAttrib1fNULL;
3694 vertexAttrib1fv = &glVertexAttrib1fvNULL;
3695 vertexAttrib1s = &glVertexAttrib1sNULL;
3696 vertexAttrib1sv = &glVertexAttrib1svNULL;
3697 vertexAttrib2d = &glVertexAttrib2dNULL;
3698 vertexAttrib2dv = &glVertexAttrib2dvNULL;
3699 vertexAttrib2f = &glVertexAttrib2fNULL;
3700 vertexAttrib2fv = &glVertexAttrib2fvNULL;
3701 vertexAttrib2s = &glVertexAttrib2sNULL;
3702 vertexAttrib2sv = &glVertexAttrib2svNULL;
3703 vertexAttrib3d = &glVertexAttrib3dNULL;
3704 vertexAttrib3dv = &glVertexAttrib3dvNULL;
3705 vertexAttrib3f = &glVertexAttrib3fNULL;
3706 vertexAttrib3fv = &glVertexAttrib3fvNULL;
3707 vertexAttrib3s = &glVertexAttrib3sNULL;
3708 vertexAttrib3sv = &glVertexAttrib3svNULL;
3709 vertexAttrib4Nbv = &glVertexAttrib4NbvNULL;
3710 vertexAttrib4Niv = &glVertexAttrib4NivNULL;
3711 vertexAttrib4Nsv = &glVertexAttrib4NsvNULL;
3712 vertexAttrib4Nub = &glVertexAttrib4NubNULL;
3713 vertexAttrib4Nubv = &glVertexAttrib4NubvNULL;
3714 vertexAttrib4Nuiv = &glVertexAttrib4NuivNULL;
3715 vertexAttrib4Nusv = &glVertexAttrib4NusvNULL;
3716 vertexAttrib4bv = &glVertexAttrib4bvNULL;
3717 vertexAttrib4d = &glVertexAttrib4dNULL;
3718 vertexAttrib4dv = &glVertexAttrib4dvNULL;
3719 vertexAttrib4f = &glVertexAttrib4fNULL;
3720 vertexAttrib4fv = &glVertexAttrib4fvNULL;
3721 vertexAttrib4iv = &glVertexAttrib4ivNULL;
3722 vertexAttrib4s = &glVertexAttrib4sNULL;
3723 vertexAttrib4sv = &glVertexAttrib4svNULL;
3724 vertexAttrib4ubv = &glVertexAttrib4ubvNULL;
3725 vertexAttrib4uiv = &glVertexAttrib4uivNULL;
3726 vertexAttrib4usv = &glVertexAttrib4usvNULL;
3727 vertexAttribPointer = &glVertexAttribPointerNULL;
3728 }
3729
3730 if (extensions.count("GL_ARB_vertex_type_2_10_10_10_rev") != 0)
3731 {
3732 vertexAttribP1ui = &glVertexAttribP1uiNULL;
3733 vertexAttribP1uiv = &glVertexAttribP1uivNULL;
3734 vertexAttribP2ui = &glVertexAttribP2uiNULL;
3735 vertexAttribP2uiv = &glVertexAttribP2uivNULL;
3736 vertexAttribP3ui = &glVertexAttribP3uiNULL;
3737 vertexAttribP3uiv = &glVertexAttribP3uivNULL;
3738 vertexAttribP4ui = &glVertexAttribP4uiNULL;
3739 vertexAttribP4uiv = &glVertexAttribP4uivNULL;
3740 }
3741
3742 if (extensions.count("GL_ARB_viewport_array") != 0)
3743 {
3744 depthRangeArrayv = &glDepthRangeArrayvNULL;
3745 depthRangeIndexed = &glDepthRangeIndexedNULL;
3746 getDoublei_v = &glGetDoublei_vNULL;
3747 getFloati_v = &glGetFloati_vNULL;
3748 scissorArrayv = &glScissorArrayvNULL;
3749 scissorIndexed = &glScissorIndexedNULL;
3750 scissorIndexedv = &glScissorIndexedvNULL;
3751 viewportArrayv = &glViewportArrayvNULL;
3752 viewportIndexedf = &glViewportIndexedfNULL;
3753 viewportIndexedfv = &glViewportIndexedfvNULL;
3754 }
3755
3756 if (extensions.count("GL_EXT_blend_color") != 0)
3757 {
3758 blendColor = &glBlendColorNULL;
3759 }
3760
3761 if (extensions.count("GL_EXT_blend_equation_separate") != 0)
3762 {
3763 blendEquationSeparate = &glBlendEquationSeparateNULL;
3764 }
3765
3766 if (extensions.count("GL_EXT_blend_func_separate") != 0)
3767 {
3768 blendFuncSeparate = &glBlendFuncSeparateNULL;
3769 }
3770
3771 if (extensions.count("GL_EXT_blend_minmax") != 0)
3772 {
3773 blendEquation = &glBlendEquationNULL;
3774 }
3775
3776 if (extensions.count("GL_EXT_copy_texture") != 0)
3777 {
3778 copyTexImage1D = &glCopyTexImage1DNULL;
3779 copyTexImage2D = &glCopyTexImage2DNULL;
3780 copyTexSubImage1D = &glCopyTexSubImage1DNULL;
3781 copyTexSubImage2D = &glCopyTexSubImage2DNULL;
3782 copyTexSubImage3D = &glCopyTexSubImage3DNULL;
3783 }
3784
3785 if (extensions.count("GL_EXT_direct_state_access") != 0)
3786 {
3787 checkNamedFramebufferStatus = &glCheckNamedFramebufferStatusNULL;
3788 clearNamedBufferData = &glClearNamedBufferDataNULL;
3789 clearNamedBufferSubData = &glClearNamedBufferSubDataNULL;
3790 compressedTextureSubImage1D = &glCompressedTextureSubImage1DNULL;
3791 compressedTextureSubImage2D = &glCompressedTextureSubImage2DNULL;
3792 compressedTextureSubImage3D = &glCompressedTextureSubImage3DNULL;
3793 copyTextureSubImage1D = &glCopyTextureSubImage1DNULL;
3794 copyTextureSubImage2D = &glCopyTextureSubImage2DNULL;
3795 copyTextureSubImage3D = &glCopyTextureSubImage3DNULL;
3796 disableVertexArrayAttrib = &glDisableVertexArrayAttribNULL;
3797 enableVertexArrayAttrib = &glEnableVertexArrayAttribNULL;
3798 flushMappedNamedBufferRange = &glFlushMappedNamedBufferRangeNULL;
3799 generateTextureMipmap = &glGenerateTextureMipmapNULL;
3800 getCompressedTextureImage = &glGetCompressedTextureImageNULL;
3801 getDoublei_v = &glGetDoublei_vNULL;
3802 getFloati_v = &glGetFloati_vNULL;
3803 getFramebufferParameteriv = &glGetFramebufferParameterivNULL;
3804 getNamedBufferParameteriv = &glGetNamedBufferParameterivNULL;
3805 getNamedBufferPointerv = &glGetNamedBufferPointervNULL;
3806 getNamedBufferSubData = &glGetNamedBufferSubDataNULL;
3807 getNamedFramebufferAttachmentParameteriv = &glGetNamedFramebufferAttachmentParameterivNULL;
3808 getNamedFramebufferParameteriv = &glGetNamedFramebufferParameterivNULL;
3809 getNamedRenderbufferParameteriv = &glGetNamedRenderbufferParameterivNULL;
3810 getTextureImage = &glGetTextureImageNULL;
3811 getTextureLevelParameterfv = &glGetTextureLevelParameterfvNULL;
3812 getTextureLevelParameteriv = &glGetTextureLevelParameterivNULL;
3813 getTextureParameterIiv = &glGetTextureParameterIivNULL;
3814 getTextureParameterIuiv = &glGetTextureParameterIuivNULL;
3815 getTextureParameterfv = &glGetTextureParameterfvNULL;
3816 getTextureParameteriv = &glGetTextureParameterivNULL;
3817 mapNamedBuffer = &glMapNamedBufferNULL;
3818 mapNamedBufferRange = &glMapNamedBufferRangeNULL;
3819 namedBufferData = &glNamedBufferDataNULL;
3820 namedBufferStorage = &glNamedBufferStorageNULL;
3821 namedBufferSubData = &glNamedBufferSubDataNULL;
3822 namedFramebufferParameteri = &glNamedFramebufferParameteriNULL;
3823 namedFramebufferRenderbuffer = &glNamedFramebufferRenderbufferNULL;
3824 namedFramebufferTexture = &glNamedFramebufferTextureNULL;
3825 namedFramebufferTextureLayer = &glNamedFramebufferTextureLayerNULL;
3826 namedRenderbufferStorage = &glNamedRenderbufferStorageNULL;
3827 namedRenderbufferStorageMultisample = &glNamedRenderbufferStorageMultisampleNULL;
3828 programUniform1d = &glProgramUniform1dNULL;
3829 programUniform1dv = &glProgramUniform1dvNULL;
3830 programUniform1f = &glProgramUniform1fNULL;
3831 programUniform1fv = &glProgramUniform1fvNULL;
3832 programUniform1i = &glProgramUniform1iNULL;
3833 programUniform1iv = &glProgramUniform1ivNULL;
3834 programUniform1ui = &glProgramUniform1uiNULL;
3835 programUniform1uiv = &glProgramUniform1uivNULL;
3836 programUniform2d = &glProgramUniform2dNULL;
3837 programUniform2dv = &glProgramUniform2dvNULL;
3838 programUniform2f = &glProgramUniform2fNULL;
3839 programUniform2fv = &glProgramUniform2fvNULL;
3840 programUniform2i = &glProgramUniform2iNULL;
3841 programUniform2iv = &glProgramUniform2ivNULL;
3842 programUniform2ui = &glProgramUniform2uiNULL;
3843 programUniform2uiv = &glProgramUniform2uivNULL;
3844 programUniform3d = &glProgramUniform3dNULL;
3845 programUniform3dv = &glProgramUniform3dvNULL;
3846 programUniform3f = &glProgramUniform3fNULL;
3847 programUniform3fv = &glProgramUniform3fvNULL;
3848 programUniform3i = &glProgramUniform3iNULL;
3849 programUniform3iv = &glProgramUniform3ivNULL;
3850 programUniform3ui = &glProgramUniform3uiNULL;
3851 programUniform3uiv = &glProgramUniform3uivNULL;
3852 programUniform4d = &glProgramUniform4dNULL;
3853 programUniform4dv = &glProgramUniform4dvNULL;
3854 programUniform4f = &glProgramUniform4fNULL;
3855 programUniform4fv = &glProgramUniform4fvNULL;
3856 programUniform4i = &glProgramUniform4iNULL;
3857 programUniform4iv = &glProgramUniform4ivNULL;
3858 programUniform4ui = &glProgramUniform4uiNULL;
3859 programUniform4uiv = &glProgramUniform4uivNULL;
3860 programUniformMatrix2dv = &glProgramUniformMatrix2dvNULL;
3861 programUniformMatrix2fv = &glProgramUniformMatrix2fvNULL;
3862 programUniformMatrix2x3dv = &glProgramUniformMatrix2x3dvNULL;
3863 programUniformMatrix2x3fv = &glProgramUniformMatrix2x3fvNULL;
3864 programUniformMatrix2x4dv = &glProgramUniformMatrix2x4dvNULL;
3865 programUniformMatrix2x4fv = &glProgramUniformMatrix2x4fvNULL;
3866 programUniformMatrix3dv = &glProgramUniformMatrix3dvNULL;
3867 programUniformMatrix3fv = &glProgramUniformMatrix3fvNULL;
3868 programUniformMatrix3x2dv = &glProgramUniformMatrix3x2dvNULL;
3869 programUniformMatrix3x2fv = &glProgramUniformMatrix3x2fvNULL;
3870 programUniformMatrix3x4dv = &glProgramUniformMatrix3x4dvNULL;
3871 programUniformMatrix3x4fv = &glProgramUniformMatrix3x4fvNULL;
3872 programUniformMatrix4dv = &glProgramUniformMatrix4dvNULL;
3873 programUniformMatrix4fv = &glProgramUniformMatrix4fvNULL;
3874 programUniformMatrix4x2dv = &glProgramUniformMatrix4x2dvNULL;
3875 programUniformMatrix4x2fv = &glProgramUniformMatrix4x2fvNULL;
3876 programUniformMatrix4x3dv = &glProgramUniformMatrix4x3dvNULL;
3877 programUniformMatrix4x3fv = &glProgramUniformMatrix4x3fvNULL;
3878 textureBuffer = &glTextureBufferNULL;
3879 textureBufferRange = &glTextureBufferRangeNULL;
3880 textureParameterIiv = &glTextureParameterIivNULL;
3881 textureParameterIuiv = &glTextureParameterIuivNULL;
3882 textureParameterf = &glTextureParameterfNULL;
3883 textureParameterfv = &glTextureParameterfvNULL;
3884 textureParameteri = &glTextureParameteriNULL;
3885 textureParameteriv = &glTextureParameterivNULL;
3886 textureStorage2DMultisample = &glTextureStorage2DMultisampleNULL;
3887 textureStorage3DMultisample = &glTextureStorage3DMultisampleNULL;
3888 textureSubImage1D = &glTextureSubImage1DNULL;
3889 textureSubImage2D = &glTextureSubImage2DNULL;
3890 textureSubImage3D = &glTextureSubImage3DNULL;
3891 unmapNamedBuffer = &glUnmapNamedBufferNULL;
3892 }
3893
3894 if (extensions.count("GL_EXT_draw_range_elements") != 0)
3895 {
3896 drawRangeElements = &glDrawRangeElementsNULL;
3897 }
3898
3899 if (extensions.count("GL_EXT_framebuffer_blit") != 0)
3900 {
3901 blitFramebuffer = &glBlitFramebufferNULL;
3902 blitFramebufferEXT = &glBlitFramebufferEXTNULL;
3903 }
3904
3905 if (extensions.count("GL_EXT_framebuffer_multisample") != 0)
3906 {
3907 renderbufferStorageMultisample = &glRenderbufferStorageMultisampleNULL;
3908 renderbufferStorageMultisampleEXT = &glRenderbufferStorageMultisampleEXTNULL;
3909 }
3910
3911 if (extensions.count("GL_EXT_framebuffer_object") != 0)
3912 {
3913 bindFramebuffer = &glBindFramebufferNULL;
3914 bindRenderbuffer = &glBindRenderbufferNULL;
3915 checkFramebufferStatus = &glCheckFramebufferStatusNULL;
3916 deleteFramebuffers = &glDeleteFramebuffersNULL;
3917 deleteRenderbuffers = &glDeleteRenderbuffersNULL;
3918 framebufferRenderbuffer = &glFramebufferRenderbufferNULL;
3919 framebufferTexture1D = &glFramebufferTexture1DNULL;
3920 framebufferTexture2D = &glFramebufferTexture2DNULL;
3921 framebufferTexture3D = &glFramebufferTexture3DNULL;
3922 genFramebuffers = &glGenFramebuffersNULL;
3923 genRenderbuffers = &glGenRenderbuffersNULL;
3924 generateMipmap = &glGenerateMipmapNULL;
3925 getFramebufferAttachmentParameteriv = &glGetFramebufferAttachmentParameterivNULL;
3926 getRenderbufferParameteriv = &glGetRenderbufferParameterivNULL;
3927 isFramebuffer = &glIsFramebufferNULL;
3928 isRenderbuffer = &glIsRenderbufferNULL;
3929 renderbufferStorage = &glRenderbufferStorageNULL;
3930 }
3931
3932 if (extensions.count("GL_EXT_geometry_shader4") != 0)
3933 {
3934 programParameteri = &glProgramParameteriNULL;
3935 }
3936
3937 if (extensions.count("GL_EXT_gpu_shader4") != 0)
3938 {
3939 bindFragDataLocation = &glBindFragDataLocationNULL;
3940 getFragDataLocation = &glGetFragDataLocationNULL;
3941 getUniformuiv = &glGetUniformuivNULL;
3942 getVertexAttribIiv = &glGetVertexAttribIivNULL;
3943 getVertexAttribIuiv = &glGetVertexAttribIuivNULL;
3944 uniform1ui = &glUniform1uiNULL;
3945 uniform1uiv = &glUniform1uivNULL;
3946 uniform2ui = &glUniform2uiNULL;
3947 uniform2uiv = &glUniform2uivNULL;
3948 uniform3ui = &glUniform3uiNULL;
3949 uniform3uiv = &glUniform3uivNULL;
3950 uniform4ui = &glUniform4uiNULL;
3951 uniform4uiv = &glUniform4uivNULL;
3952 vertexAttribI1i = &glVertexAttribI1iNULL;
3953 vertexAttribI1iv = &glVertexAttribI1ivNULL;
3954 vertexAttribI1ui = &glVertexAttribI1uiNULL;
3955 vertexAttribI1uiv = &glVertexAttribI1uivNULL;
3956 vertexAttribI2i = &glVertexAttribI2iNULL;
3957 vertexAttribI2iv = &glVertexAttribI2ivNULL;
3958 vertexAttribI2ui = &glVertexAttribI2uiNULL;
3959 vertexAttribI2uiv = &glVertexAttribI2uivNULL;
3960 vertexAttribI3i = &glVertexAttribI3iNULL;
3961 vertexAttribI3iv = &glVertexAttribI3ivNULL;
3962 vertexAttribI3ui = &glVertexAttribI3uiNULL;
3963 vertexAttribI3uiv = &glVertexAttribI3uivNULL;
3964 vertexAttribI4bv = &glVertexAttribI4bvNULL;
3965 vertexAttribI4i = &glVertexAttribI4iNULL;
3966 vertexAttribI4iv = &glVertexAttribI4ivNULL;
3967 vertexAttribI4sv = &glVertexAttribI4svNULL;
3968 vertexAttribI4ubv = &glVertexAttribI4ubvNULL;
3969 vertexAttribI4ui = &glVertexAttribI4uiNULL;
3970 vertexAttribI4uiv = &glVertexAttribI4uivNULL;
3971 vertexAttribI4usv = &glVertexAttribI4usvNULL;
3972 vertexAttribIPointer = &glVertexAttribIPointerNULL;
3973 }
3974
3975 if (extensions.count("GL_EXT_point_parameters") != 0)
3976 {
3977 pointParameterf = &glPointParameterfNULL;
3978 pointParameterfv = &glPointParameterfvNULL;
3979 }
3980
3981 if (extensions.count("GL_EXT_polygon_offset") != 0)
3982 {
3983 polygonOffset = &glPolygonOffsetNULL;
3984 }
3985
3986 if (extensions.count("GL_EXT_provoking_vertex") != 0)
3987 {
3988 provokingVertex = &glProvokingVertexNULL;
3989 }
3990
3991 if (extensions.count("GL_EXT_shader_image_load_store") != 0)
3992 {
3993 bindImageTexture = &glBindImageTextureNULL;
3994 memoryBarrier = &glMemoryBarrierNULL;
3995 }
3996
3997 if (extensions.count("GL_EXT_subtexture") != 0)
3998 {
3999 texSubImage1D = &glTexSubImage1DNULL;
4000 texSubImage2D = &glTexSubImage2DNULL;
4001 }
4002
4003 if (extensions.count("GL_EXT_texture3D") != 0)
4004 {
4005 texImage3D = &glTexImage3DNULL;
4006 texSubImage3D = &glTexSubImage3DNULL;
4007 }
4008
4009 if (extensions.count("GL_EXT_texture_array") != 0)
4010 {
4011 framebufferTextureLayer = &glFramebufferTextureLayerNULL;
4012 }
4013
4014 if (extensions.count("GL_EXT_texture_buffer_object") != 0)
4015 {
4016 texBuffer = &glTexBufferNULL;
4017 texBufferEXT = &glTexBufferEXTNULL;
4018 }
4019
4020 if (extensions.count("GL_EXT_texture_integer") != 0)
4021 {
4022 getTexParameterIiv = &glGetTexParameterIivNULL;
4023 getTexParameterIuiv = &glGetTexParameterIuivNULL;
4024 texParameterIiv = &glTexParameterIivNULL;
4025 texParameterIuiv = &glTexParameterIuivNULL;
4026 }
4027
4028 if (extensions.count("GL_EXT_texture_object") != 0)
4029 {
4030 bindTexture = &glBindTextureNULL;
4031 deleteTextures = &glDeleteTexturesNULL;
4032 genTextures = &glGenTexturesNULL;
4033 isTexture = &glIsTextureNULL;
4034 }
4035
4036 if (extensions.count("GL_EXT_timer_query") != 0)
4037 {
4038 getQueryObjecti64v = &glGetQueryObjecti64vNULL;
4039 getQueryObjectui64v = &glGetQueryObjectui64vNULL;
4040 }
4041
4042 if (extensions.count("GL_EXT_transform_feedback") != 0)
4043 {
4044 beginTransformFeedback = &glBeginTransformFeedbackNULL;
4045 bindBufferBase = &glBindBufferBaseNULL;
4046 bindBufferRange = &glBindBufferRangeNULL;
4047 endTransformFeedback = &glEndTransformFeedbackNULL;
4048 getTransformFeedbackVarying = &glGetTransformFeedbackVaryingNULL;
4049 transformFeedbackVaryings = &glTransformFeedbackVaryingsNULL;
4050 }
4051
4052 if (extensions.count("GL_EXT_vertex_array") != 0)
4053 {
4054 drawArrays = &glDrawArraysNULL;
4055 getPointerv = &glGetPointervNULL;
4056 }
4057
4058 if (extensions.count("GL_EXT_vertex_attrib_64bit") != 0)
4059 {
4060 getVertexAttribLdv = &glGetVertexAttribLdvNULL;
4061 vertexAttribL1d = &glVertexAttribL1dNULL;
4062 vertexAttribL1dv = &glVertexAttribL1dvNULL;
4063 vertexAttribL2d = &glVertexAttribL2dNULL;
4064 vertexAttribL2dv = &glVertexAttribL2dvNULL;
4065 vertexAttribL3d = &glVertexAttribL3dNULL;
4066 vertexAttribL3dv = &glVertexAttribL3dvNULL;
4067 vertexAttribL4d = &glVertexAttribL4dNULL;
4068 vertexAttribL4dv = &glVertexAttribL4dvNULL;
4069 vertexAttribLPointer = &glVertexAttribLPointerNULL;
4070 }
4071
4072 if (extensions.count("GL_KHR_debug") != 0)
4073 {
4074 debugMessageCallback = &glDebugMessageCallbackNULL;
4075 debugMessageControl = &glDebugMessageControlNULL;
4076 debugMessageInsert = &glDebugMessageInsertNULL;
4077 getDebugMessageLog = &glGetDebugMessageLogNULL;
4078 getObjectLabel = &glGetObjectLabelNULL;
4079 getObjectPtrLabel = &glGetObjectPtrLabelNULL;
4080 getPointerv = &glGetPointervNULL;
4081 objectLabel = &glObjectLabelNULL;
4082 objectPtrLabel = &glObjectPtrLabelNULL;
4083 popDebugGroup = &glPopDebugGroupNULL;
4084 pushDebugGroup = &glPushDebugGroupNULL;
4085 }
4086
4087 if (extensions.count("GL_KHR_robustness") != 0)
4088 {
4089 getGraphicsResetStatus = &glGetGraphicsResetStatusNULL;
4090 getnUniformfv = &glGetnUniformfvNULL;
4091 getnUniformiv = &glGetnUniformivNULL;
4092 getnUniformuiv = &glGetnUniformuivNULL;
4093 readnPixels = &glReadnPixelsNULL;
4094 }
4095
4096 if (extensions.count("GL_NV_geometry_program4") != 0)
4097 {
4098 framebufferTexture = &glFramebufferTextureNULL;
4099 framebufferTextureLayer = &glFramebufferTextureLayerNULL;
4100 }
4101
4102 if (extensions.count("GL_NV_vertex_program4") != 0)
4103 {
4104 getVertexAttribIiv = &glGetVertexAttribIivNULL;
4105 getVertexAttribIuiv = &glGetVertexAttribIuivNULL;
4106 vertexAttribI1i = &glVertexAttribI1iNULL;
4107 vertexAttribI1iv = &glVertexAttribI1ivNULL;
4108 vertexAttribI1ui = &glVertexAttribI1uiNULL;
4109 vertexAttribI1uiv = &glVertexAttribI1uivNULL;
4110 vertexAttribI2i = &glVertexAttribI2iNULL;
4111 vertexAttribI2iv = &glVertexAttribI2ivNULL;
4112 vertexAttribI2ui = &glVertexAttribI2uiNULL;
4113 vertexAttribI2uiv = &glVertexAttribI2uivNULL;
4114 vertexAttribI3i = &glVertexAttribI3iNULL;
4115 vertexAttribI3iv = &glVertexAttribI3ivNULL;
4116 vertexAttribI3ui = &glVertexAttribI3uiNULL;
4117 vertexAttribI3uiv = &glVertexAttribI3uivNULL;
4118 vertexAttribI4bv = &glVertexAttribI4bvNULL;
4119 vertexAttribI4i = &glVertexAttribI4iNULL;
4120 vertexAttribI4iv = &glVertexAttribI4ivNULL;
4121 vertexAttribI4sv = &glVertexAttribI4svNULL;
4122 vertexAttribI4ubv = &glVertexAttribI4ubvNULL;
4123 vertexAttribI4ui = &glVertexAttribI4uiNULL;
4124 vertexAttribI4uiv = &glVertexAttribI4uivNULL;
4125 vertexAttribI4usv = &glVertexAttribI4usvNULL;
4126 vertexAttribIPointer = &glVertexAttribIPointerNULL;
4127 }
4128
4129 if (extensions.count("GL_OES_single_precision") != 0)
4130 {
4131 clearDepthf = &glClearDepthfNULL;
4132 depthRangef = &glDepthRangefNULL;
4133 }
4134
4135 if (version >= gl::Version(1, 0))
4136 {
4137 blendFunc = &glBlendFuncNULL;
4138 clear = &glClearNULL;
4139 clearColor = &glClearColorNULL;
4140 clearDepth = &glClearDepthNULL;
4141 clearStencil = &glClearStencilNULL;
4142 colorMask = &glColorMaskNULL;
4143 cullFace = &glCullFaceNULL;
4144 depthFunc = &glDepthFuncNULL;
4145 depthMask = &glDepthMaskNULL;
4146 depthRange = &glDepthRangeNULL;
4147 disable = &glDisableNULL;
4148 drawBuffer = &glDrawBufferNULL;
4149 enable = &glEnableNULL;
4150 finish = &glFinishNULL;
4151 flush = &glFlushNULL;
4152 frontFace = &glFrontFaceNULL;
4153 getBooleanv = &glGetBooleanvNULL;
4154 getDoublev = &glGetDoublevNULL;
4155 getError = &glGetErrorNULL;
4156 getFloatv = &glGetFloatvNULL;
4157 getIntegerv = &glGetIntegervNULL;
4158 getString = &glGetStringNULL;
4159 getTexImage = &glGetTexImageNULL;
4160 getTexLevelParameterfv = &glGetTexLevelParameterfvNULL;
4161 getTexLevelParameteriv = &glGetTexLevelParameterivNULL;
4162 getTexParameterfv = &glGetTexParameterfvNULL;
4163 getTexParameteriv = &glGetTexParameterivNULL;
4164 hint = &glHintNULL;
4165 isEnabled = &glIsEnabledNULL;
4166 lineWidth = &glLineWidthNULL;
4167 logicOp = &glLogicOpNULL;
4168 pixelStoref = &glPixelStorefNULL;
4169 pixelStorei = &glPixelStoreiNULL;
4170 pointSize = &glPointSizeNULL;
4171 polygonMode = &glPolygonModeNULL;
4172 readBuffer = &glReadBufferNULL;
4173 readPixels = &glReadPixelsNULL;
4174 scissor = &glScissorNULL;
4175 stencilFunc = &glStencilFuncNULL;
4176 stencilMask = &glStencilMaskNULL;
4177 stencilOp = &glStencilOpNULL;
4178 texImage1D = &glTexImage1DNULL;
4179 texImage2D = &glTexImage2DNULL;
4180 texParameterf = &glTexParameterfNULL;
4181 texParameterfv = &glTexParameterfvNULL;
4182 texParameteri = &glTexParameteriNULL;
4183 texParameteriv = &glTexParameterivNULL;
4184 viewport = &glViewportNULL;
4185 }
4186
4187 if (version >= gl::Version(1, 1))
4188 {
4189 bindTexture = &glBindTextureNULL;
4190 copyTexImage1D = &glCopyTexImage1DNULL;
4191 copyTexImage2D = &glCopyTexImage2DNULL;
4192 copyTexSubImage1D = &glCopyTexSubImage1DNULL;
4193 copyTexSubImage2D = &glCopyTexSubImage2DNULL;
4194 deleteTextures = &glDeleteTexturesNULL;
4195 drawArrays = &glDrawArraysNULL;
4196 drawElements = &glDrawElementsNULL;
4197 genTextures = &glGenTexturesNULL;
4198 isTexture = &glIsTextureNULL;
4199 polygonOffset = &glPolygonOffsetNULL;
4200 texSubImage1D = &glTexSubImage1DNULL;
4201 texSubImage2D = &glTexSubImage2DNULL;
4202 }
4203
4204 if (version >= gl::Version(1, 2))
4205 {
4206 copyTexSubImage3D = &glCopyTexSubImage3DNULL;
4207 drawRangeElements = &glDrawRangeElementsNULL;
4208 texImage3D = &glTexImage3DNULL;
4209 texSubImage3D = &glTexSubImage3DNULL;
4210 }
4211
4212 if (version >= gl::Version(1, 3))
4213 {
4214 activeTexture = &glActiveTextureNULL;
4215 compressedTexImage1D = &glCompressedTexImage1DNULL;
4216 compressedTexImage2D = &glCompressedTexImage2DNULL;
4217 compressedTexImage3D = &glCompressedTexImage3DNULL;
4218 compressedTexSubImage1D = &glCompressedTexSubImage1DNULL;
4219 compressedTexSubImage2D = &glCompressedTexSubImage2DNULL;
4220 compressedTexSubImage3D = &glCompressedTexSubImage3DNULL;
4221 getCompressedTexImage = &glGetCompressedTexImageNULL;
4222 sampleCoverage = &glSampleCoverageNULL;
4223 }
4224
4225 if (version >= gl::Version(1, 4))
4226 {
4227 blendColor = &glBlendColorNULL;
4228 blendEquation = &glBlendEquationNULL;
4229 blendFuncSeparate = &glBlendFuncSeparateNULL;
4230 multiDrawArrays = &glMultiDrawArraysNULL;
4231 multiDrawElements = &glMultiDrawElementsNULL;
4232 pointParameterf = &glPointParameterfNULL;
4233 pointParameterfv = &glPointParameterfvNULL;
4234 pointParameteri = &glPointParameteriNULL;
4235 pointParameteriv = &glPointParameterivNULL;
4236 }
4237
4238 if (version >= gl::Version(1, 5))
4239 {
4240 beginQuery = &glBeginQueryNULL;
4241 bindBuffer = &glBindBufferNULL;
4242 bufferData = &glBufferDataNULL;
4243 bufferSubData = &glBufferSubDataNULL;
4244 deleteBuffers = &glDeleteBuffersNULL;
4245 deleteQueries = &glDeleteQueriesNULL;
4246 endQuery = &glEndQueryNULL;
4247 genBuffers = &glGenBuffersNULL;
4248 genQueries = &glGenQueriesNULL;
4249 getBufferParameteriv = &glGetBufferParameterivNULL;
4250 getBufferPointerv = &glGetBufferPointervNULL;
4251 getBufferSubData = &glGetBufferSubDataNULL;
4252 getQueryObjectiv = &glGetQueryObjectivNULL;
4253 getQueryObjectuiv = &glGetQueryObjectuivNULL;
4254 getQueryiv = &glGetQueryivNULL;
4255 isBuffer = &glIsBufferNULL;
4256 isQuery = &glIsQueryNULL;
4257 mapBuffer = &glMapBufferNULL;
4258 unmapBuffer = &glUnmapBufferNULL;
4259 }
4260
4261 if (version >= gl::Version(2, 0))
4262 {
4263 attachShader = &glAttachShaderNULL;
4264 bindAttribLocation = &glBindAttribLocationNULL;
4265 blendEquationSeparate = &glBlendEquationSeparateNULL;
4266 compileShader = &glCompileShaderNULL;
4267 createProgram = &glCreateProgramNULL;
4268 createShader = &glCreateShaderNULL;
4269 deleteProgram = &glDeleteProgramNULL;
4270 deleteShader = &glDeleteShaderNULL;
4271 detachShader = &glDetachShaderNULL;
4272 disableVertexAttribArray = &glDisableVertexAttribArrayNULL;
4273 drawBuffers = &glDrawBuffersNULL;
4274 enableVertexAttribArray = &glEnableVertexAttribArrayNULL;
4275 getActiveAttrib = &glGetActiveAttribNULL;
4276 getActiveUniform = &glGetActiveUniformNULL;
4277 getAttachedShaders = &glGetAttachedShadersNULL;
4278 getAttribLocation = &glGetAttribLocationNULL;
4279 getProgramInfoLog = &glGetProgramInfoLogNULL;
4280 getProgramiv = &glGetProgramivNULL;
4281 getShaderInfoLog = &glGetShaderInfoLogNULL;
4282 getShaderSource = &glGetShaderSourceNULL;
4283 getShaderiv = &glGetShaderivNULL;
4284 getUniformLocation = &glGetUniformLocationNULL;
4285 getUniformfv = &glGetUniformfvNULL;
4286 getUniformiv = &glGetUniformivNULL;
4287 getVertexAttribPointerv = &glGetVertexAttribPointervNULL;
4288 getVertexAttribdv = &glGetVertexAttribdvNULL;
4289 getVertexAttribfv = &glGetVertexAttribfvNULL;
4290 getVertexAttribiv = &glGetVertexAttribivNULL;
4291 isProgram = &glIsProgramNULL;
4292 isShader = &glIsShaderNULL;
4293 linkProgram = &glLinkProgramNULL;
4294 shaderSource = &glShaderSourceNULL;
4295 stencilFuncSeparate = &glStencilFuncSeparateNULL;
4296 stencilMaskSeparate = &glStencilMaskSeparateNULL;
4297 stencilOpSeparate = &glStencilOpSeparateNULL;
4298 uniform1f = &glUniform1fNULL;
4299 uniform1fv = &glUniform1fvNULL;
4300 uniform1i = &glUniform1iNULL;
4301 uniform1iv = &glUniform1ivNULL;
4302 uniform2f = &glUniform2fNULL;
4303 uniform2fv = &glUniform2fvNULL;
4304 uniform2i = &glUniform2iNULL;
4305 uniform2iv = &glUniform2ivNULL;
4306 uniform3f = &glUniform3fNULL;
4307 uniform3fv = &glUniform3fvNULL;
4308 uniform3i = &glUniform3iNULL;
4309 uniform3iv = &glUniform3ivNULL;
4310 uniform4f = &glUniform4fNULL;
4311 uniform4fv = &glUniform4fvNULL;
4312 uniform4i = &glUniform4iNULL;
4313 uniform4iv = &glUniform4ivNULL;
4314 uniformMatrix2fv = &glUniformMatrix2fvNULL;
4315 uniformMatrix3fv = &glUniformMatrix3fvNULL;
4316 uniformMatrix4fv = &glUniformMatrix4fvNULL;
4317 useProgram = &glUseProgramNULL;
4318 validateProgram = &glValidateProgramNULL;
4319 vertexAttrib1d = &glVertexAttrib1dNULL;
4320 vertexAttrib1dv = &glVertexAttrib1dvNULL;
4321 vertexAttrib1f = &glVertexAttrib1fNULL;
4322 vertexAttrib1fv = &glVertexAttrib1fvNULL;
4323 vertexAttrib1s = &glVertexAttrib1sNULL;
4324 vertexAttrib1sv = &glVertexAttrib1svNULL;
4325 vertexAttrib2d = &glVertexAttrib2dNULL;
4326 vertexAttrib2dv = &glVertexAttrib2dvNULL;
4327 vertexAttrib2f = &glVertexAttrib2fNULL;
4328 vertexAttrib2fv = &glVertexAttrib2fvNULL;
4329 vertexAttrib2s = &glVertexAttrib2sNULL;
4330 vertexAttrib2sv = &glVertexAttrib2svNULL;
4331 vertexAttrib3d = &glVertexAttrib3dNULL;
4332 vertexAttrib3dv = &glVertexAttrib3dvNULL;
4333 vertexAttrib3f = &glVertexAttrib3fNULL;
4334 vertexAttrib3fv = &glVertexAttrib3fvNULL;
4335 vertexAttrib3s = &glVertexAttrib3sNULL;
4336 vertexAttrib3sv = &glVertexAttrib3svNULL;
4337 vertexAttrib4Nbv = &glVertexAttrib4NbvNULL;
4338 vertexAttrib4Niv = &glVertexAttrib4NivNULL;
4339 vertexAttrib4Nsv = &glVertexAttrib4NsvNULL;
4340 vertexAttrib4Nub = &glVertexAttrib4NubNULL;
4341 vertexAttrib4Nubv = &glVertexAttrib4NubvNULL;
4342 vertexAttrib4Nuiv = &glVertexAttrib4NuivNULL;
4343 vertexAttrib4Nusv = &glVertexAttrib4NusvNULL;
4344 vertexAttrib4bv = &glVertexAttrib4bvNULL;
4345 vertexAttrib4d = &glVertexAttrib4dNULL;
4346 vertexAttrib4dv = &glVertexAttrib4dvNULL;
4347 vertexAttrib4f = &glVertexAttrib4fNULL;
4348 vertexAttrib4fv = &glVertexAttrib4fvNULL;
4349 vertexAttrib4iv = &glVertexAttrib4ivNULL;
4350 vertexAttrib4s = &glVertexAttrib4sNULL;
4351 vertexAttrib4sv = &glVertexAttrib4svNULL;
4352 vertexAttrib4ubv = &glVertexAttrib4ubvNULL;
4353 vertexAttrib4uiv = &glVertexAttrib4uivNULL;
4354 vertexAttrib4usv = &glVertexAttrib4usvNULL;
4355 vertexAttribPointer = &glVertexAttribPointerNULL;
4356 }
4357
4358 if (version >= gl::Version(2, 1))
4359 {
4360 uniformMatrix2x3fv = &glUniformMatrix2x3fvNULL;
4361 uniformMatrix2x4fv = &glUniformMatrix2x4fvNULL;
4362 uniformMatrix3x2fv = &glUniformMatrix3x2fvNULL;
4363 uniformMatrix3x4fv = &glUniformMatrix3x4fvNULL;
4364 uniformMatrix4x2fv = &glUniformMatrix4x2fvNULL;
4365 uniformMatrix4x3fv = &glUniformMatrix4x3fvNULL;
4366 }
4367
4368 if (version >= gl::Version(3, 0))
4369 {
4370 beginConditionalRender = &glBeginConditionalRenderNULL;
4371 beginTransformFeedback = &glBeginTransformFeedbackNULL;
4372 bindBufferBase = &glBindBufferBaseNULL;
4373 bindBufferRange = &glBindBufferRangeNULL;
4374 bindFragDataLocation = &glBindFragDataLocationNULL;
4375 bindFramebuffer = &glBindFramebufferNULL;
4376 bindRenderbuffer = &glBindRenderbufferNULL;
4377 bindVertexArray = &glBindVertexArrayNULL;
4378 blitFramebuffer = &glBlitFramebufferNULL;
4379 checkFramebufferStatus = &glCheckFramebufferStatusNULL;
4380 clampColor = &glClampColorNULL;
4381 clearBufferfi = &glClearBufferfiNULL;
4382 clearBufferfv = &glClearBufferfvNULL;
4383 clearBufferiv = &glClearBufferivNULL;
4384 clearBufferuiv = &glClearBufferuivNULL;
4385 colorMaski = &glColorMaskiNULL;
4386 deleteFramebuffers = &glDeleteFramebuffersNULL;
4387 deleteRenderbuffers = &glDeleteRenderbuffersNULL;
4388 deleteVertexArrays = &glDeleteVertexArraysNULL;
4389 disablei = &glDisableiNULL;
4390 enablei = &glEnableiNULL;
4391 endConditionalRender = &glEndConditionalRenderNULL;
4392 endTransformFeedback = &glEndTransformFeedbackNULL;
4393 flushMappedBufferRange = &glFlushMappedBufferRangeNULL;
4394 framebufferRenderbuffer = &glFramebufferRenderbufferNULL;
4395 framebufferTexture1D = &glFramebufferTexture1DNULL;
4396 framebufferTexture2D = &glFramebufferTexture2DNULL;
4397 framebufferTexture3D = &glFramebufferTexture3DNULL;
4398 framebufferTextureLayer = &glFramebufferTextureLayerNULL;
4399 genFramebuffers = &glGenFramebuffersNULL;
4400 genRenderbuffers = &glGenRenderbuffersNULL;
4401 genVertexArrays = &glGenVertexArraysNULL;
4402 generateMipmap = &glGenerateMipmapNULL;
4403 getBooleani_v = &glGetBooleani_vNULL;
4404 getFragDataLocation = &glGetFragDataLocationNULL;
4405 getFramebufferAttachmentParameteriv = &glGetFramebufferAttachmentParameterivNULL;
4406 getIntegeri_v = &glGetIntegeri_vNULL;
4407 getRenderbufferParameteriv = &glGetRenderbufferParameterivNULL;
4408 getStringi = &glGetStringiNULL;
4409 getTexParameterIiv = &glGetTexParameterIivNULL;
4410 getTexParameterIuiv = &glGetTexParameterIuivNULL;
4411 getTransformFeedbackVarying = &glGetTransformFeedbackVaryingNULL;
4412 getUniformuiv = &glGetUniformuivNULL;
4413 getVertexAttribIiv = &glGetVertexAttribIivNULL;
4414 getVertexAttribIuiv = &glGetVertexAttribIuivNULL;
4415 isEnabledi = &glIsEnablediNULL;
4416 isFramebuffer = &glIsFramebufferNULL;
4417 isRenderbuffer = &glIsRenderbufferNULL;
4418 isVertexArray = &glIsVertexArrayNULL;
4419 mapBufferRange = &glMapBufferRangeNULL;
4420 renderbufferStorage = &glRenderbufferStorageNULL;
4421 renderbufferStorageMultisample = &glRenderbufferStorageMultisampleNULL;
4422 texParameterIiv = &glTexParameterIivNULL;
4423 texParameterIuiv = &glTexParameterIuivNULL;
4424 transformFeedbackVaryings = &glTransformFeedbackVaryingsNULL;
4425 uniform1ui = &glUniform1uiNULL;
4426 uniform1uiv = &glUniform1uivNULL;
4427 uniform2ui = &glUniform2uiNULL;
4428 uniform2uiv = &glUniform2uivNULL;
4429 uniform3ui = &glUniform3uiNULL;
4430 uniform3uiv = &glUniform3uivNULL;
4431 uniform4ui = &glUniform4uiNULL;
4432 uniform4uiv = &glUniform4uivNULL;
4433 vertexAttribI1i = &glVertexAttribI1iNULL;
4434 vertexAttribI1iv = &glVertexAttribI1ivNULL;
4435 vertexAttribI1ui = &glVertexAttribI1uiNULL;
4436 vertexAttribI1uiv = &glVertexAttribI1uivNULL;
4437 vertexAttribI2i = &glVertexAttribI2iNULL;
4438 vertexAttribI2iv = &glVertexAttribI2ivNULL;
4439 vertexAttribI2ui = &glVertexAttribI2uiNULL;
4440 vertexAttribI2uiv = &glVertexAttribI2uivNULL;
4441 vertexAttribI3i = &glVertexAttribI3iNULL;
4442 vertexAttribI3iv = &glVertexAttribI3ivNULL;
4443 vertexAttribI3ui = &glVertexAttribI3uiNULL;
4444 vertexAttribI3uiv = &glVertexAttribI3uivNULL;
4445 vertexAttribI4bv = &glVertexAttribI4bvNULL;
4446 vertexAttribI4i = &glVertexAttribI4iNULL;
4447 vertexAttribI4iv = &glVertexAttribI4ivNULL;
4448 vertexAttribI4sv = &glVertexAttribI4svNULL;
4449 vertexAttribI4ubv = &glVertexAttribI4ubvNULL;
4450 vertexAttribI4ui = &glVertexAttribI4uiNULL;
4451 vertexAttribI4uiv = &glVertexAttribI4uivNULL;
4452 vertexAttribI4usv = &glVertexAttribI4usvNULL;
4453 vertexAttribIPointer = &glVertexAttribIPointerNULL;
4454 }
4455
4456 if (version >= gl::Version(3, 1))
4457 {
4458 copyBufferSubData = &glCopyBufferSubDataNULL;
4459 drawArraysInstanced = &glDrawArraysInstancedNULL;
4460 drawElementsInstanced = &glDrawElementsInstancedNULL;
4461 getActiveUniformBlockName = &glGetActiveUniformBlockNameNULL;
4462 getActiveUniformBlockiv = &glGetActiveUniformBlockivNULL;
4463 getActiveUniformName = &glGetActiveUniformNameNULL;
4464 getActiveUniformsiv = &glGetActiveUniformsivNULL;
4465 getUniformBlockIndex = &glGetUniformBlockIndexNULL;
4466 getUniformIndices = &glGetUniformIndicesNULL;
4467 primitiveRestartIndex = &glPrimitiveRestartIndexNULL;
4468 texBuffer = &glTexBufferNULL;
4469 uniformBlockBinding = &glUniformBlockBindingNULL;
4470 }
4471
4472 if (version >= gl::Version(3, 2))
4473 {
4474 clientWaitSync = &glClientWaitSyncNULL;
4475 deleteSync = &glDeleteSyncNULL;
4476 drawElementsBaseVertex = &glDrawElementsBaseVertexNULL;
4477 drawElementsInstancedBaseVertex = &glDrawElementsInstancedBaseVertexNULL;
4478 drawRangeElementsBaseVertex = &glDrawRangeElementsBaseVertexNULL;
4479 fenceSync = &glFenceSyncNULL;
4480 framebufferTexture = &glFramebufferTextureNULL;
4481 getBufferParameteri64v = &glGetBufferParameteri64vNULL;
4482 getInteger64i_v = &glGetInteger64i_vNULL;
4483 getInteger64v = &glGetInteger64vNULL;
4484 getMultisamplefv = &glGetMultisamplefvNULL;
4485 getSynciv = &glGetSyncivNULL;
4486 isSync = &glIsSyncNULL;
4487 multiDrawElementsBaseVertex = &glMultiDrawElementsBaseVertexNULL;
4488 provokingVertex = &glProvokingVertexNULL;
4489 sampleMaski = &glSampleMaskiNULL;
4490 texImage2DMultisample = &glTexImage2DMultisampleNULL;
4491 texImage3DMultisample = &glTexImage3DMultisampleNULL;
4492 waitSync = &glWaitSyncNULL;
4493 }
4494
4495 if (version >= gl::Version(3, 3))
4496 {
4497 bindFragDataLocationIndexed = &glBindFragDataLocationIndexedNULL;
4498 bindSampler = &glBindSamplerNULL;
4499 deleteSamplers = &glDeleteSamplersNULL;
4500 genSamplers = &glGenSamplersNULL;
4501 getFragDataIndex = &glGetFragDataIndexNULL;
4502 getQueryObjecti64v = &glGetQueryObjecti64vNULL;
4503 getQueryObjectui64v = &glGetQueryObjectui64vNULL;
4504 getSamplerParameterIiv = &glGetSamplerParameterIivNULL;
4505 getSamplerParameterIuiv = &glGetSamplerParameterIuivNULL;
4506 getSamplerParameterfv = &glGetSamplerParameterfvNULL;
4507 getSamplerParameteriv = &glGetSamplerParameterivNULL;
4508 isSampler = &glIsSamplerNULL;
4509 queryCounter = &glQueryCounterNULL;
4510 samplerParameterIiv = &glSamplerParameterIivNULL;
4511 samplerParameterIuiv = &glSamplerParameterIuivNULL;
4512 samplerParameterf = &glSamplerParameterfNULL;
4513 samplerParameterfv = &glSamplerParameterfvNULL;
4514 samplerParameteri = &glSamplerParameteriNULL;
4515 samplerParameteriv = &glSamplerParameterivNULL;
4516 vertexAttribDivisor = &glVertexAttribDivisorNULL;
4517 vertexAttribP1ui = &glVertexAttribP1uiNULL;
4518 vertexAttribP1uiv = &glVertexAttribP1uivNULL;
4519 vertexAttribP2ui = &glVertexAttribP2uiNULL;
4520 vertexAttribP2uiv = &glVertexAttribP2uivNULL;
4521 vertexAttribP3ui = &glVertexAttribP3uiNULL;
4522 vertexAttribP3uiv = &glVertexAttribP3uivNULL;
4523 vertexAttribP4ui = &glVertexAttribP4uiNULL;
4524 vertexAttribP4uiv = &glVertexAttribP4uivNULL;
4525 }
4526
4527 if (version >= gl::Version(4, 0))
4528 {
4529 beginQueryIndexed = &glBeginQueryIndexedNULL;
4530 bindTransformFeedback = &glBindTransformFeedbackNULL;
4531 blendEquationSeparatei = &glBlendEquationSeparateiNULL;
4532 blendEquationi = &glBlendEquationiNULL;
4533 blendFuncSeparatei = &glBlendFuncSeparateiNULL;
4534 blendFunci = &glBlendFunciNULL;
4535 deleteTransformFeedbacks = &glDeleteTransformFeedbacksNULL;
4536 drawArraysIndirect = &glDrawArraysIndirectNULL;
4537 drawElementsIndirect = &glDrawElementsIndirectNULL;
4538 drawTransformFeedback = &glDrawTransformFeedbackNULL;
4539 drawTransformFeedbackStream = &glDrawTransformFeedbackStreamNULL;
4540 endQueryIndexed = &glEndQueryIndexedNULL;
4541 genTransformFeedbacks = &glGenTransformFeedbacksNULL;
4542 getActiveSubroutineName = &glGetActiveSubroutineNameNULL;
4543 getActiveSubroutineUniformName = &glGetActiveSubroutineUniformNameNULL;
4544 getActiveSubroutineUniformiv = &glGetActiveSubroutineUniformivNULL;
4545 getProgramStageiv = &glGetProgramStageivNULL;
4546 getQueryIndexediv = &glGetQueryIndexedivNULL;
4547 getSubroutineIndex = &glGetSubroutineIndexNULL;
4548 getSubroutineUniformLocation = &glGetSubroutineUniformLocationNULL;
4549 getUniformSubroutineuiv = &glGetUniformSubroutineuivNULL;
4550 getUniformdv = &glGetUniformdvNULL;
4551 isTransformFeedback = &glIsTransformFeedbackNULL;
4552 minSampleShading = &glMinSampleShadingNULL;
4553 patchParameterfv = &glPatchParameterfvNULL;
4554 patchParameteri = &glPatchParameteriNULL;
4555 pauseTransformFeedback = &glPauseTransformFeedbackNULL;
4556 resumeTransformFeedback = &glResumeTransformFeedbackNULL;
4557 uniform1d = &glUniform1dNULL;
4558 uniform1dv = &glUniform1dvNULL;
4559 uniform2d = &glUniform2dNULL;
4560 uniform2dv = &glUniform2dvNULL;
4561 uniform3d = &glUniform3dNULL;
4562 uniform3dv = &glUniform3dvNULL;
4563 uniform4d = &glUniform4dNULL;
4564 uniform4dv = &glUniform4dvNULL;
4565 uniformMatrix2dv = &glUniformMatrix2dvNULL;
4566 uniformMatrix2x3dv = &glUniformMatrix2x3dvNULL;
4567 uniformMatrix2x4dv = &glUniformMatrix2x4dvNULL;
4568 uniformMatrix3dv = &glUniformMatrix3dvNULL;
4569 uniformMatrix3x2dv = &glUniformMatrix3x2dvNULL;
4570 uniformMatrix3x4dv = &glUniformMatrix3x4dvNULL;
4571 uniformMatrix4dv = &glUniformMatrix4dvNULL;
4572 uniformMatrix4x2dv = &glUniformMatrix4x2dvNULL;
4573 uniformMatrix4x3dv = &glUniformMatrix4x3dvNULL;
4574 uniformSubroutinesuiv = &glUniformSubroutinesuivNULL;
4575 }
4576
4577 if (version >= gl::Version(4, 1))
4578 {
4579 activeShaderProgram = &glActiveShaderProgramNULL;
4580 bindProgramPipeline = &glBindProgramPipelineNULL;
4581 clearDepthf = &glClearDepthfNULL;
4582 createShaderProgramv = &glCreateShaderProgramvNULL;
4583 deleteProgramPipelines = &glDeleteProgramPipelinesNULL;
4584 depthRangeArrayv = &glDepthRangeArrayvNULL;
4585 depthRangeIndexed = &glDepthRangeIndexedNULL;
4586 depthRangef = &glDepthRangefNULL;
4587 genProgramPipelines = &glGenProgramPipelinesNULL;
4588 getDoublei_v = &glGetDoublei_vNULL;
4589 getFloati_v = &glGetFloati_vNULL;
4590 getProgramBinary = &glGetProgramBinaryNULL;
4591 getProgramPipelineInfoLog = &glGetProgramPipelineInfoLogNULL;
4592 getProgramPipelineiv = &glGetProgramPipelineivNULL;
4593 getShaderPrecisionFormat = &glGetShaderPrecisionFormatNULL;
4594 getVertexAttribLdv = &glGetVertexAttribLdvNULL;
4595 isProgramPipeline = &glIsProgramPipelineNULL;
4596 programBinary = &glProgramBinaryNULL;
4597 programParameteri = &glProgramParameteriNULL;
4598 programUniform1d = &glProgramUniform1dNULL;
4599 programUniform1dv = &glProgramUniform1dvNULL;
4600 programUniform1f = &glProgramUniform1fNULL;
4601 programUniform1fv = &glProgramUniform1fvNULL;
4602 programUniform1i = &glProgramUniform1iNULL;
4603 programUniform1iv = &glProgramUniform1ivNULL;
4604 programUniform1ui = &glProgramUniform1uiNULL;
4605 programUniform1uiv = &glProgramUniform1uivNULL;
4606 programUniform2d = &glProgramUniform2dNULL;
4607 programUniform2dv = &glProgramUniform2dvNULL;
4608 programUniform2f = &glProgramUniform2fNULL;
4609 programUniform2fv = &glProgramUniform2fvNULL;
4610 programUniform2i = &glProgramUniform2iNULL;
4611 programUniform2iv = &glProgramUniform2ivNULL;
4612 programUniform2ui = &glProgramUniform2uiNULL;
4613 programUniform2uiv = &glProgramUniform2uivNULL;
4614 programUniform3d = &glProgramUniform3dNULL;
4615 programUniform3dv = &glProgramUniform3dvNULL;
4616 programUniform3f = &glProgramUniform3fNULL;
4617 programUniform3fv = &glProgramUniform3fvNULL;
4618 programUniform3i = &glProgramUniform3iNULL;
4619 programUniform3iv = &glProgramUniform3ivNULL;
4620 programUniform3ui = &glProgramUniform3uiNULL;
4621 programUniform3uiv = &glProgramUniform3uivNULL;
4622 programUniform4d = &glProgramUniform4dNULL;
4623 programUniform4dv = &glProgramUniform4dvNULL;
4624 programUniform4f = &glProgramUniform4fNULL;
4625 programUniform4fv = &glProgramUniform4fvNULL;
4626 programUniform4i = &glProgramUniform4iNULL;
4627 programUniform4iv = &glProgramUniform4ivNULL;
4628 programUniform4ui = &glProgramUniform4uiNULL;
4629 programUniform4uiv = &glProgramUniform4uivNULL;
4630 programUniformMatrix2dv = &glProgramUniformMatrix2dvNULL;
4631 programUniformMatrix2fv = &glProgramUniformMatrix2fvNULL;
4632 programUniformMatrix2x3dv = &glProgramUniformMatrix2x3dvNULL;
4633 programUniformMatrix2x3fv = &glProgramUniformMatrix2x3fvNULL;
4634 programUniformMatrix2x4dv = &glProgramUniformMatrix2x4dvNULL;
4635 programUniformMatrix2x4fv = &glProgramUniformMatrix2x4fvNULL;
4636 programUniformMatrix3dv = &glProgramUniformMatrix3dvNULL;
4637 programUniformMatrix3fv = &glProgramUniformMatrix3fvNULL;
4638 programUniformMatrix3x2dv = &glProgramUniformMatrix3x2dvNULL;
4639 programUniformMatrix3x2fv = &glProgramUniformMatrix3x2fvNULL;
4640 programUniformMatrix3x4dv = &glProgramUniformMatrix3x4dvNULL;
4641 programUniformMatrix3x4fv = &glProgramUniformMatrix3x4fvNULL;
4642 programUniformMatrix4dv = &glProgramUniformMatrix4dvNULL;
4643 programUniformMatrix4fv = &glProgramUniformMatrix4fvNULL;
4644 programUniformMatrix4x2dv = &glProgramUniformMatrix4x2dvNULL;
4645 programUniformMatrix4x2fv = &glProgramUniformMatrix4x2fvNULL;
4646 programUniformMatrix4x3dv = &glProgramUniformMatrix4x3dvNULL;
4647 programUniformMatrix4x3fv = &glProgramUniformMatrix4x3fvNULL;
4648 releaseShaderCompiler = &glReleaseShaderCompilerNULL;
4649 scissorArrayv = &glScissorArrayvNULL;
4650 scissorIndexed = &glScissorIndexedNULL;
4651 scissorIndexedv = &glScissorIndexedvNULL;
4652 shaderBinary = &glShaderBinaryNULL;
4653 useProgramStages = &glUseProgramStagesNULL;
4654 validateProgramPipeline = &glValidateProgramPipelineNULL;
4655 vertexAttribL1d = &glVertexAttribL1dNULL;
4656 vertexAttribL1dv = &glVertexAttribL1dvNULL;
4657 vertexAttribL2d = &glVertexAttribL2dNULL;
4658 vertexAttribL2dv = &glVertexAttribL2dvNULL;
4659 vertexAttribL3d = &glVertexAttribL3dNULL;
4660 vertexAttribL3dv = &glVertexAttribL3dvNULL;
4661 vertexAttribL4d = &glVertexAttribL4dNULL;
4662 vertexAttribL4dv = &glVertexAttribL4dvNULL;
4663 vertexAttribLPointer = &glVertexAttribLPointerNULL;
4664 viewportArrayv = &glViewportArrayvNULL;
4665 viewportIndexedf = &glViewportIndexedfNULL;
4666 viewportIndexedfv = &glViewportIndexedfvNULL;
4667 }
4668
4669 if (version >= gl::Version(4, 2))
4670 {
4671 bindImageTexture = &glBindImageTextureNULL;
4672 drawArraysInstancedBaseInstance = &glDrawArraysInstancedBaseInstanceNULL;
4673 drawElementsInstancedBaseInstance = &glDrawElementsInstancedBaseInstanceNULL;
4674 drawElementsInstancedBaseVertexBaseInstance =
4675 &glDrawElementsInstancedBaseVertexBaseInstanceNULL;
4676 drawTransformFeedbackInstanced = &glDrawTransformFeedbackInstancedNULL;
4677 drawTransformFeedbackStreamInstanced = &glDrawTransformFeedbackStreamInstancedNULL;
4678 getActiveAtomicCounterBufferiv = &glGetActiveAtomicCounterBufferivNULL;
4679 getInternalformativ = &glGetInternalformativNULL;
4680 memoryBarrier = &glMemoryBarrierNULL;
4681 texStorage1D = &glTexStorage1DNULL;
4682 texStorage2D = &glTexStorage2DNULL;
4683 texStorage3D = &glTexStorage3DNULL;
4684 }
4685
4686 if (version >= gl::Version(4, 3))
4687 {
4688 bindVertexBuffer = &glBindVertexBufferNULL;
4689 clearBufferData = &glClearBufferDataNULL;
4690 clearBufferSubData = &glClearBufferSubDataNULL;
4691 copyImageSubData = &glCopyImageSubDataNULL;
4692 debugMessageCallback = &glDebugMessageCallbackNULL;
4693 debugMessageControl = &glDebugMessageControlNULL;
4694 debugMessageInsert = &glDebugMessageInsertNULL;
4695 dispatchCompute = &glDispatchComputeNULL;
4696 dispatchComputeIndirect = &glDispatchComputeIndirectNULL;
4697 framebufferParameteri = &glFramebufferParameteriNULL;
4698 getDebugMessageLog = &glGetDebugMessageLogNULL;
4699 getFramebufferParameteriv = &glGetFramebufferParameterivNULL;
4700 getInternalformati64v = &glGetInternalformati64vNULL;
4701 getObjectLabel = &glGetObjectLabelNULL;
4702 getObjectPtrLabel = &glGetObjectPtrLabelNULL;
4703 getPointerv = &glGetPointervNULL;
4704 getProgramInterfaceiv = &glGetProgramInterfaceivNULL;
4705 getProgramResourceIndex = &glGetProgramResourceIndexNULL;
4706 getProgramResourceLocation = &glGetProgramResourceLocationNULL;
4707 getProgramResourceLocationIndex = &glGetProgramResourceLocationIndexNULL;
4708 getProgramResourceName = &glGetProgramResourceNameNULL;
4709 getProgramResourceiv = &glGetProgramResourceivNULL;
4710 invalidateBufferData = &glInvalidateBufferDataNULL;
4711 invalidateBufferSubData = &glInvalidateBufferSubDataNULL;
4712 invalidateFramebuffer = &glInvalidateFramebufferNULL;
4713 invalidateSubFramebuffer = &glInvalidateSubFramebufferNULL;
4714 invalidateTexImage = &glInvalidateTexImageNULL;
4715 invalidateTexSubImage = &glInvalidateTexSubImageNULL;
4716 multiDrawArraysIndirect = &glMultiDrawArraysIndirectNULL;
4717 multiDrawElementsIndirect = &glMultiDrawElementsIndirectNULL;
4718 objectLabel = &glObjectLabelNULL;
4719 objectPtrLabel = &glObjectPtrLabelNULL;
4720 popDebugGroup = &glPopDebugGroupNULL;
4721 pushDebugGroup = &glPushDebugGroupNULL;
4722 shaderStorageBlockBinding = &glShaderStorageBlockBindingNULL;
4723 texBufferRange = &glTexBufferRangeNULL;
4724 texStorage2DMultisample = &glTexStorage2DMultisampleNULL;
4725 texStorage3DMultisample = &glTexStorage3DMultisampleNULL;
4726 textureView = &glTextureViewNULL;
4727 vertexAttribBinding = &glVertexAttribBindingNULL;
4728 vertexAttribFormat = &glVertexAttribFormatNULL;
4729 vertexAttribIFormat = &glVertexAttribIFormatNULL;
4730 vertexAttribLFormat = &glVertexAttribLFormatNULL;
4731 vertexBindingDivisor = &glVertexBindingDivisorNULL;
4732 }
4733
4734 if (version >= gl::Version(4, 4))
4735 {
4736 bindBuffersBase = &glBindBuffersBaseNULL;
4737 bindBuffersRange = &glBindBuffersRangeNULL;
4738 bindImageTextures = &glBindImageTexturesNULL;
4739 bindSamplers = &glBindSamplersNULL;
4740 bindTextures = &glBindTexturesNULL;
4741 bindVertexBuffers = &glBindVertexBuffersNULL;
4742 bufferStorage = &glBufferStorageNULL;
4743 clearTexImage = &glClearTexImageNULL;
4744 clearTexSubImage = &glClearTexSubImageNULL;
4745 }
4746
4747 if (version >= gl::Version(4, 5))
4748 {
4749 bindTextureUnit = &glBindTextureUnitNULL;
4750 blitNamedFramebuffer = &glBlitNamedFramebufferNULL;
4751 checkNamedFramebufferStatus = &glCheckNamedFramebufferStatusNULL;
4752 clearNamedBufferData = &glClearNamedBufferDataNULL;
4753 clearNamedBufferSubData = &glClearNamedBufferSubDataNULL;
4754 clearNamedFramebufferfi = &glClearNamedFramebufferfiNULL;
4755 clearNamedFramebufferfv = &glClearNamedFramebufferfvNULL;
4756 clearNamedFramebufferiv = &glClearNamedFramebufferivNULL;
4757 clearNamedFramebufferuiv = &glClearNamedFramebufferuivNULL;
4758 clipControl = &glClipControlNULL;
4759 compressedTextureSubImage1D = &glCompressedTextureSubImage1DNULL;
4760 compressedTextureSubImage2D = &glCompressedTextureSubImage2DNULL;
4761 compressedTextureSubImage3D = &glCompressedTextureSubImage3DNULL;
4762 copyNamedBufferSubData = &glCopyNamedBufferSubDataNULL;
4763 copyTextureSubImage1D = &glCopyTextureSubImage1DNULL;
4764 copyTextureSubImage2D = &glCopyTextureSubImage2DNULL;
4765 copyTextureSubImage3D = &glCopyTextureSubImage3DNULL;
4766 createBuffers = &glCreateBuffersNULL;
4767 createFramebuffers = &glCreateFramebuffersNULL;
4768 createProgramPipelines = &glCreateProgramPipelinesNULL;
4769 createQueries = &glCreateQueriesNULL;
4770 createRenderbuffers = &glCreateRenderbuffersNULL;
4771 createSamplers = &glCreateSamplersNULL;
4772 createTextures = &glCreateTexturesNULL;
4773 createTransformFeedbacks = &glCreateTransformFeedbacksNULL;
4774 createVertexArrays = &glCreateVertexArraysNULL;
4775 disableVertexArrayAttrib = &glDisableVertexArrayAttribNULL;
4776 enableVertexArrayAttrib = &glEnableVertexArrayAttribNULL;
4777 flushMappedNamedBufferRange = &glFlushMappedNamedBufferRangeNULL;
4778 generateTextureMipmap = &glGenerateTextureMipmapNULL;
4779 getCompressedTextureImage = &glGetCompressedTextureImageNULL;
4780 getCompressedTextureSubImage = &glGetCompressedTextureSubImageNULL;
4781 getGraphicsResetStatus = &glGetGraphicsResetStatusNULL;
4782 getNamedBufferParameteri64v = &glGetNamedBufferParameteri64vNULL;
4783 getNamedBufferParameteriv = &glGetNamedBufferParameterivNULL;
4784 getNamedBufferPointerv = &glGetNamedBufferPointervNULL;
4785 getNamedBufferSubData = &glGetNamedBufferSubDataNULL;
4786 getNamedFramebufferAttachmentParameteriv = &glGetNamedFramebufferAttachmentParameterivNULL;
4787 getNamedFramebufferParameteriv = &glGetNamedFramebufferParameterivNULL;
4788 getNamedRenderbufferParameteriv = &glGetNamedRenderbufferParameterivNULL;
4789 getQueryBufferObjecti64v = &glGetQueryBufferObjecti64vNULL;
4790 getQueryBufferObjectiv = &glGetQueryBufferObjectivNULL;
4791 getQueryBufferObjectui64v = &glGetQueryBufferObjectui64vNULL;
4792 getQueryBufferObjectuiv = &glGetQueryBufferObjectuivNULL;
4793 getTextureImage = &glGetTextureImageNULL;
4794 getTextureLevelParameterfv = &glGetTextureLevelParameterfvNULL;
4795 getTextureLevelParameteriv = &glGetTextureLevelParameterivNULL;
4796 getTextureParameterIiv = &glGetTextureParameterIivNULL;
4797 getTextureParameterIuiv = &glGetTextureParameterIuivNULL;
4798 getTextureParameterfv = &glGetTextureParameterfvNULL;
4799 getTextureParameteriv = &glGetTextureParameterivNULL;
4800 getTextureSubImage = &glGetTextureSubImageNULL;
4801 getTransformFeedbacki64_v = &glGetTransformFeedbacki64_vNULL;
4802 getTransformFeedbacki_v = &glGetTransformFeedbacki_vNULL;
4803 getTransformFeedbackiv = &glGetTransformFeedbackivNULL;
4804 getVertexArrayIndexed64iv = &glGetVertexArrayIndexed64ivNULL;
4805 getVertexArrayIndexediv = &glGetVertexArrayIndexedivNULL;
4806 getVertexArrayiv = &glGetVertexArrayivNULL;
4807 getnCompressedTexImage = &glGetnCompressedTexImageNULL;
4808 getnTexImage = &glGetnTexImageNULL;
4809 getnUniformdv = &glGetnUniformdvNULL;
4810 getnUniformfv = &glGetnUniformfvNULL;
4811 getnUniformiv = &glGetnUniformivNULL;
4812 getnUniformuiv = &glGetnUniformuivNULL;
4813 invalidateNamedFramebufferData = &glInvalidateNamedFramebufferDataNULL;
4814 invalidateNamedFramebufferSubData = &glInvalidateNamedFramebufferSubDataNULL;
4815 mapNamedBuffer = &glMapNamedBufferNULL;
4816 mapNamedBufferRange = &glMapNamedBufferRangeNULL;
4817 memoryBarrierByRegion = &glMemoryBarrierByRegionNULL;
4818 namedBufferData = &glNamedBufferDataNULL;
4819 namedBufferStorage = &glNamedBufferStorageNULL;
4820 namedBufferSubData = &glNamedBufferSubDataNULL;
4821 namedFramebufferDrawBuffer = &glNamedFramebufferDrawBufferNULL;
4822 namedFramebufferDrawBuffers = &glNamedFramebufferDrawBuffersNULL;
4823 namedFramebufferParameteri = &glNamedFramebufferParameteriNULL;
4824 namedFramebufferReadBuffer = &glNamedFramebufferReadBufferNULL;
4825 namedFramebufferRenderbuffer = &glNamedFramebufferRenderbufferNULL;
4826 namedFramebufferTexture = &glNamedFramebufferTextureNULL;
4827 namedFramebufferTextureLayer = &glNamedFramebufferTextureLayerNULL;
4828 namedRenderbufferStorage = &glNamedRenderbufferStorageNULL;
4829 namedRenderbufferStorageMultisample = &glNamedRenderbufferStorageMultisampleNULL;
4830 readnPixels = &glReadnPixelsNULL;
4831 textureBarrier = &glTextureBarrierNULL;
4832 textureBuffer = &glTextureBufferNULL;
4833 textureBufferRange = &glTextureBufferRangeNULL;
4834 textureParameterIiv = &glTextureParameterIivNULL;
4835 textureParameterIuiv = &glTextureParameterIuivNULL;
4836 textureParameterf = &glTextureParameterfNULL;
4837 textureParameterfv = &glTextureParameterfvNULL;
4838 textureParameteri = &glTextureParameteriNULL;
4839 textureParameteriv = &glTextureParameterivNULL;
4840 textureStorage1D = &glTextureStorage1DNULL;
4841 textureStorage2D = &glTextureStorage2DNULL;
4842 textureStorage2DMultisample = &glTextureStorage2DMultisampleNULL;
4843 textureStorage3D = &glTextureStorage3DNULL;
4844 textureStorage3DMultisample = &glTextureStorage3DMultisampleNULL;
4845 textureSubImage1D = &glTextureSubImage1DNULL;
4846 textureSubImage2D = &glTextureSubImage2DNULL;
4847 textureSubImage3D = &glTextureSubImage3DNULL;
4848 transformFeedbackBufferBase = &glTransformFeedbackBufferBaseNULL;
4849 transformFeedbackBufferRange = &glTransformFeedbackBufferRangeNULL;
4850 unmapNamedBuffer = &glUnmapNamedBufferNULL;
4851 vertexArrayAttribBinding = &glVertexArrayAttribBindingNULL;
4852 vertexArrayAttribFormat = &glVertexArrayAttribFormatNULL;
4853 vertexArrayAttribIFormat = &glVertexArrayAttribIFormatNULL;
4854 vertexArrayAttribLFormat = &glVertexArrayAttribLFormatNULL;
4855 vertexArrayBindingDivisor = &glVertexArrayBindingDivisorNULL;
4856 vertexArrayElementBuffer = &glVertexArrayElementBufferNULL;
4857 vertexArrayVertexBuffer = &glVertexArrayVertexBufferNULL;
4858 vertexArrayVertexBuffers = &glVertexArrayVertexBuffersNULL;
4859 }
4860 # endif // defined(ANGLE_ENABLE_GL_DESKTOP_BACKEND)
4861 }
4862
initProcsGLESNULL(const gl::Version & version,const std::set<std::string> & extensions)4863 void DispatchTableGL::initProcsGLESNULL(const gl::Version &version,
4864 const std::set<std::string> &extensions)
4865 {
4866 if (extensions.count("GL_EXT_base_instance") != 0)
4867 {
4868 drawArraysInstancedBaseInstance = &glDrawArraysInstancedBaseInstanceNULL;
4869 drawElementsInstancedBaseInstance = &glDrawElementsInstancedBaseInstanceNULL;
4870 drawElementsInstancedBaseVertexBaseInstance =
4871 &glDrawElementsInstancedBaseVertexBaseInstanceNULL;
4872 }
4873
4874 if (extensions.count("GL_EXT_blend_func_extended") != 0)
4875 {
4876 bindFragDataLocation = &glBindFragDataLocationNULL;
4877 bindFragDataLocationIndexed = &glBindFragDataLocationIndexedNULL;
4878 getFragDataIndex = &glGetFragDataIndexNULL;
4879 getProgramResourceLocationIndex = &glGetProgramResourceLocationIndexNULL;
4880 }
4881
4882 if (extensions.count("GL_EXT_buffer_storage") != 0)
4883 {
4884 bufferStorage = &glBufferStorageNULL;
4885 }
4886
4887 if (extensions.count("GL_EXT_clear_texture") != 0)
4888 {
4889 clearTexImage = &glClearTexImageNULL;
4890 clearTexSubImage = &glClearTexSubImageNULL;
4891 }
4892
4893 if (extensions.count("GL_EXT_clip_control") != 0)
4894 {
4895 clipControl = &glClipControlNULL;
4896 }
4897
4898 if (extensions.count("GL_EXT_copy_image") != 0)
4899 {
4900 copyImageSubData = &glCopyImageSubDataNULL;
4901 }
4902
4903 if (extensions.count("GL_EXT_discard_framebuffer") != 0)
4904 {
4905 discardFramebufferEXT = &glDiscardFramebufferEXTNULL;
4906 }
4907
4908 if (extensions.count("GL_EXT_disjoint_timer_query") != 0)
4909 {
4910 beginQuery = &glBeginQueryNULL;
4911 deleteQueries = &glDeleteQueriesNULL;
4912 endQuery = &glEndQueryNULL;
4913 genQueries = &glGenQueriesNULL;
4914 getInteger64v = &glGetInteger64vNULL;
4915 getQueryObjecti64v = &glGetQueryObjecti64vNULL;
4916 getQueryObjectiv = &glGetQueryObjectivNULL;
4917 getQueryObjectui64v = &glGetQueryObjectui64vNULL;
4918 getQueryObjectuiv = &glGetQueryObjectuivNULL;
4919 getQueryiv = &glGetQueryivNULL;
4920 isQuery = &glIsQueryNULL;
4921 queryCounter = &glQueryCounterNULL;
4922 }
4923
4924 if (extensions.count("GL_EXT_draw_buffers") != 0)
4925 {
4926 drawBuffers = &glDrawBuffersNULL;
4927 }
4928
4929 if (extensions.count("GL_EXT_draw_buffers_indexed") != 0)
4930 {
4931 blendEquationSeparatei = &glBlendEquationSeparateiNULL;
4932 blendEquationi = &glBlendEquationiNULL;
4933 blendFuncSeparatei = &glBlendFuncSeparateiNULL;
4934 blendFunci = &glBlendFunciNULL;
4935 colorMaski = &glColorMaskiNULL;
4936 disablei = &glDisableiNULL;
4937 enablei = &glEnableiNULL;
4938 isEnabledi = &glIsEnablediNULL;
4939 }
4940
4941 if (extensions.count("GL_EXT_draw_elements_base_vertex") != 0)
4942 {
4943 drawElementsBaseVertex = &glDrawElementsBaseVertexNULL;
4944 drawElementsInstancedBaseVertex = &glDrawElementsInstancedBaseVertexNULL;
4945 drawRangeElementsBaseVertex = &glDrawRangeElementsBaseVertexNULL;
4946 multiDrawElementsBaseVertex = &glMultiDrawElementsBaseVertexNULL;
4947 }
4948
4949 if (extensions.count("GL_EXT_draw_transform_feedback") != 0)
4950 {
4951 drawTransformFeedback = &glDrawTransformFeedbackNULL;
4952 drawTransformFeedbackInstanced = &glDrawTransformFeedbackInstancedNULL;
4953 }
4954
4955 if (extensions.count("GL_EXT_geometry_shader") != 0)
4956 {
4957 framebufferTexture = &glFramebufferTextureNULL;
4958 }
4959
4960 if (extensions.count("GL_EXT_instanced_arrays") != 0)
4961 {
4962 vertexAttribDivisor = &glVertexAttribDivisorNULL;
4963 }
4964
4965 if (extensions.count("GL_EXT_map_buffer_range") != 0)
4966 {
4967 flushMappedBufferRange = &glFlushMappedBufferRangeNULL;
4968 mapBufferRange = &glMapBufferRangeNULL;
4969 }
4970
4971 if (extensions.count("GL_EXT_multi_draw_indirect") != 0)
4972 {
4973 multiDrawArraysIndirect = &glMultiDrawArraysIndirectNULL;
4974 multiDrawElementsIndirect = &glMultiDrawElementsIndirectNULL;
4975 }
4976
4977 if (extensions.count("GL_EXT_multisampled_render_to_texture") != 0)
4978 {
4979 framebufferTexture2DMultisampleEXT = &glFramebufferTexture2DMultisampleEXTNULL;
4980 renderbufferStorageMultisample = &glRenderbufferStorageMultisampleNULL;
4981 renderbufferStorageMultisampleEXT = &glRenderbufferStorageMultisampleEXTNULL;
4982 }
4983
4984 if (extensions.count("GL_EXT_multiview_draw_buffers") != 0)
4985 {
4986 getIntegeri_v = &glGetIntegeri_vNULL;
4987 }
4988
4989 if (extensions.count("GL_EXT_occlusion_query_boolean") != 0)
4990 {
4991 beginQuery = &glBeginQueryNULL;
4992 deleteQueries = &glDeleteQueriesNULL;
4993 endQuery = &glEndQueryNULL;
4994 genQueries = &glGenQueriesNULL;
4995 getQueryObjectuiv = &glGetQueryObjectuivNULL;
4996 getQueryiv = &glGetQueryivNULL;
4997 isQuery = &glIsQueryNULL;
4998 }
4999
5000 if (extensions.count("GL_EXT_primitive_bounding_box") != 0)
5001 {
5002 primitiveBoundingBox = &glPrimitiveBoundingBoxNULL;
5003 }
5004
5005 if (extensions.count("GL_EXT_robustness") != 0)
5006 {
5007 getGraphicsResetStatus = &glGetGraphicsResetStatusNULL;
5008 getnUniformfv = &glGetnUniformfvNULL;
5009 getnUniformiv = &glGetnUniformivNULL;
5010 readnPixels = &glReadnPixelsNULL;
5011 }
5012
5013 if (extensions.count("GL_EXT_separate_shader_objects") != 0)
5014 {
5015 activeShaderProgram = &glActiveShaderProgramNULL;
5016 bindProgramPipeline = &glBindProgramPipelineNULL;
5017 createShaderProgramv = &glCreateShaderProgramvNULL;
5018 deleteProgramPipelines = &glDeleteProgramPipelinesNULL;
5019 genProgramPipelines = &glGenProgramPipelinesNULL;
5020 getProgramPipelineInfoLog = &glGetProgramPipelineInfoLogNULL;
5021 getProgramPipelineiv = &glGetProgramPipelineivNULL;
5022 isProgramPipeline = &glIsProgramPipelineNULL;
5023 programParameteri = &glProgramParameteriNULL;
5024 programUniform1f = &glProgramUniform1fNULL;
5025 programUniform1fv = &glProgramUniform1fvNULL;
5026 programUniform1i = &glProgramUniform1iNULL;
5027 programUniform1iv = &glProgramUniform1ivNULL;
5028 programUniform1ui = &glProgramUniform1uiNULL;
5029 programUniform1uiv = &glProgramUniform1uivNULL;
5030 programUniform2f = &glProgramUniform2fNULL;
5031 programUniform2fv = &glProgramUniform2fvNULL;
5032 programUniform2i = &glProgramUniform2iNULL;
5033 programUniform2iv = &glProgramUniform2ivNULL;
5034 programUniform2ui = &glProgramUniform2uiNULL;
5035 programUniform2uiv = &glProgramUniform2uivNULL;
5036 programUniform3f = &glProgramUniform3fNULL;
5037 programUniform3fv = &glProgramUniform3fvNULL;
5038 programUniform3i = &glProgramUniform3iNULL;
5039 programUniform3iv = &glProgramUniform3ivNULL;
5040 programUniform3ui = &glProgramUniform3uiNULL;
5041 programUniform3uiv = &glProgramUniform3uivNULL;
5042 programUniform4f = &glProgramUniform4fNULL;
5043 programUniform4fv = &glProgramUniform4fvNULL;
5044 programUniform4i = &glProgramUniform4iNULL;
5045 programUniform4iv = &glProgramUniform4ivNULL;
5046 programUniform4ui = &glProgramUniform4uiNULL;
5047 programUniform4uiv = &glProgramUniform4uivNULL;
5048 programUniformMatrix2fv = &glProgramUniformMatrix2fvNULL;
5049 programUniformMatrix2x3fv = &glProgramUniformMatrix2x3fvNULL;
5050 programUniformMatrix2x4fv = &glProgramUniformMatrix2x4fvNULL;
5051 programUniformMatrix3fv = &glProgramUniformMatrix3fvNULL;
5052 programUniformMatrix3x2fv = &glProgramUniformMatrix3x2fvNULL;
5053 programUniformMatrix3x4fv = &glProgramUniformMatrix3x4fvNULL;
5054 programUniformMatrix4fv = &glProgramUniformMatrix4fvNULL;
5055 programUniformMatrix4x2fv = &glProgramUniformMatrix4x2fvNULL;
5056 programUniformMatrix4x3fv = &glProgramUniformMatrix4x3fvNULL;
5057 useProgramStages = &glUseProgramStagesNULL;
5058 validateProgramPipeline = &glValidateProgramPipelineNULL;
5059 }
5060
5061 if (extensions.count("GL_EXT_tessellation_shader") != 0)
5062 {
5063 patchParameteri = &glPatchParameteriNULL;
5064 }
5065
5066 if (extensions.count("GL_EXT_texture_border_clamp") != 0)
5067 {
5068 getSamplerParameterIiv = &glGetSamplerParameterIivNULL;
5069 getSamplerParameterIuiv = &glGetSamplerParameterIuivNULL;
5070 getTexParameterIiv = &glGetTexParameterIivNULL;
5071 getTexParameterIuiv = &glGetTexParameterIuivNULL;
5072 samplerParameterIiv = &glSamplerParameterIivNULL;
5073 samplerParameterIuiv = &glSamplerParameterIuivNULL;
5074 texParameterIiv = &glTexParameterIivNULL;
5075 texParameterIuiv = &glTexParameterIuivNULL;
5076 }
5077
5078 if (extensions.count("GL_EXT_texture_buffer") != 0)
5079 {
5080 texBuffer = &glTexBufferNULL;
5081 texBufferEXT = &glTexBufferEXTNULL;
5082 texBufferRange = &glTexBufferRangeNULL;
5083 texBufferRangeEXT = &glTexBufferRangeEXTNULL;
5084 }
5085
5086 if (extensions.count("GL_EXT_texture_view") != 0)
5087 {
5088 textureView = &glTextureViewNULL;
5089 }
5090
5091 if (extensions.count("GL_IMG_multisampled_render_to_texture") != 0)
5092 {
5093 framebufferTexture2DMultisampleIMG = &glFramebufferTexture2DMultisampleIMGNULL;
5094 renderbufferStorageMultisampleIMG = &glRenderbufferStorageMultisampleIMGNULL;
5095 }
5096
5097 if (extensions.count("GL_KHR_debug") != 0)
5098 {
5099 debugMessageCallback = &glDebugMessageCallbackNULL;
5100 debugMessageControl = &glDebugMessageControlNULL;
5101 debugMessageInsert = &glDebugMessageInsertNULL;
5102 getDebugMessageLog = &glGetDebugMessageLogNULL;
5103 getObjectLabel = &glGetObjectLabelNULL;
5104 getObjectPtrLabel = &glGetObjectPtrLabelNULL;
5105 getPointerv = &glGetPointervNULL;
5106 objectLabel = &glObjectLabelNULL;
5107 objectPtrLabel = &glObjectPtrLabelNULL;
5108 popDebugGroup = &glPopDebugGroupNULL;
5109 pushDebugGroup = &glPushDebugGroupNULL;
5110 }
5111
5112 if (extensions.count("GL_KHR_robustness") != 0)
5113 {
5114 getGraphicsResetStatus = &glGetGraphicsResetStatusNULL;
5115 getnUniformfv = &glGetnUniformfvNULL;
5116 getnUniformiv = &glGetnUniformivNULL;
5117 getnUniformuiv = &glGetnUniformuivNULL;
5118 readnPixels = &glReadnPixelsNULL;
5119 }
5120
5121 if (extensions.count("GL_NV_framebuffer_blit") != 0)
5122 {
5123 blitFramebufferNV = &glBlitFramebufferNVNULL;
5124 }
5125
5126 if (extensions.count("GL_NV_polygon_mode") != 0)
5127 {
5128 polygonModeNV = &glPolygonModeNVNULL;
5129 }
5130
5131 if (extensions.count("GL_OES_EGL_image") != 0)
5132 {
5133 eGLImageTargetRenderbufferStorageOES = &glEGLImageTargetRenderbufferStorageOESNULL;
5134 eGLImageTargetTexture2DOES = &glEGLImageTargetTexture2DOESNULL;
5135 }
5136
5137 if (extensions.count("GL_OES_copy_image") != 0)
5138 {
5139 copyImageSubData = &glCopyImageSubDataNULL;
5140 }
5141
5142 if (extensions.count("GL_OES_draw_buffers_indexed") != 0)
5143 {
5144 blendEquationSeparatei = &glBlendEquationSeparateiNULL;
5145 blendEquationi = &glBlendEquationiNULL;
5146 blendFuncSeparatei = &glBlendFuncSeparateiNULL;
5147 blendFunci = &glBlendFunciNULL;
5148 colorMaski = &glColorMaskiNULL;
5149 disablei = &glDisableiNULL;
5150 enablei = &glEnableiNULL;
5151 isEnabledi = &glIsEnablediNULL;
5152 }
5153
5154 if (extensions.count("GL_OES_draw_elements_base_vertex") != 0)
5155 {
5156 drawElementsBaseVertex = &glDrawElementsBaseVertexNULL;
5157 drawElementsInstancedBaseVertex = &glDrawElementsInstancedBaseVertexNULL;
5158 drawRangeElementsBaseVertex = &glDrawRangeElementsBaseVertexNULL;
5159 multiDrawElementsBaseVertex = &glMultiDrawElementsBaseVertexNULL;
5160 }
5161
5162 if (extensions.count("GL_OES_geometry_shader") != 0)
5163 {
5164 framebufferTexture = &glFramebufferTextureNULL;
5165 }
5166
5167 if (extensions.count("GL_OES_get_program_binary") != 0)
5168 {
5169 getProgramBinary = &glGetProgramBinaryNULL;
5170 programBinary = &glProgramBinaryNULL;
5171 }
5172
5173 if (extensions.count("GL_OES_mapbuffer") != 0)
5174 {
5175 getBufferPointerv = &glGetBufferPointervNULL;
5176 mapBuffer = &glMapBufferNULL;
5177 unmapBuffer = &glUnmapBufferNULL;
5178 }
5179
5180 if (extensions.count("GL_OES_primitive_bounding_box") != 0)
5181 {
5182 primitiveBoundingBox = &glPrimitiveBoundingBoxNULL;
5183 }
5184
5185 if (extensions.count("GL_OES_sample_shading") != 0)
5186 {
5187 minSampleShading = &glMinSampleShadingNULL;
5188 }
5189
5190 if (extensions.count("GL_OES_tessellation_shader") != 0)
5191 {
5192 patchParameteri = &glPatchParameteriNULL;
5193 }
5194
5195 if (extensions.count("GL_OES_texture_3D") != 0)
5196 {
5197 compressedTexImage3D = &glCompressedTexImage3DNULL;
5198 compressedTexSubImage3D = &glCompressedTexSubImage3DNULL;
5199 copyTexSubImage3D = &glCopyTexSubImage3DNULL;
5200 framebufferTexture3D = &glFramebufferTexture3DNULL;
5201 texImage3D = &glTexImage3DNULL;
5202 texSubImage3D = &glTexSubImage3DNULL;
5203 }
5204
5205 if (extensions.count("GL_OES_texture_border_clamp") != 0)
5206 {
5207 getSamplerParameterIiv = &glGetSamplerParameterIivNULL;
5208 getSamplerParameterIuiv = &glGetSamplerParameterIuivNULL;
5209 getTexParameterIiv = &glGetTexParameterIivNULL;
5210 getTexParameterIuiv = &glGetTexParameterIuivNULL;
5211 samplerParameterIiv = &glSamplerParameterIivNULL;
5212 samplerParameterIuiv = &glSamplerParameterIuivNULL;
5213 texParameterIiv = &glTexParameterIivNULL;
5214 texParameterIuiv = &glTexParameterIuivNULL;
5215 }
5216
5217 if (extensions.count("GL_OES_texture_buffer") != 0)
5218 {
5219 texBuffer = &glTexBufferNULL;
5220 texBufferOES = &glTexBufferOESNULL;
5221 texBufferRange = &glTexBufferRangeNULL;
5222 texBufferRangeOES = &glTexBufferRangeOESNULL;
5223 }
5224
5225 if (extensions.count("GL_OES_texture_storage_multisample_2d_array") != 0)
5226 {
5227 texStorage3DMultisample = &glTexStorage3DMultisampleNULL;
5228 }
5229
5230 if (extensions.count("GL_OES_texture_view") != 0)
5231 {
5232 textureView = &glTextureViewNULL;
5233 }
5234
5235 if (extensions.count("GL_OES_vertex_array_object") != 0)
5236 {
5237 bindVertexArray = &glBindVertexArrayNULL;
5238 deleteVertexArrays = &glDeleteVertexArraysNULL;
5239 genVertexArrays = &glGenVertexArraysNULL;
5240 isVertexArray = &glIsVertexArrayNULL;
5241 }
5242
5243 if (extensions.count("GL_OES_viewport_array") != 0)
5244 {
5245 disablei = &glDisableiNULL;
5246 enablei = &glEnableiNULL;
5247 getFloati_v = &glGetFloati_vNULL;
5248 isEnabledi = &glIsEnablediNULL;
5249 scissorArrayv = &glScissorArrayvNULL;
5250 scissorIndexed = &glScissorIndexedNULL;
5251 scissorIndexedv = &glScissorIndexedvNULL;
5252 viewportArrayv = &glViewportArrayvNULL;
5253 viewportIndexedf = &glViewportIndexedfNULL;
5254 viewportIndexedfv = &glViewportIndexedfvNULL;
5255 }
5256
5257 if (extensions.count("GL_QCOM_tiled_rendering") != 0)
5258 {
5259 endTilingQCOM = &glEndTilingQCOMNULL;
5260 startTilingQCOM = &glStartTilingQCOMNULL;
5261 }
5262
5263 if (version >= gl::Version(2, 0))
5264 {
5265 activeTexture = &glActiveTextureNULL;
5266 attachShader = &glAttachShaderNULL;
5267 bindAttribLocation = &glBindAttribLocationNULL;
5268 bindBuffer = &glBindBufferNULL;
5269 bindFramebuffer = &glBindFramebufferNULL;
5270 bindRenderbuffer = &glBindRenderbufferNULL;
5271 bindTexture = &glBindTextureNULL;
5272 blendColor = &glBlendColorNULL;
5273 blendEquation = &glBlendEquationNULL;
5274 blendEquationSeparate = &glBlendEquationSeparateNULL;
5275 blendFunc = &glBlendFuncNULL;
5276 blendFuncSeparate = &glBlendFuncSeparateNULL;
5277 bufferData = &glBufferDataNULL;
5278 bufferSubData = &glBufferSubDataNULL;
5279 checkFramebufferStatus = &glCheckFramebufferStatusNULL;
5280 clear = &glClearNULL;
5281 clearColor = &glClearColorNULL;
5282 clearDepthf = &glClearDepthfNULL;
5283 clearStencil = &glClearStencilNULL;
5284 colorMask = &glColorMaskNULL;
5285 compileShader = &glCompileShaderNULL;
5286 compressedTexImage2D = &glCompressedTexImage2DNULL;
5287 compressedTexSubImage2D = &glCompressedTexSubImage2DNULL;
5288 copyTexImage2D = &glCopyTexImage2DNULL;
5289 copyTexSubImage2D = &glCopyTexSubImage2DNULL;
5290 createProgram = &glCreateProgramNULL;
5291 createShader = &glCreateShaderNULL;
5292 cullFace = &glCullFaceNULL;
5293 deleteBuffers = &glDeleteBuffersNULL;
5294 deleteFramebuffers = &glDeleteFramebuffersNULL;
5295 deleteProgram = &glDeleteProgramNULL;
5296 deleteRenderbuffers = &glDeleteRenderbuffersNULL;
5297 deleteShader = &glDeleteShaderNULL;
5298 deleteTextures = &glDeleteTexturesNULL;
5299 depthFunc = &glDepthFuncNULL;
5300 depthMask = &glDepthMaskNULL;
5301 depthRangef = &glDepthRangefNULL;
5302 detachShader = &glDetachShaderNULL;
5303 disable = &glDisableNULL;
5304 disableVertexAttribArray = &glDisableVertexAttribArrayNULL;
5305 drawArrays = &glDrawArraysNULL;
5306 drawElements = &glDrawElementsNULL;
5307 enable = &glEnableNULL;
5308 enableVertexAttribArray = &glEnableVertexAttribArrayNULL;
5309 finish = &glFinishNULL;
5310 flush = &glFlushNULL;
5311 framebufferRenderbuffer = &glFramebufferRenderbufferNULL;
5312 framebufferTexture2D = &glFramebufferTexture2DNULL;
5313 frontFace = &glFrontFaceNULL;
5314 genBuffers = &glGenBuffersNULL;
5315 genFramebuffers = &glGenFramebuffersNULL;
5316 genRenderbuffers = &glGenRenderbuffersNULL;
5317 genTextures = &glGenTexturesNULL;
5318 generateMipmap = &glGenerateMipmapNULL;
5319 getActiveAttrib = &glGetActiveAttribNULL;
5320 getActiveUniform = &glGetActiveUniformNULL;
5321 getAttachedShaders = &glGetAttachedShadersNULL;
5322 getAttribLocation = &glGetAttribLocationNULL;
5323 getBooleanv = &glGetBooleanvNULL;
5324 getBufferParameteriv = &glGetBufferParameterivNULL;
5325 getError = &glGetErrorNULL;
5326 getFloatv = &glGetFloatvNULL;
5327 getFramebufferAttachmentParameteriv = &glGetFramebufferAttachmentParameterivNULL;
5328 getIntegerv = &glGetIntegervNULL;
5329 getProgramInfoLog = &glGetProgramInfoLogNULL;
5330 getProgramiv = &glGetProgramivNULL;
5331 getRenderbufferParameteriv = &glGetRenderbufferParameterivNULL;
5332 getShaderInfoLog = &glGetShaderInfoLogNULL;
5333 getShaderPrecisionFormat = &glGetShaderPrecisionFormatNULL;
5334 getShaderSource = &glGetShaderSourceNULL;
5335 getShaderiv = &glGetShaderivNULL;
5336 getString = &glGetStringNULL;
5337 getTexParameterfv = &glGetTexParameterfvNULL;
5338 getTexParameteriv = &glGetTexParameterivNULL;
5339 getUniformLocation = &glGetUniformLocationNULL;
5340 getUniformfv = &glGetUniformfvNULL;
5341 getUniformiv = &glGetUniformivNULL;
5342 getVertexAttribPointerv = &glGetVertexAttribPointervNULL;
5343 getVertexAttribfv = &glGetVertexAttribfvNULL;
5344 getVertexAttribiv = &glGetVertexAttribivNULL;
5345 hint = &glHintNULL;
5346 isBuffer = &glIsBufferNULL;
5347 isEnabled = &glIsEnabledNULL;
5348 isFramebuffer = &glIsFramebufferNULL;
5349 isProgram = &glIsProgramNULL;
5350 isRenderbuffer = &glIsRenderbufferNULL;
5351 isShader = &glIsShaderNULL;
5352 isTexture = &glIsTextureNULL;
5353 lineWidth = &glLineWidthNULL;
5354 linkProgram = &glLinkProgramNULL;
5355 pixelStorei = &glPixelStoreiNULL;
5356 polygonOffset = &glPolygonOffsetNULL;
5357 readPixels = &glReadPixelsNULL;
5358 releaseShaderCompiler = &glReleaseShaderCompilerNULL;
5359 renderbufferStorage = &glRenderbufferStorageNULL;
5360 sampleCoverage = &glSampleCoverageNULL;
5361 scissor = &glScissorNULL;
5362 shaderBinary = &glShaderBinaryNULL;
5363 shaderSource = &glShaderSourceNULL;
5364 stencilFunc = &glStencilFuncNULL;
5365 stencilFuncSeparate = &glStencilFuncSeparateNULL;
5366 stencilMask = &glStencilMaskNULL;
5367 stencilMaskSeparate = &glStencilMaskSeparateNULL;
5368 stencilOp = &glStencilOpNULL;
5369 stencilOpSeparate = &glStencilOpSeparateNULL;
5370 texImage2D = &glTexImage2DNULL;
5371 texParameterf = &glTexParameterfNULL;
5372 texParameterfv = &glTexParameterfvNULL;
5373 texParameteri = &glTexParameteriNULL;
5374 texParameteriv = &glTexParameterivNULL;
5375 texSubImage2D = &glTexSubImage2DNULL;
5376 uniform1f = &glUniform1fNULL;
5377 uniform1fv = &glUniform1fvNULL;
5378 uniform1i = &glUniform1iNULL;
5379 uniform1iv = &glUniform1ivNULL;
5380 uniform2f = &glUniform2fNULL;
5381 uniform2fv = &glUniform2fvNULL;
5382 uniform2i = &glUniform2iNULL;
5383 uniform2iv = &glUniform2ivNULL;
5384 uniform3f = &glUniform3fNULL;
5385 uniform3fv = &glUniform3fvNULL;
5386 uniform3i = &glUniform3iNULL;
5387 uniform3iv = &glUniform3ivNULL;
5388 uniform4f = &glUniform4fNULL;
5389 uniform4fv = &glUniform4fvNULL;
5390 uniform4i = &glUniform4iNULL;
5391 uniform4iv = &glUniform4ivNULL;
5392 uniformMatrix2fv = &glUniformMatrix2fvNULL;
5393 uniformMatrix3fv = &glUniformMatrix3fvNULL;
5394 uniformMatrix4fv = &glUniformMatrix4fvNULL;
5395 useProgram = &glUseProgramNULL;
5396 validateProgram = &glValidateProgramNULL;
5397 vertexAttrib1f = &glVertexAttrib1fNULL;
5398 vertexAttrib1fv = &glVertexAttrib1fvNULL;
5399 vertexAttrib2f = &glVertexAttrib2fNULL;
5400 vertexAttrib2fv = &glVertexAttrib2fvNULL;
5401 vertexAttrib3f = &glVertexAttrib3fNULL;
5402 vertexAttrib3fv = &glVertexAttrib3fvNULL;
5403 vertexAttrib4f = &glVertexAttrib4fNULL;
5404 vertexAttrib4fv = &glVertexAttrib4fvNULL;
5405 vertexAttribPointer = &glVertexAttribPointerNULL;
5406 viewport = &glViewportNULL;
5407 }
5408
5409 if (version >= gl::Version(3, 0))
5410 {
5411 beginQuery = &glBeginQueryNULL;
5412 beginTransformFeedback = &glBeginTransformFeedbackNULL;
5413 bindBufferBase = &glBindBufferBaseNULL;
5414 bindBufferRange = &glBindBufferRangeNULL;
5415 bindSampler = &glBindSamplerNULL;
5416 bindTransformFeedback = &glBindTransformFeedbackNULL;
5417 bindVertexArray = &glBindVertexArrayNULL;
5418 blitFramebuffer = &glBlitFramebufferNULL;
5419 clearBufferfi = &glClearBufferfiNULL;
5420 clearBufferfv = &glClearBufferfvNULL;
5421 clearBufferiv = &glClearBufferivNULL;
5422 clearBufferuiv = &glClearBufferuivNULL;
5423 clientWaitSync = &glClientWaitSyncNULL;
5424 compressedTexImage3D = &glCompressedTexImage3DNULL;
5425 compressedTexSubImage3D = &glCompressedTexSubImage3DNULL;
5426 copyBufferSubData = &glCopyBufferSubDataNULL;
5427 copyTexSubImage3D = &glCopyTexSubImage3DNULL;
5428 deleteQueries = &glDeleteQueriesNULL;
5429 deleteSamplers = &glDeleteSamplersNULL;
5430 deleteSync = &glDeleteSyncNULL;
5431 deleteTransformFeedbacks = &glDeleteTransformFeedbacksNULL;
5432 deleteVertexArrays = &glDeleteVertexArraysNULL;
5433 drawArraysInstanced = &glDrawArraysInstancedNULL;
5434 drawBuffers = &glDrawBuffersNULL;
5435 drawElementsInstanced = &glDrawElementsInstancedNULL;
5436 drawRangeElements = &glDrawRangeElementsNULL;
5437 endQuery = &glEndQueryNULL;
5438 endTransformFeedback = &glEndTransformFeedbackNULL;
5439 fenceSync = &glFenceSyncNULL;
5440 flushMappedBufferRange = &glFlushMappedBufferRangeNULL;
5441 framebufferTextureLayer = &glFramebufferTextureLayerNULL;
5442 genQueries = &glGenQueriesNULL;
5443 genSamplers = &glGenSamplersNULL;
5444 genTransformFeedbacks = &glGenTransformFeedbacksNULL;
5445 genVertexArrays = &glGenVertexArraysNULL;
5446 getActiveUniformBlockName = &glGetActiveUniformBlockNameNULL;
5447 getActiveUniformBlockiv = &glGetActiveUniformBlockivNULL;
5448 getActiveUniformsiv = &glGetActiveUniformsivNULL;
5449 getBufferParameteri64v = &glGetBufferParameteri64vNULL;
5450 getBufferPointerv = &glGetBufferPointervNULL;
5451 getFragDataLocation = &glGetFragDataLocationNULL;
5452 getInteger64i_v = &glGetInteger64i_vNULL;
5453 getInteger64v = &glGetInteger64vNULL;
5454 getIntegeri_v = &glGetIntegeri_vNULL;
5455 getInternalformativ = &glGetInternalformativNULL;
5456 getProgramBinary = &glGetProgramBinaryNULL;
5457 getQueryObjectuiv = &glGetQueryObjectuivNULL;
5458 getQueryiv = &glGetQueryivNULL;
5459 getSamplerParameterfv = &glGetSamplerParameterfvNULL;
5460 getSamplerParameteriv = &glGetSamplerParameterivNULL;
5461 getStringi = &glGetStringiNULL;
5462 getSynciv = &glGetSyncivNULL;
5463 getTransformFeedbackVarying = &glGetTransformFeedbackVaryingNULL;
5464 getUniformBlockIndex = &glGetUniformBlockIndexNULL;
5465 getUniformIndices = &glGetUniformIndicesNULL;
5466 getUniformuiv = &glGetUniformuivNULL;
5467 getVertexAttribIiv = &glGetVertexAttribIivNULL;
5468 getVertexAttribIuiv = &glGetVertexAttribIuivNULL;
5469 invalidateFramebuffer = &glInvalidateFramebufferNULL;
5470 invalidateSubFramebuffer = &glInvalidateSubFramebufferNULL;
5471 isQuery = &glIsQueryNULL;
5472 isSampler = &glIsSamplerNULL;
5473 isSync = &glIsSyncNULL;
5474 isTransformFeedback = &glIsTransformFeedbackNULL;
5475 isVertexArray = &glIsVertexArrayNULL;
5476 mapBufferRange = &glMapBufferRangeNULL;
5477 pauseTransformFeedback = &glPauseTransformFeedbackNULL;
5478 programBinary = &glProgramBinaryNULL;
5479 programParameteri = &glProgramParameteriNULL;
5480 readBuffer = &glReadBufferNULL;
5481 renderbufferStorageMultisample = &glRenderbufferStorageMultisampleNULL;
5482 resumeTransformFeedback = &glResumeTransformFeedbackNULL;
5483 samplerParameterf = &glSamplerParameterfNULL;
5484 samplerParameterfv = &glSamplerParameterfvNULL;
5485 samplerParameteri = &glSamplerParameteriNULL;
5486 samplerParameteriv = &glSamplerParameterivNULL;
5487 texImage3D = &glTexImage3DNULL;
5488 texStorage2D = &glTexStorage2DNULL;
5489 texStorage3D = &glTexStorage3DNULL;
5490 texSubImage3D = &glTexSubImage3DNULL;
5491 transformFeedbackVaryings = &glTransformFeedbackVaryingsNULL;
5492 uniform1ui = &glUniform1uiNULL;
5493 uniform1uiv = &glUniform1uivNULL;
5494 uniform2ui = &glUniform2uiNULL;
5495 uniform2uiv = &glUniform2uivNULL;
5496 uniform3ui = &glUniform3uiNULL;
5497 uniform3uiv = &glUniform3uivNULL;
5498 uniform4ui = &glUniform4uiNULL;
5499 uniform4uiv = &glUniform4uivNULL;
5500 uniformBlockBinding = &glUniformBlockBindingNULL;
5501 uniformMatrix2x3fv = &glUniformMatrix2x3fvNULL;
5502 uniformMatrix2x4fv = &glUniformMatrix2x4fvNULL;
5503 uniformMatrix3x2fv = &glUniformMatrix3x2fvNULL;
5504 uniformMatrix3x4fv = &glUniformMatrix3x4fvNULL;
5505 uniformMatrix4x2fv = &glUniformMatrix4x2fvNULL;
5506 uniformMatrix4x3fv = &glUniformMatrix4x3fvNULL;
5507 unmapBuffer = &glUnmapBufferNULL;
5508 vertexAttribDivisor = &glVertexAttribDivisorNULL;
5509 vertexAttribI4i = &glVertexAttribI4iNULL;
5510 vertexAttribI4iv = &glVertexAttribI4ivNULL;
5511 vertexAttribI4ui = &glVertexAttribI4uiNULL;
5512 vertexAttribI4uiv = &glVertexAttribI4uivNULL;
5513 vertexAttribIPointer = &glVertexAttribIPointerNULL;
5514 waitSync = &glWaitSyncNULL;
5515 }
5516
5517 if (version >= gl::Version(3, 1))
5518 {
5519 activeShaderProgram = &glActiveShaderProgramNULL;
5520 bindImageTexture = &glBindImageTextureNULL;
5521 bindProgramPipeline = &glBindProgramPipelineNULL;
5522 bindVertexBuffer = &glBindVertexBufferNULL;
5523 createShaderProgramv = &glCreateShaderProgramvNULL;
5524 deleteProgramPipelines = &glDeleteProgramPipelinesNULL;
5525 dispatchCompute = &glDispatchComputeNULL;
5526 dispatchComputeIndirect = &glDispatchComputeIndirectNULL;
5527 drawArraysIndirect = &glDrawArraysIndirectNULL;
5528 drawElementsIndirect = &glDrawElementsIndirectNULL;
5529 framebufferParameteri = &glFramebufferParameteriNULL;
5530 genProgramPipelines = &glGenProgramPipelinesNULL;
5531 getBooleani_v = &glGetBooleani_vNULL;
5532 getFramebufferParameteriv = &glGetFramebufferParameterivNULL;
5533 getMultisamplefv = &glGetMultisamplefvNULL;
5534 getProgramInterfaceiv = &glGetProgramInterfaceivNULL;
5535 getProgramPipelineInfoLog = &glGetProgramPipelineInfoLogNULL;
5536 getProgramPipelineiv = &glGetProgramPipelineivNULL;
5537 getProgramResourceIndex = &glGetProgramResourceIndexNULL;
5538 getProgramResourceLocation = &glGetProgramResourceLocationNULL;
5539 getProgramResourceName = &glGetProgramResourceNameNULL;
5540 getProgramResourceiv = &glGetProgramResourceivNULL;
5541 getTexLevelParameterfv = &glGetTexLevelParameterfvNULL;
5542 getTexLevelParameteriv = &glGetTexLevelParameterivNULL;
5543 isProgramPipeline = &glIsProgramPipelineNULL;
5544 memoryBarrier = &glMemoryBarrierNULL;
5545 memoryBarrierByRegion = &glMemoryBarrierByRegionNULL;
5546 programUniform1f = &glProgramUniform1fNULL;
5547 programUniform1fv = &glProgramUniform1fvNULL;
5548 programUniform1i = &glProgramUniform1iNULL;
5549 programUniform1iv = &glProgramUniform1ivNULL;
5550 programUniform1ui = &glProgramUniform1uiNULL;
5551 programUniform1uiv = &glProgramUniform1uivNULL;
5552 programUniform2f = &glProgramUniform2fNULL;
5553 programUniform2fv = &glProgramUniform2fvNULL;
5554 programUniform2i = &glProgramUniform2iNULL;
5555 programUniform2iv = &glProgramUniform2ivNULL;
5556 programUniform2ui = &glProgramUniform2uiNULL;
5557 programUniform2uiv = &glProgramUniform2uivNULL;
5558 programUniform3f = &glProgramUniform3fNULL;
5559 programUniform3fv = &glProgramUniform3fvNULL;
5560 programUniform3i = &glProgramUniform3iNULL;
5561 programUniform3iv = &glProgramUniform3ivNULL;
5562 programUniform3ui = &glProgramUniform3uiNULL;
5563 programUniform3uiv = &glProgramUniform3uivNULL;
5564 programUniform4f = &glProgramUniform4fNULL;
5565 programUniform4fv = &glProgramUniform4fvNULL;
5566 programUniform4i = &glProgramUniform4iNULL;
5567 programUniform4iv = &glProgramUniform4ivNULL;
5568 programUniform4ui = &glProgramUniform4uiNULL;
5569 programUniform4uiv = &glProgramUniform4uivNULL;
5570 programUniformMatrix2fv = &glProgramUniformMatrix2fvNULL;
5571 programUniformMatrix2x3fv = &glProgramUniformMatrix2x3fvNULL;
5572 programUniformMatrix2x4fv = &glProgramUniformMatrix2x4fvNULL;
5573 programUniformMatrix3fv = &glProgramUniformMatrix3fvNULL;
5574 programUniformMatrix3x2fv = &glProgramUniformMatrix3x2fvNULL;
5575 programUniformMatrix3x4fv = &glProgramUniformMatrix3x4fvNULL;
5576 programUniformMatrix4fv = &glProgramUniformMatrix4fvNULL;
5577 programUniformMatrix4x2fv = &glProgramUniformMatrix4x2fvNULL;
5578 programUniformMatrix4x3fv = &glProgramUniformMatrix4x3fvNULL;
5579 sampleMaski = &glSampleMaskiNULL;
5580 texStorage2DMultisample = &glTexStorage2DMultisampleNULL;
5581 useProgramStages = &glUseProgramStagesNULL;
5582 validateProgramPipeline = &glValidateProgramPipelineNULL;
5583 vertexAttribBinding = &glVertexAttribBindingNULL;
5584 vertexAttribFormat = &glVertexAttribFormatNULL;
5585 vertexAttribIFormat = &glVertexAttribIFormatNULL;
5586 vertexBindingDivisor = &glVertexBindingDivisorNULL;
5587 }
5588
5589 if (version >= gl::Version(3, 2))
5590 {
5591 blendBarrier = &glBlendBarrierNULL;
5592 blendEquationSeparatei = &glBlendEquationSeparateiNULL;
5593 blendEquationi = &glBlendEquationiNULL;
5594 blendFuncSeparatei = &glBlendFuncSeparateiNULL;
5595 blendFunci = &glBlendFunciNULL;
5596 colorMaski = &glColorMaskiNULL;
5597 copyImageSubData = &glCopyImageSubDataNULL;
5598 debugMessageCallback = &glDebugMessageCallbackNULL;
5599 debugMessageControl = &glDebugMessageControlNULL;
5600 debugMessageInsert = &glDebugMessageInsertNULL;
5601 disablei = &glDisableiNULL;
5602 drawElementsBaseVertex = &glDrawElementsBaseVertexNULL;
5603 drawElementsInstancedBaseVertex = &glDrawElementsInstancedBaseVertexNULL;
5604 drawRangeElementsBaseVertex = &glDrawRangeElementsBaseVertexNULL;
5605 enablei = &glEnableiNULL;
5606 framebufferTexture = &glFramebufferTextureNULL;
5607 getDebugMessageLog = &glGetDebugMessageLogNULL;
5608 getGraphicsResetStatus = &glGetGraphicsResetStatusNULL;
5609 getObjectLabel = &glGetObjectLabelNULL;
5610 getObjectPtrLabel = &glGetObjectPtrLabelNULL;
5611 getPointerv = &glGetPointervNULL;
5612 getSamplerParameterIiv = &glGetSamplerParameterIivNULL;
5613 getSamplerParameterIuiv = &glGetSamplerParameterIuivNULL;
5614 getTexParameterIiv = &glGetTexParameterIivNULL;
5615 getTexParameterIuiv = &glGetTexParameterIuivNULL;
5616 getnUniformfv = &glGetnUniformfvNULL;
5617 getnUniformiv = &glGetnUniformivNULL;
5618 getnUniformuiv = &glGetnUniformuivNULL;
5619 isEnabledi = &glIsEnablediNULL;
5620 minSampleShading = &glMinSampleShadingNULL;
5621 objectLabel = &glObjectLabelNULL;
5622 objectPtrLabel = &glObjectPtrLabelNULL;
5623 patchParameteri = &glPatchParameteriNULL;
5624 popDebugGroup = &glPopDebugGroupNULL;
5625 primitiveBoundingBox = &glPrimitiveBoundingBoxNULL;
5626 pushDebugGroup = &glPushDebugGroupNULL;
5627 readnPixels = &glReadnPixelsNULL;
5628 samplerParameterIiv = &glSamplerParameterIivNULL;
5629 samplerParameterIuiv = &glSamplerParameterIuivNULL;
5630 texBuffer = &glTexBufferNULL;
5631 texBufferRange = &glTexBufferRangeNULL;
5632 texParameterIiv = &glTexParameterIivNULL;
5633 texParameterIuiv = &glTexParameterIuivNULL;
5634 texStorage3DMultisample = &glTexStorage3DMultisampleNULL;
5635 }
5636 }
5637
initProcsSharedExtensionsNULL(const std::set<std::string> & extensions)5638 void DispatchTableGL::initProcsSharedExtensionsNULL(const std::set<std::string> &extensions)
5639 {
5640 if (extensions.count("GL_EXT_debug_label") != 0)
5641 {
5642 getObjectLabel = &glGetObjectLabelNULL;
5643 }
5644
5645 if (extensions.count("GL_EXT_debug_marker") != 0)
5646 {
5647 insertEventMarkerEXT = &glInsertEventMarkerEXTNULL;
5648 popGroupMarkerEXT = &glPopGroupMarkerEXTNULL;
5649 pushGroupMarkerEXT = &glPushGroupMarkerEXTNULL;
5650 }
5651
5652 if (extensions.count("GL_EXT_draw_instanced") != 0)
5653 {
5654 drawArraysInstanced = &glDrawArraysInstancedNULL;
5655 drawElementsInstanced = &glDrawElementsInstancedNULL;
5656 }
5657
5658 if (extensions.count("GL_EXT_memory_object") != 0)
5659 {
5660 bufferStorageMemEXT = &glBufferStorageMemEXTNULL;
5661 createMemoryObjectsEXT = &glCreateMemoryObjectsEXTNULL;
5662 deleteMemoryObjectsEXT = &glDeleteMemoryObjectsEXTNULL;
5663 getMemoryObjectParameterivEXT = &glGetMemoryObjectParameterivEXTNULL;
5664 getUnsignedBytei_vEXT = &glGetUnsignedBytei_vEXTNULL;
5665 getUnsignedBytevEXT = &glGetUnsignedBytevEXTNULL;
5666 isMemoryObjectEXT = &glIsMemoryObjectEXTNULL;
5667 memoryObjectParameterivEXT = &glMemoryObjectParameterivEXTNULL;
5668 namedBufferStorageMemEXT = &glNamedBufferStorageMemEXTNULL;
5669 texStorageMem2DEXT = &glTexStorageMem2DEXTNULL;
5670 texStorageMem2DMultisampleEXT = &glTexStorageMem2DMultisampleEXTNULL;
5671 texStorageMem3DEXT = &glTexStorageMem3DEXTNULL;
5672 texStorageMem3DMultisampleEXT = &glTexStorageMem3DMultisampleEXTNULL;
5673 textureStorageMem2DEXT = &glTextureStorageMem2DEXTNULL;
5674 textureStorageMem2DMultisampleEXT = &glTextureStorageMem2DMultisampleEXTNULL;
5675 textureStorageMem3DEXT = &glTextureStorageMem3DEXTNULL;
5676 textureStorageMem3DMultisampleEXT = &glTextureStorageMem3DMultisampleEXTNULL;
5677 }
5678
5679 if (extensions.count("GL_EXT_memory_object_fd") != 0)
5680 {
5681 importMemoryFdEXT = &glImportMemoryFdEXTNULL;
5682 }
5683
5684 if (extensions.count("GL_EXT_memory_object_win32") != 0)
5685 {
5686 importMemoryWin32HandleEXT = &glImportMemoryWin32HandleEXTNULL;
5687 importMemoryWin32NameEXT = &glImportMemoryWin32NameEXTNULL;
5688 }
5689
5690 if (extensions.count("GL_EXT_multi_draw_arrays") != 0)
5691 {
5692 multiDrawArrays = &glMultiDrawArraysNULL;
5693 multiDrawElements = &glMultiDrawElementsNULL;
5694 }
5695
5696 if (extensions.count("GL_EXT_polygon_offset_clamp") != 0)
5697 {
5698 polygonOffsetClampEXT = &glPolygonOffsetClampEXTNULL;
5699 }
5700
5701 if (extensions.count("GL_EXT_semaphore") != 0)
5702 {
5703 deleteSemaphoresEXT = &glDeleteSemaphoresEXTNULL;
5704 genSemaphoresEXT = &glGenSemaphoresEXTNULL;
5705 getSemaphoreParameterui64vEXT = &glGetSemaphoreParameterui64vEXTNULL;
5706 getUnsignedBytei_vEXT = &glGetUnsignedBytei_vEXTNULL;
5707 getUnsignedBytevEXT = &glGetUnsignedBytevEXTNULL;
5708 isSemaphoreEXT = &glIsSemaphoreEXTNULL;
5709 semaphoreParameterui64vEXT = &glSemaphoreParameterui64vEXTNULL;
5710 signalSemaphoreEXT = &glSignalSemaphoreEXTNULL;
5711 waitSemaphoreEXT = &glWaitSemaphoreEXTNULL;
5712 }
5713
5714 if (extensions.count("GL_EXT_semaphore_fd") != 0)
5715 {
5716 importSemaphoreFdEXT = &glImportSemaphoreFdEXTNULL;
5717 }
5718
5719 if (extensions.count("GL_EXT_semaphore_win32") != 0)
5720 {
5721 importSemaphoreWin32HandleEXT = &glImportSemaphoreWin32HandleEXTNULL;
5722 importSemaphoreWin32NameEXT = &glImportSemaphoreWin32NameEXTNULL;
5723 }
5724
5725 if (extensions.count("GL_EXT_shader_framebuffer_fetch_non_coherent") != 0)
5726 {
5727 framebufferFetchBarrierEXT = &glFramebufferFetchBarrierEXTNULL;
5728 }
5729
5730 if (extensions.count("GL_EXT_texture_storage") != 0)
5731 {
5732 texStorage1D = &glTexStorage1DNULL;
5733 texStorage2D = &glTexStorage2DNULL;
5734 texStorage3D = &glTexStorage3DNULL;
5735 textureStorage1D = &glTextureStorage1DNULL;
5736 textureStorage2D = &glTextureStorage2DNULL;
5737 textureStorage3D = &glTextureStorage3DNULL;
5738 }
5739
5740 if (extensions.count("GL_KHR_blend_equation_advanced") != 0)
5741 {
5742 blendBarrier = &glBlendBarrierNULL;
5743 }
5744
5745 if (extensions.count("GL_KHR_parallel_shader_compile") != 0)
5746 {
5747 maxShaderCompilerThreadsKHR = &glMaxShaderCompilerThreadsKHRNULL;
5748 }
5749
5750 if (extensions.count("GL_MESA_framebuffer_flip_y") != 0)
5751 {
5752 framebufferParameteriMESA = &glFramebufferParameteriMESANULL;
5753 }
5754
5755 if (extensions.count("GL_NV_fence") != 0)
5756 {
5757 deleteFencesNV = &glDeleteFencesNVNULL;
5758 finishFenceNV = &glFinishFenceNVNULL;
5759 genFencesNV = &glGenFencesNVNULL;
5760 getFenceivNV = &glGetFenceivNVNULL;
5761 isFenceNV = &glIsFenceNVNULL;
5762 setFenceNV = &glSetFenceNVNULL;
5763 testFenceNV = &glTestFenceNVNULL;
5764 }
5765
5766 if (extensions.count("GL_NV_framebuffer_mixed_samples") != 0)
5767 {
5768 coverageModulationNV = &glCoverageModulationNVNULL;
5769 }
5770
5771 if (extensions.count("GL_NV_internalformat_sample_query") != 0)
5772 {
5773 getInternalformatSampleivNV = &glGetInternalformatSampleivNVNULL;
5774 }
5775
5776 if (extensions.count("GL_OVR_multiview") != 0)
5777 {
5778 framebufferTextureMultiviewOVR = &glFramebufferTextureMultiviewOVRNULL;
5779 }
5780 }
5781 #endif // defined(ANGLE_ENABLE_OPENGL_NULL)
5782
5783 } // namespace rx
5784