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