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