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_tessellation_shader") != 0)
593 {
594 ASSIGN("glPatchParameterfv", patchParameterfv);
595 ASSIGN("glPatchParameteri", patchParameteri);
596 }
597
598 if (extensions.count("GL_ARB_texture_barrier") != 0)
599 {
600 ASSIGN("glTextureBarrier", textureBarrier);
601 }
602
603 if (extensions.count("GL_ARB_texture_buffer_object") != 0)
604 {
605 ASSIGN("glTexBufferARB", texBuffer);
606 }
607
608 if (extensions.count("GL_ARB_texture_buffer_range") != 0)
609 {
610 ASSIGN("glTexBufferRange", texBufferRange);
611 }
612
613 if (extensions.count("GL_ARB_texture_compression") != 0)
614 {
615 ASSIGN("glCompressedTexImage1DARB", compressedTexImage1D);
616 ASSIGN("glCompressedTexImage2DARB", compressedTexImage2D);
617 ASSIGN("glCompressedTexImage3DARB", compressedTexImage3D);
618 ASSIGN("glCompressedTexSubImage1DARB", compressedTexSubImage1D);
619 ASSIGN("glCompressedTexSubImage2DARB", compressedTexSubImage2D);
620 ASSIGN("glCompressedTexSubImage3DARB", compressedTexSubImage3D);
621 ASSIGN("glGetCompressedTexImageARB", getCompressedTexImage);
622 }
623
624 if (extensions.count("GL_ARB_texture_multisample") != 0)
625 {
626 ASSIGN("glGetMultisamplefv", getMultisamplefv);
627 ASSIGN("glSampleMaski", sampleMaski);
628 ASSIGN("glTexImage2DMultisample", texImage2DMultisample);
629 ASSIGN("glTexImage3DMultisample", texImage3DMultisample);
630 }
631
632 if (extensions.count("GL_ARB_texture_storage") != 0)
633 {
634 ASSIGN("glTexStorage1D", texStorage1D);
635 ASSIGN("glTexStorage2D", texStorage2D);
636 ASSIGN("glTexStorage3D", texStorage3D);
637 }
638
639 if (extensions.count("GL_ARB_texture_storage_multisample") != 0)
640 {
641 ASSIGN("glTexStorage2DMultisample", texStorage2DMultisample);
642 ASSIGN("glTexStorage3DMultisample", texStorage3DMultisample);
643 }
644
645 if (extensions.count("GL_ARB_texture_view") != 0)
646 {
647 ASSIGN("glTextureView", textureView);
648 }
649
650 if (extensions.count("GL_ARB_timer_query") != 0)
651 {
652 ASSIGN("glGetQueryObjecti64v", getQueryObjecti64v);
653 ASSIGN("glGetQueryObjectui64v", getQueryObjectui64v);
654 ASSIGN("glQueryCounter", queryCounter);
655 }
656
657 if (extensions.count("GL_ARB_transform_feedback2") != 0)
658 {
659 ASSIGN("glBindTransformFeedback", bindTransformFeedback);
660 ASSIGN("glDeleteTransformFeedbacks", deleteTransformFeedbacks);
661 ASSIGN("glDrawTransformFeedback", drawTransformFeedback);
662 ASSIGN("glGenTransformFeedbacks", genTransformFeedbacks);
663 ASSIGN("glIsTransformFeedback", isTransformFeedback);
664 ASSIGN("glPauseTransformFeedback", pauseTransformFeedback);
665 ASSIGN("glResumeTransformFeedback", resumeTransformFeedback);
666 }
667
668 if (extensions.count("GL_ARB_transform_feedback3") != 0)
669 {
670 ASSIGN("glBeginQueryIndexed", beginQueryIndexed);
671 ASSIGN("glDrawTransformFeedbackStream", drawTransformFeedbackStream);
672 ASSIGN("glEndQueryIndexed", endQueryIndexed);
673 ASSIGN("glGetQueryIndexediv", getQueryIndexediv);
674 }
675
676 if (extensions.count("GL_ARB_transform_feedback_instanced") != 0)
677 {
678 ASSIGN("glDrawTransformFeedbackInstanced", drawTransformFeedbackInstanced);
679 ASSIGN("glDrawTransformFeedbackStreamInstanced", drawTransformFeedbackStreamInstanced);
680 }
681
682 if (extensions.count("GL_ARB_uniform_buffer_object") != 0)
683 {
684 ASSIGN("glBindBufferBase", bindBufferBase);
685 ASSIGN("glBindBufferRange", bindBufferRange);
686 ASSIGN("glGetActiveUniformBlockName", getActiveUniformBlockName);
687 ASSIGN("glGetActiveUniformBlockiv", getActiveUniformBlockiv);
688 ASSIGN("glGetActiveUniformName", getActiveUniformName);
689 ASSIGN("glGetActiveUniformsiv", getActiveUniformsiv);
690 ASSIGN("glGetIntegeri_v", getIntegeri_v);
691 ASSIGN("glGetUniformBlockIndex", getUniformBlockIndex);
692 ASSIGN("glGetUniformIndices", getUniformIndices);
693 ASSIGN("glUniformBlockBinding", uniformBlockBinding);
694 }
695
696 if (extensions.count("GL_ARB_vertex_array_object") != 0)
697 {
698 ASSIGN("glBindVertexArray", bindVertexArray);
699 ASSIGN("glDeleteVertexArrays", deleteVertexArrays);
700 ASSIGN("glGenVertexArrays", genVertexArrays);
701 ASSIGN("glIsVertexArray", isVertexArray);
702 }
703
704 if (extensions.count("GL_ARB_vertex_attrib_64bit") != 0)
705 {
706 ASSIGN("glGetVertexAttribLdv", getVertexAttribLdv);
707 ASSIGN("glVertexAttribL1d", vertexAttribL1d);
708 ASSIGN("glVertexAttribL1dv", vertexAttribL1dv);
709 ASSIGN("glVertexAttribL2d", vertexAttribL2d);
710 ASSIGN("glVertexAttribL2dv", vertexAttribL2dv);
711 ASSIGN("glVertexAttribL3d", vertexAttribL3d);
712 ASSIGN("glVertexAttribL3dv", vertexAttribL3dv);
713 ASSIGN("glVertexAttribL4d", vertexAttribL4d);
714 ASSIGN("glVertexAttribL4dv", vertexAttribL4dv);
715 ASSIGN("glVertexAttribLPointer", vertexAttribLPointer);
716 }
717
718 if (extensions.count("GL_ARB_vertex_attrib_binding") != 0)
719 {
720 ASSIGN("glBindVertexBuffer", bindVertexBuffer);
721 ASSIGN("glVertexAttribBinding", vertexAttribBinding);
722 ASSIGN("glVertexAttribFormat", vertexAttribFormat);
723 ASSIGN("glVertexAttribIFormat", vertexAttribIFormat);
724 ASSIGN("glVertexAttribLFormat", vertexAttribLFormat);
725 ASSIGN("glVertexBindingDivisor", vertexBindingDivisor);
726 }
727
728 if (extensions.count("GL_ARB_vertex_buffer_object") != 0)
729 {
730 ASSIGN("glBindBufferARB", bindBuffer);
731 ASSIGN("glBufferDataARB", bufferData);
732 ASSIGN("glBufferSubDataARB", bufferSubData);
733 ASSIGN("glDeleteBuffersARB", deleteBuffers);
734 ASSIGN("glGenBuffersARB", genBuffers);
735 ASSIGN("glGetBufferParameterivARB", getBufferParameteriv);
736 ASSIGN("glGetBufferPointervARB", getBufferPointerv);
737 ASSIGN("glGetBufferSubDataARB", getBufferSubData);
738 ASSIGN("glIsBufferARB", isBuffer);
739 ASSIGN("glMapBufferARB", mapBuffer);
740 ASSIGN("glUnmapBufferARB", unmapBuffer);
741 }
742
743 if (extensions.count("GL_ARB_vertex_program") != 0)
744 {
745 ASSIGN("glDisableVertexAttribArrayARB", disableVertexAttribArray);
746 ASSIGN("glEnableVertexAttribArrayARB", enableVertexAttribArray);
747 ASSIGN("glGetProgramivARB", getProgramiv);
748 ASSIGN("glGetVertexAttribPointervARB", getVertexAttribPointerv);
749 ASSIGN("glGetVertexAttribdvARB", getVertexAttribdv);
750 ASSIGN("glGetVertexAttribfvARB", getVertexAttribfv);
751 ASSIGN("glGetVertexAttribivARB", getVertexAttribiv);
752 ASSIGN("glIsProgramARB", isProgram);
753 ASSIGN("glVertexAttrib1dARB", vertexAttrib1d);
754 ASSIGN("glVertexAttrib1dvARB", vertexAttrib1dv);
755 ASSIGN("glVertexAttrib1fARB", vertexAttrib1f);
756 ASSIGN("glVertexAttrib1fvARB", vertexAttrib1fv);
757 ASSIGN("glVertexAttrib1sARB", vertexAttrib1s);
758 ASSIGN("glVertexAttrib1svARB", vertexAttrib1sv);
759 ASSIGN("glVertexAttrib2dARB", vertexAttrib2d);
760 ASSIGN("glVertexAttrib2dvARB", vertexAttrib2dv);
761 ASSIGN("glVertexAttrib2fARB", vertexAttrib2f);
762 ASSIGN("glVertexAttrib2fvARB", vertexAttrib2fv);
763 ASSIGN("glVertexAttrib2sARB", vertexAttrib2s);
764 ASSIGN("glVertexAttrib2svARB", vertexAttrib2sv);
765 ASSIGN("glVertexAttrib3dARB", vertexAttrib3d);
766 ASSIGN("glVertexAttrib3dvARB", vertexAttrib3dv);
767 ASSIGN("glVertexAttrib3fARB", vertexAttrib3f);
768 ASSIGN("glVertexAttrib3fvARB", vertexAttrib3fv);
769 ASSIGN("glVertexAttrib3sARB", vertexAttrib3s);
770 ASSIGN("glVertexAttrib3svARB", vertexAttrib3sv);
771 ASSIGN("glVertexAttrib4NbvARB", vertexAttrib4Nbv);
772 ASSIGN("glVertexAttrib4NivARB", vertexAttrib4Niv);
773 ASSIGN("glVertexAttrib4NsvARB", vertexAttrib4Nsv);
774 ASSIGN("glVertexAttrib4NubARB", vertexAttrib4Nub);
775 ASSIGN("glVertexAttrib4NubvARB", vertexAttrib4Nubv);
776 ASSIGN("glVertexAttrib4NuivARB", vertexAttrib4Nuiv);
777 ASSIGN("glVertexAttrib4NusvARB", vertexAttrib4Nusv);
778 ASSIGN("glVertexAttrib4bvARB", vertexAttrib4bv);
779 ASSIGN("glVertexAttrib4dARB", vertexAttrib4d);
780 ASSIGN("glVertexAttrib4dvARB", vertexAttrib4dv);
781 ASSIGN("glVertexAttrib4fARB", vertexAttrib4f);
782 ASSIGN("glVertexAttrib4fvARB", vertexAttrib4fv);
783 ASSIGN("glVertexAttrib4ivARB", vertexAttrib4iv);
784 ASSIGN("glVertexAttrib4sARB", vertexAttrib4s);
785 ASSIGN("glVertexAttrib4svARB", vertexAttrib4sv);
786 ASSIGN("glVertexAttrib4ubvARB", vertexAttrib4ubv);
787 ASSIGN("glVertexAttrib4uivARB", vertexAttrib4uiv);
788 ASSIGN("glVertexAttrib4usvARB", vertexAttrib4usv);
789 ASSIGN("glVertexAttribPointerARB", vertexAttribPointer);
790 }
791
792 if (extensions.count("GL_ARB_vertex_shader") != 0)
793 {
794 ASSIGN("glBindAttribLocationARB", bindAttribLocation);
795 ASSIGN("glDisableVertexAttribArrayARB", disableVertexAttribArray);
796 ASSIGN("glEnableVertexAttribArrayARB", enableVertexAttribArray);
797 ASSIGN("glGetActiveAttribARB", getActiveAttrib);
798 ASSIGN("glGetAttribLocationARB", getAttribLocation);
799 ASSIGN("glGetVertexAttribPointervARB", getVertexAttribPointerv);
800 ASSIGN("glGetVertexAttribdvARB", getVertexAttribdv);
801 ASSIGN("glGetVertexAttribfvARB", getVertexAttribfv);
802 ASSIGN("glGetVertexAttribivARB", getVertexAttribiv);
803 ASSIGN("glVertexAttrib1dARB", vertexAttrib1d);
804 ASSIGN("glVertexAttrib1dvARB", vertexAttrib1dv);
805 ASSIGN("glVertexAttrib1fARB", vertexAttrib1f);
806 ASSIGN("glVertexAttrib1fvARB", vertexAttrib1fv);
807 ASSIGN("glVertexAttrib1sARB", vertexAttrib1s);
808 ASSIGN("glVertexAttrib1svARB", vertexAttrib1sv);
809 ASSIGN("glVertexAttrib2dARB", vertexAttrib2d);
810 ASSIGN("glVertexAttrib2dvARB", vertexAttrib2dv);
811 ASSIGN("glVertexAttrib2fARB", vertexAttrib2f);
812 ASSIGN("glVertexAttrib2fvARB", vertexAttrib2fv);
813 ASSIGN("glVertexAttrib2sARB", vertexAttrib2s);
814 ASSIGN("glVertexAttrib2svARB", vertexAttrib2sv);
815 ASSIGN("glVertexAttrib3dARB", vertexAttrib3d);
816 ASSIGN("glVertexAttrib3dvARB", vertexAttrib3dv);
817 ASSIGN("glVertexAttrib3fARB", vertexAttrib3f);
818 ASSIGN("glVertexAttrib3fvARB", vertexAttrib3fv);
819 ASSIGN("glVertexAttrib3sARB", vertexAttrib3s);
820 ASSIGN("glVertexAttrib3svARB", vertexAttrib3sv);
821 ASSIGN("glVertexAttrib4NbvARB", vertexAttrib4Nbv);
822 ASSIGN("glVertexAttrib4NivARB", vertexAttrib4Niv);
823 ASSIGN("glVertexAttrib4NsvARB", vertexAttrib4Nsv);
824 ASSIGN("glVertexAttrib4NubARB", vertexAttrib4Nub);
825 ASSIGN("glVertexAttrib4NubvARB", vertexAttrib4Nubv);
826 ASSIGN("glVertexAttrib4NuivARB", vertexAttrib4Nuiv);
827 ASSIGN("glVertexAttrib4NusvARB", vertexAttrib4Nusv);
828 ASSIGN("glVertexAttrib4bvARB", vertexAttrib4bv);
829 ASSIGN("glVertexAttrib4dARB", vertexAttrib4d);
830 ASSIGN("glVertexAttrib4dvARB", vertexAttrib4dv);
831 ASSIGN("glVertexAttrib4fARB", vertexAttrib4f);
832 ASSIGN("glVertexAttrib4fvARB", vertexAttrib4fv);
833 ASSIGN("glVertexAttrib4ivARB", vertexAttrib4iv);
834 ASSIGN("glVertexAttrib4sARB", vertexAttrib4s);
835 ASSIGN("glVertexAttrib4svARB", vertexAttrib4sv);
836 ASSIGN("glVertexAttrib4ubvARB", vertexAttrib4ubv);
837 ASSIGN("glVertexAttrib4uivARB", vertexAttrib4uiv);
838 ASSIGN("glVertexAttrib4usvARB", vertexAttrib4usv);
839 ASSIGN("glVertexAttribPointerARB", vertexAttribPointer);
840 }
841
842 if (extensions.count("GL_ARB_vertex_type_2_10_10_10_rev") != 0)
843 {
844 ASSIGN("glVertexAttribP1ui", vertexAttribP1ui);
845 ASSIGN("glVertexAttribP1uiv", vertexAttribP1uiv);
846 ASSIGN("glVertexAttribP2ui", vertexAttribP2ui);
847 ASSIGN("glVertexAttribP2uiv", vertexAttribP2uiv);
848 ASSIGN("glVertexAttribP3ui", vertexAttribP3ui);
849 ASSIGN("glVertexAttribP3uiv", vertexAttribP3uiv);
850 ASSIGN("glVertexAttribP4ui", vertexAttribP4ui);
851 ASSIGN("glVertexAttribP4uiv", vertexAttribP4uiv);
852 }
853
854 if (extensions.count("GL_ARB_viewport_array") != 0)
855 {
856 ASSIGN("glDepthRangeArrayv", depthRangeArrayv);
857 ASSIGN("glDepthRangeIndexed", depthRangeIndexed);
858 ASSIGN("glGetDoublei_v", getDoublei_v);
859 ASSIGN("glGetFloati_v", getFloati_v);
860 ASSIGN("glScissorArrayv", scissorArrayv);
861 ASSIGN("glScissorIndexed", scissorIndexed);
862 ASSIGN("glScissorIndexedv", scissorIndexedv);
863 ASSIGN("glViewportArrayv", viewportArrayv);
864 ASSIGN("glViewportIndexedf", viewportIndexedf);
865 ASSIGN("glViewportIndexedfv", viewportIndexedfv);
866 }
867
868 if (extensions.count("GL_EXT_blend_color") != 0)
869 {
870 ASSIGN("glBlendColorEXT", blendColor);
871 }
872
873 if (extensions.count("GL_EXT_blend_equation_separate") != 0)
874 {
875 ASSIGN("glBlendEquationSeparateEXT", blendEquationSeparate);
876 }
877
878 if (extensions.count("GL_EXT_blend_func_separate") != 0)
879 {
880 ASSIGN("glBlendFuncSeparateEXT", blendFuncSeparate);
881 }
882
883 if (extensions.count("GL_EXT_copy_texture") != 0)
884 {
885 ASSIGN("glCopyTexImage1DEXT", copyTexImage1D);
886 ASSIGN("glCopyTexImage2DEXT", copyTexImage2D);
887 ASSIGN("glCopyTexSubImage1DEXT", copyTexSubImage1D);
888 ASSIGN("glCopyTexSubImage2DEXT", copyTexSubImage2D);
889 ASSIGN("glCopyTexSubImage3DEXT", copyTexSubImage3D);
890 }
891
892 if (extensions.count("GL_EXT_direct_state_access") != 0)
893 {
894 ASSIGN("glCheckNamedFramebufferStatusEXT", checkNamedFramebufferStatus);
895 ASSIGN("glClearNamedBufferDataEXT", clearNamedBufferData);
896 ASSIGN("glClearNamedBufferSubDataEXT", clearNamedBufferSubData);
897 ASSIGN("glCompressedTextureSubImage1DEXT", compressedTextureSubImage1D);
898 ASSIGN("glCompressedTextureSubImage2DEXT", compressedTextureSubImage2D);
899 ASSIGN("glCompressedTextureSubImage3DEXT", compressedTextureSubImage3D);
900 ASSIGN("glCopyTextureSubImage1DEXT", copyTextureSubImage1D);
901 ASSIGN("glCopyTextureSubImage2DEXT", copyTextureSubImage2D);
902 ASSIGN("glCopyTextureSubImage3DEXT", copyTextureSubImage3D);
903 ASSIGN("glDisableVertexArrayAttribEXT", disableVertexArrayAttrib);
904 ASSIGN("glEnableVertexArrayAttribEXT", enableVertexArrayAttrib);
905 ASSIGN("glFlushMappedNamedBufferRangeEXT", flushMappedNamedBufferRange);
906 ASSIGN("glGenerateTextureMipmapEXT", generateTextureMipmap);
907 ASSIGN("glGetCompressedTextureImageEXT", getCompressedTextureImage);
908 ASSIGN("glGetDoublei_vEXT", getDoublei_v);
909 ASSIGN("glGetFloati_vEXT", getFloati_v);
910 ASSIGN("glGetFramebufferParameterivEXT", getFramebufferParameteriv);
911 ASSIGN("glGetNamedBufferParameterivEXT", getNamedBufferParameteriv);
912 ASSIGN("glGetNamedBufferPointervEXT", getNamedBufferPointerv);
913 ASSIGN("glGetNamedBufferSubDataEXT", getNamedBufferSubData);
914 ASSIGN("glGetNamedFramebufferAttachmentParameterivEXT",
915 getNamedFramebufferAttachmentParameteriv);
916 ASSIGN("glGetNamedFramebufferParameterivEXT", getNamedFramebufferParameteriv);
917 ASSIGN("glGetNamedRenderbufferParameterivEXT", getNamedRenderbufferParameteriv);
918 ASSIGN("glGetTextureImageEXT", getTextureImage);
919 ASSIGN("glGetTextureLevelParameterfvEXT", getTextureLevelParameterfv);
920 ASSIGN("glGetTextureLevelParameterivEXT", getTextureLevelParameteriv);
921 ASSIGN("glGetTextureParameterIivEXT", getTextureParameterIiv);
922 ASSIGN("glGetTextureParameterIuivEXT", getTextureParameterIuiv);
923 ASSIGN("glGetTextureParameterfvEXT", getTextureParameterfv);
924 ASSIGN("glGetTextureParameterivEXT", getTextureParameteriv);
925 ASSIGN("glMapNamedBufferEXT", mapNamedBuffer);
926 ASSIGN("glMapNamedBufferRangeEXT", mapNamedBufferRange);
927 ASSIGN("glNamedBufferDataEXT", namedBufferData);
928 ASSIGN("glNamedBufferStorageEXT", namedBufferStorage);
929 ASSIGN("glNamedBufferSubDataEXT", namedBufferSubData);
930 ASSIGN("glNamedFramebufferParameteriEXT", namedFramebufferParameteri);
931 ASSIGN("glNamedFramebufferRenderbufferEXT", namedFramebufferRenderbuffer);
932 ASSIGN("glNamedFramebufferTextureEXT", namedFramebufferTexture);
933 ASSIGN("glNamedFramebufferTextureLayerEXT", namedFramebufferTextureLayer);
934 ASSIGN("glNamedRenderbufferStorageEXT", namedRenderbufferStorage);
935 ASSIGN("glNamedRenderbufferStorageMultisampleEXT", namedRenderbufferStorageMultisample);
936 ASSIGN("glProgramUniform1dEXT", programUniform1d);
937 ASSIGN("glProgramUniform1dvEXT", programUniform1dv);
938 ASSIGN("glProgramUniform2dEXT", programUniform2d);
939 ASSIGN("glProgramUniform2dvEXT", programUniform2dv);
940 ASSIGN("glProgramUniform3dEXT", programUniform3d);
941 ASSIGN("glProgramUniform3dvEXT", programUniform3dv);
942 ASSIGN("glProgramUniform4dEXT", programUniform4d);
943 ASSIGN("glProgramUniform4dvEXT", programUniform4dv);
944 ASSIGN("glProgramUniformMatrix2dvEXT", programUniformMatrix2dv);
945 ASSIGN("glProgramUniformMatrix2x3dvEXT", programUniformMatrix2x3dv);
946 ASSIGN("glProgramUniformMatrix2x4dvEXT", programUniformMatrix2x4dv);
947 ASSIGN("glProgramUniformMatrix3dvEXT", programUniformMatrix3dv);
948 ASSIGN("glProgramUniformMatrix3x2dvEXT", programUniformMatrix3x2dv);
949 ASSIGN("glProgramUniformMatrix3x4dvEXT", programUniformMatrix3x4dv);
950 ASSIGN("glProgramUniformMatrix4dvEXT", programUniformMatrix4dv);
951 ASSIGN("glProgramUniformMatrix4x2dvEXT", programUniformMatrix4x2dv);
952 ASSIGN("glProgramUniformMatrix4x3dvEXT", programUniformMatrix4x3dv);
953 ASSIGN("glTextureBufferEXT", textureBuffer);
954 ASSIGN("glTextureBufferRangeEXT", textureBufferRange);
955 ASSIGN("glTextureParameterIivEXT", textureParameterIiv);
956 ASSIGN("glTextureParameterIuivEXT", textureParameterIuiv);
957 ASSIGN("glTextureParameterfEXT", textureParameterf);
958 ASSIGN("glTextureParameterfvEXT", textureParameterfv);
959 ASSIGN("glTextureParameteriEXT", textureParameteri);
960 ASSIGN("glTextureParameterivEXT", textureParameteriv);
961 ASSIGN("glTextureStorage1DEXT", textureStorage1D);
962 ASSIGN("glTextureStorage2DEXT", textureStorage2D);
963 ASSIGN("glTextureStorage2DMultisampleEXT", textureStorage2DMultisample);
964 ASSIGN("glTextureStorage3DEXT", textureStorage3D);
965 ASSIGN("glTextureStorage3DMultisampleEXT", textureStorage3DMultisample);
966 ASSIGN("glTextureSubImage1DEXT", textureSubImage1D);
967 ASSIGN("glTextureSubImage2DEXT", textureSubImage2D);
968 ASSIGN("glTextureSubImage3DEXT", textureSubImage3D);
969 ASSIGN("glUnmapNamedBufferEXT", unmapNamedBuffer);
970 }
971
972 if (extensions.count("GL_EXT_draw_range_elements") != 0)
973 {
974 ASSIGN("glDrawRangeElementsEXT", drawRangeElements);
975 }
976
977 if (extensions.count("GL_EXT_framebuffer_blit") != 0)
978 {
979 ASSIGN("glBlitFramebufferEXT", blitFramebuffer);
980 ASSIGN("glBlitFramebufferEXT", blitFramebufferEXT);
981 }
982
983 if (extensions.count("GL_EXT_framebuffer_multisample") != 0)
984 {
985 ASSIGN("glRenderbufferStorageMultisampleEXT", renderbufferStorageMultisample);
986 ASSIGN("glRenderbufferStorageMultisampleEXT", renderbufferStorageMultisampleEXT);
987 }
988
989 if (extensions.count("GL_EXT_framebuffer_object") != 0)
990 {
991 ASSIGN("glBindFramebufferEXT", bindFramebuffer);
992 ASSIGN("glBindRenderbufferEXT", bindRenderbuffer);
993 ASSIGN("glCheckFramebufferStatusEXT", checkFramebufferStatus);
994 ASSIGN("glDeleteFramebuffersEXT", deleteFramebuffers);
995 ASSIGN("glDeleteRenderbuffersEXT", deleteRenderbuffers);
996 ASSIGN("glFramebufferRenderbufferEXT", framebufferRenderbuffer);
997 ASSIGN("glFramebufferTexture1DEXT", framebufferTexture1D);
998 ASSIGN("glFramebufferTexture2DEXT", framebufferTexture2D);
999 ASSIGN("glFramebufferTexture3DEXT", framebufferTexture3D);
1000 ASSIGN("glGenFramebuffersEXT", genFramebuffers);
1001 ASSIGN("glGenRenderbuffersEXT", genRenderbuffers);
1002 ASSIGN("glGenerateMipmapEXT", generateMipmap);
1003 ASSIGN("glGetFramebufferAttachmentParameterivEXT", getFramebufferAttachmentParameteriv);
1004 ASSIGN("glGetRenderbufferParameterivEXT", getRenderbufferParameteriv);
1005 ASSIGN("glIsFramebufferEXT", isFramebuffer);
1006 ASSIGN("glIsRenderbufferEXT", isRenderbuffer);
1007 ASSIGN("glRenderbufferStorageEXT", renderbufferStorage);
1008 }
1009
1010 if (extensions.count("GL_EXT_gpu_shader4") != 0)
1011 {
1012 ASSIGN("glBindFragDataLocationEXT", bindFragDataLocation);
1013 ASSIGN("glGetFragDataLocationEXT", getFragDataLocation);
1014 ASSIGN("glGetUniformuivEXT", getUniformuiv);
1015 ASSIGN("glUniform1uiEXT", uniform1ui);
1016 ASSIGN("glUniform1uivEXT", uniform1uiv);
1017 ASSIGN("glUniform2uiEXT", uniform2ui);
1018 ASSIGN("glUniform2uivEXT", uniform2uiv);
1019 ASSIGN("glUniform3uiEXT", uniform3ui);
1020 ASSIGN("glUniform3uivEXT", uniform3uiv);
1021 ASSIGN("glUniform4uiEXT", uniform4ui);
1022 ASSIGN("glUniform4uivEXT", uniform4uiv);
1023 }
1024
1025 if (extensions.count("GL_EXT_point_parameters") != 0)
1026 {
1027 ASSIGN("glPointParameterfEXT", pointParameterf);
1028 ASSIGN("glPointParameterfvEXT", pointParameterfv);
1029 }
1030
1031 if (extensions.count("GL_EXT_polygon_offset") != 0)
1032 {
1033 ASSIGN("glPolygonOffsetEXT", polygonOffset);
1034 }
1035
1036 if (extensions.count("GL_EXT_provoking_vertex") != 0)
1037 {
1038 ASSIGN("glProvokingVertexEXT", provokingVertex);
1039 }
1040
1041 if (extensions.count("GL_EXT_shader_image_load_store") != 0)
1042 {
1043 ASSIGN("glBindImageTextureEXT", bindImageTexture);
1044 ASSIGN("glMemoryBarrierEXT", memoryBarrier);
1045 }
1046
1047 if (extensions.count("GL_EXT_subtexture") != 0)
1048 {
1049 ASSIGN("glTexSubImage1DEXT", texSubImage1D);
1050 ASSIGN("glTexSubImage2DEXT", texSubImage2D);
1051 }
1052
1053 if (extensions.count("GL_EXT_texture3D") != 0)
1054 {
1055 ASSIGN("glTexImage3DEXT", texImage3D);
1056 ASSIGN("glTexSubImage3DEXT", texSubImage3D);
1057 }
1058
1059 if (extensions.count("GL_EXT_texture_array") != 0)
1060 {
1061 ASSIGN("glFramebufferTextureLayerEXT", framebufferTextureLayer);
1062 }
1063
1064 if (extensions.count("GL_EXT_texture_buffer_object") != 0)
1065 {
1066 ASSIGN("glTexBufferEXT", texBuffer);
1067 ASSIGN("glTexBufferEXT", texBufferEXT);
1068 }
1069
1070 if (extensions.count("GL_EXT_texture_integer") != 0)
1071 {
1072 ASSIGN("glGetTexParameterIivEXT", getTexParameterIiv);
1073 ASSIGN("glGetTexParameterIuivEXT", getTexParameterIuiv);
1074 ASSIGN("glTexParameterIivEXT", texParameterIiv);
1075 ASSIGN("glTexParameterIuivEXT", texParameterIuiv);
1076 }
1077
1078 if (extensions.count("GL_EXT_texture_object") != 0)
1079 {
1080 ASSIGN("glBindTextureEXT", bindTexture);
1081 ASSIGN("glDeleteTexturesEXT", deleteTextures);
1082 ASSIGN("glGenTexturesEXT", genTextures);
1083 ASSIGN("glIsTextureEXT", isTexture);
1084 }
1085
1086 if (extensions.count("GL_EXT_timer_query") != 0)
1087 {
1088 ASSIGN("glGetQueryObjecti64vEXT", getQueryObjecti64v);
1089 ASSIGN("glGetQueryObjectui64vEXT", getQueryObjectui64v);
1090 }
1091
1092 if (extensions.count("GL_EXT_transform_feedback") != 0)
1093 {
1094 ASSIGN("glBeginTransformFeedbackEXT", beginTransformFeedback);
1095 ASSIGN("glBindBufferBaseEXT", bindBufferBase);
1096 ASSIGN("glBindBufferRangeEXT", bindBufferRange);
1097 ASSIGN("glEndTransformFeedbackEXT", endTransformFeedback);
1098 ASSIGN("glGetTransformFeedbackVaryingEXT", getTransformFeedbackVarying);
1099 ASSIGN("glTransformFeedbackVaryingsEXT", transformFeedbackVaryings);
1100 }
1101
1102 if (extensions.count("GL_EXT_vertex_array") != 0)
1103 {
1104 ASSIGN("glDrawArraysEXT", drawArrays);
1105 ASSIGN("glGetPointervEXT", getPointerv);
1106 }
1107
1108 if (extensions.count("GL_EXT_vertex_attrib_64bit") != 0)
1109 {
1110 ASSIGN("glGetVertexAttribLdvEXT", getVertexAttribLdv);
1111 ASSIGN("glVertexAttribL1dEXT", vertexAttribL1d);
1112 ASSIGN("glVertexAttribL1dvEXT", vertexAttribL1dv);
1113 ASSIGN("glVertexAttribL2dEXT", vertexAttribL2d);
1114 ASSIGN("glVertexAttribL2dvEXT", vertexAttribL2dv);
1115 ASSIGN("glVertexAttribL3dEXT", vertexAttribL3d);
1116 ASSIGN("glVertexAttribL3dvEXT", vertexAttribL3dv);
1117 ASSIGN("glVertexAttribL4dEXT", vertexAttribL4d);
1118 ASSIGN("glVertexAttribL4dvEXT", vertexAttribL4dv);
1119 ASSIGN("glVertexAttribLPointerEXT", vertexAttribLPointer);
1120 }
1121
1122 if (extensions.count("GL_KHR_debug") != 0)
1123 {
1124 ASSIGN("glDebugMessageCallback", debugMessageCallback);
1125 ASSIGN("glDebugMessageControl", debugMessageControl);
1126 ASSIGN("glDebugMessageInsert", debugMessageInsert);
1127 ASSIGN("glGetDebugMessageLog", getDebugMessageLog);
1128 ASSIGN("glGetObjectLabel", getObjectLabel);
1129 ASSIGN("glGetObjectPtrLabel", getObjectPtrLabel);
1130 ASSIGN("glGetPointerv", getPointerv);
1131 ASSIGN("glObjectLabel", objectLabel);
1132 ASSIGN("glObjectPtrLabel", objectPtrLabel);
1133 ASSIGN("glPopDebugGroup", popDebugGroup);
1134 ASSIGN("glPushDebugGroup", pushDebugGroup);
1135 }
1136
1137 if (extensions.count("GL_KHR_robustness") != 0)
1138 {
1139 ASSIGN("glGetGraphicsResetStatus", getGraphicsResetStatus);
1140 ASSIGN("glGetnUniformfv", getnUniformfv);
1141 ASSIGN("glGetnUniformiv", getnUniformiv);
1142 ASSIGN("glGetnUniformuiv", getnUniformuiv);
1143 ASSIGN("glReadnPixels", readnPixels);
1144 }
1145
1146 if (extensions.count("GL_NV_geometry_program4") != 0)
1147 {
1148 ASSIGN("glFramebufferTextureEXT", framebufferTexture);
1149 ASSIGN("glFramebufferTextureLayerEXT", framebufferTextureLayer);
1150 }
1151
1152 if (extensions.count("GL_NV_vertex_program4") != 0)
1153 {
1154 ASSIGN("glGetVertexAttribIivEXT", getVertexAttribIiv);
1155 ASSIGN("glGetVertexAttribIuivEXT", getVertexAttribIuiv);
1156 ASSIGN("glVertexAttribI1iEXT", vertexAttribI1i);
1157 ASSIGN("glVertexAttribI1ivEXT", vertexAttribI1iv);
1158 ASSIGN("glVertexAttribI1uiEXT", vertexAttribI1ui);
1159 ASSIGN("glVertexAttribI1uivEXT", vertexAttribI1uiv);
1160 ASSIGN("glVertexAttribI2iEXT", vertexAttribI2i);
1161 ASSIGN("glVertexAttribI2ivEXT", vertexAttribI2iv);
1162 ASSIGN("glVertexAttribI2uiEXT", vertexAttribI2ui);
1163 ASSIGN("glVertexAttribI2uivEXT", vertexAttribI2uiv);
1164 ASSIGN("glVertexAttribI3iEXT", vertexAttribI3i);
1165 ASSIGN("glVertexAttribI3ivEXT", vertexAttribI3iv);
1166 ASSIGN("glVertexAttribI3uiEXT", vertexAttribI3ui);
1167 ASSIGN("glVertexAttribI3uivEXT", vertexAttribI3uiv);
1168 ASSIGN("glVertexAttribI4bvEXT", vertexAttribI4bv);
1169 ASSIGN("glVertexAttribI4iEXT", vertexAttribI4i);
1170 ASSIGN("glVertexAttribI4ivEXT", vertexAttribI4iv);
1171 ASSIGN("glVertexAttribI4svEXT", vertexAttribI4sv);
1172 ASSIGN("glVertexAttribI4ubvEXT", vertexAttribI4ubv);
1173 ASSIGN("glVertexAttribI4uiEXT", vertexAttribI4ui);
1174 ASSIGN("glVertexAttribI4uivEXT", vertexAttribI4uiv);
1175 ASSIGN("glVertexAttribI4usvEXT", vertexAttribI4usv);
1176 ASSIGN("glVertexAttribIPointerEXT", vertexAttribIPointer);
1177 }
1178
1179 if (extensions.count("GL_OES_single_precision") != 0)
1180 {
1181 ASSIGN("glClearDepthfOES", clearDepthf);
1182 ASSIGN("glDepthRangefOES", depthRangef);
1183 }
1184
1185 if (version >= gl::Version(1, 0))
1186 {
1187 ASSIGN("glBlendFunc", blendFunc);
1188 ASSIGN("glClear", clear);
1189 ASSIGN("glClearColor", clearColor);
1190 ASSIGN("glClearDepth", clearDepth);
1191 ASSIGN("glClearStencil", clearStencil);
1192 ASSIGN("glColorMask", colorMask);
1193 ASSIGN("glCullFace", cullFace);
1194 ASSIGN("glDepthFunc", depthFunc);
1195 ASSIGN("glDepthMask", depthMask);
1196 ASSIGN("glDepthRange", depthRange);
1197 ASSIGN("glDisable", disable);
1198 ASSIGN("glDrawBuffer", drawBuffer);
1199 ASSIGN("glEnable", enable);
1200 ASSIGN("glFinish", finish);
1201 ASSIGN("glFlush", flush);
1202 ASSIGN("glFrontFace", frontFace);
1203 ASSIGN("glGetBooleanv", getBooleanv);
1204 ASSIGN("glGetDoublev", getDoublev);
1205 ASSIGN("glGetError", getError);
1206 ASSIGN("glGetFloatv", getFloatv);
1207 ASSIGN("glGetIntegerv", getIntegerv);
1208 ASSIGN("glGetString", getString);
1209 ASSIGN("glGetTexImage", getTexImage);
1210 ASSIGN("glGetTexLevelParameterfv", getTexLevelParameterfv);
1211 ASSIGN("glGetTexLevelParameteriv", getTexLevelParameteriv);
1212 ASSIGN("glGetTexParameterfv", getTexParameterfv);
1213 ASSIGN("glGetTexParameteriv", getTexParameteriv);
1214 ASSIGN("glHint", hint);
1215 ASSIGN("glIsEnabled", isEnabled);
1216 ASSIGN("glLineWidth", lineWidth);
1217 ASSIGN("glLogicOp", logicOp);
1218 ASSIGN("glPixelStoref", pixelStoref);
1219 ASSIGN("glPixelStorei", pixelStorei);
1220 ASSIGN("glPointSize", pointSize);
1221 ASSIGN("glPolygonMode", polygonMode);
1222 ASSIGN("glReadBuffer", readBuffer);
1223 ASSIGN("glReadPixels", readPixels);
1224 ASSIGN("glScissor", scissor);
1225 ASSIGN("glStencilFunc", stencilFunc);
1226 ASSIGN("glStencilMask", stencilMask);
1227 ASSIGN("glStencilOp", stencilOp);
1228 ASSIGN("glTexImage1D", texImage1D);
1229 ASSIGN("glTexImage2D", texImage2D);
1230 ASSIGN("glTexParameterf", texParameterf);
1231 ASSIGN("glTexParameterfv", texParameterfv);
1232 ASSIGN("glTexParameteri", texParameteri);
1233 ASSIGN("glTexParameteriv", texParameteriv);
1234 ASSIGN("glViewport", viewport);
1235 }
1236
1237 if (version >= gl::Version(1, 1))
1238 {
1239 ASSIGN("glBindTexture", bindTexture);
1240 ASSIGN("glCopyTexImage1D", copyTexImage1D);
1241 ASSIGN("glCopyTexImage2D", copyTexImage2D);
1242 ASSIGN("glCopyTexSubImage1D", copyTexSubImage1D);
1243 ASSIGN("glCopyTexSubImage2D", copyTexSubImage2D);
1244 ASSIGN("glDeleteTextures", deleteTextures);
1245 ASSIGN("glDrawArrays", drawArrays);
1246 ASSIGN("glDrawElements", drawElements);
1247 ASSIGN("glGenTextures", genTextures);
1248 ASSIGN("glIsTexture", isTexture);
1249 ASSIGN("glPolygonOffset", polygonOffset);
1250 ASSIGN("glTexSubImage1D", texSubImage1D);
1251 ASSIGN("glTexSubImage2D", texSubImage2D);
1252 }
1253
1254 if (version >= gl::Version(1, 2))
1255 {
1256 ASSIGN("glCopyTexSubImage3D", copyTexSubImage3D);
1257 ASSIGN("glDrawRangeElements", drawRangeElements);
1258 ASSIGN("glTexImage3D", texImage3D);
1259 ASSIGN("glTexSubImage3D", texSubImage3D);
1260 }
1261
1262 if (version >= gl::Version(1, 3))
1263 {
1264 ASSIGN("glActiveTexture", activeTexture);
1265 ASSIGN("glCompressedTexImage1D", compressedTexImage1D);
1266 ASSIGN("glCompressedTexImage2D", compressedTexImage2D);
1267 ASSIGN("glCompressedTexImage3D", compressedTexImage3D);
1268 ASSIGN("glCompressedTexSubImage1D", compressedTexSubImage1D);
1269 ASSIGN("glCompressedTexSubImage2D", compressedTexSubImage2D);
1270 ASSIGN("glCompressedTexSubImage3D", compressedTexSubImage3D);
1271 ASSIGN("glGetCompressedTexImage", getCompressedTexImage);
1272 ASSIGN("glSampleCoverage", sampleCoverage);
1273 }
1274
1275 if (version >= gl::Version(1, 4))
1276 {
1277 ASSIGN("glBlendColor", blendColor);
1278 ASSIGN("glBlendEquation", blendEquation);
1279 ASSIGN("glBlendFuncSeparate", blendFuncSeparate);
1280 ASSIGN("glMultiDrawArrays", multiDrawArrays);
1281 ASSIGN("glMultiDrawElements", multiDrawElements);
1282 ASSIGN("glPointParameterf", pointParameterf);
1283 ASSIGN("glPointParameterfv", pointParameterfv);
1284 ASSIGN("glPointParameteri", pointParameteri);
1285 ASSIGN("glPointParameteriv", pointParameteriv);
1286 }
1287
1288 if (version >= gl::Version(1, 5))
1289 {
1290 ASSIGN("glBeginQuery", beginQuery);
1291 ASSIGN("glBindBuffer", bindBuffer);
1292 ASSIGN("glBufferData", bufferData);
1293 ASSIGN("glBufferSubData", bufferSubData);
1294 ASSIGN("glDeleteBuffers", deleteBuffers);
1295 ASSIGN("glDeleteQueries", deleteQueries);
1296 ASSIGN("glEndQuery", endQuery);
1297 ASSIGN("glGenBuffers", genBuffers);
1298 ASSIGN("glGenQueries", genQueries);
1299 ASSIGN("glGetBufferParameteriv", getBufferParameteriv);
1300 ASSIGN("glGetBufferPointerv", getBufferPointerv);
1301 ASSIGN("glGetBufferSubData", getBufferSubData);
1302 ASSIGN("glGetQueryObjectiv", getQueryObjectiv);
1303 ASSIGN("glGetQueryObjectuiv", getQueryObjectuiv);
1304 ASSIGN("glGetQueryiv", getQueryiv);
1305 ASSIGN("glIsBuffer", isBuffer);
1306 ASSIGN("glIsQuery", isQuery);
1307 ASSIGN("glMapBuffer", mapBuffer);
1308 ASSIGN("glUnmapBuffer", unmapBuffer);
1309 }
1310
1311 if (version >= gl::Version(2, 0))
1312 {
1313 ASSIGN("glAttachShader", attachShader);
1314 ASSIGN("glBindAttribLocation", bindAttribLocation);
1315 ASSIGN("glBlendEquationSeparate", blendEquationSeparate);
1316 ASSIGN("glCompileShader", compileShader);
1317 ASSIGN("glCreateProgram", createProgram);
1318 ASSIGN("glCreateShader", createShader);
1319 ASSIGN("glDeleteProgram", deleteProgram);
1320 ASSIGN("glDeleteShader", deleteShader);
1321 ASSIGN("glDetachShader", detachShader);
1322 ASSIGN("glDisableVertexAttribArray", disableVertexAttribArray);
1323 ASSIGN("glDrawBuffers", drawBuffers);
1324 ASSIGN("glEnableVertexAttribArray", enableVertexAttribArray);
1325 ASSIGN("glGetActiveAttrib", getActiveAttrib);
1326 ASSIGN("glGetActiveUniform", getActiveUniform);
1327 ASSIGN("glGetAttachedShaders", getAttachedShaders);
1328 ASSIGN("glGetAttribLocation", getAttribLocation);
1329 ASSIGN("glGetProgramInfoLog", getProgramInfoLog);
1330 ASSIGN("glGetProgramiv", getProgramiv);
1331 ASSIGN("glGetShaderInfoLog", getShaderInfoLog);
1332 ASSIGN("glGetShaderSource", getShaderSource);
1333 ASSIGN("glGetShaderiv", getShaderiv);
1334 ASSIGN("glGetUniformLocation", getUniformLocation);
1335 ASSIGN("glGetUniformfv", getUniformfv);
1336 ASSIGN("glGetUniformiv", getUniformiv);
1337 ASSIGN("glGetVertexAttribPointerv", getVertexAttribPointerv);
1338 ASSIGN("glGetVertexAttribdv", getVertexAttribdv);
1339 ASSIGN("glGetVertexAttribfv", getVertexAttribfv);
1340 ASSIGN("glGetVertexAttribiv", getVertexAttribiv);
1341 ASSIGN("glIsProgram", isProgram);
1342 ASSIGN("glIsShader", isShader);
1343 ASSIGN("glLinkProgram", linkProgram);
1344 ASSIGN("glShaderSource", shaderSource);
1345 ASSIGN("glStencilFuncSeparate", stencilFuncSeparate);
1346 ASSIGN("glStencilMaskSeparate", stencilMaskSeparate);
1347 ASSIGN("glStencilOpSeparate", stencilOpSeparate);
1348 ASSIGN("glUniform1f", uniform1f);
1349 ASSIGN("glUniform1fv", uniform1fv);
1350 ASSIGN("glUniform1i", uniform1i);
1351 ASSIGN("glUniform1iv", uniform1iv);
1352 ASSIGN("glUniform2f", uniform2f);
1353 ASSIGN("glUniform2fv", uniform2fv);
1354 ASSIGN("glUniform2i", uniform2i);
1355 ASSIGN("glUniform2iv", uniform2iv);
1356 ASSIGN("glUniform3f", uniform3f);
1357 ASSIGN("glUniform3fv", uniform3fv);
1358 ASSIGN("glUniform3i", uniform3i);
1359 ASSIGN("glUniform3iv", uniform3iv);
1360 ASSIGN("glUniform4f", uniform4f);
1361 ASSIGN("glUniform4fv", uniform4fv);
1362 ASSIGN("glUniform4i", uniform4i);
1363 ASSIGN("glUniform4iv", uniform4iv);
1364 ASSIGN("glUniformMatrix2fv", uniformMatrix2fv);
1365 ASSIGN("glUniformMatrix3fv", uniformMatrix3fv);
1366 ASSIGN("glUniformMatrix4fv", uniformMatrix4fv);
1367 ASSIGN("glUseProgram", useProgram);
1368 ASSIGN("glValidateProgram", validateProgram);
1369 ASSIGN("glVertexAttrib1d", vertexAttrib1d);
1370 ASSIGN("glVertexAttrib1dv", vertexAttrib1dv);
1371 ASSIGN("glVertexAttrib1f", vertexAttrib1f);
1372 ASSIGN("glVertexAttrib1fv", vertexAttrib1fv);
1373 ASSIGN("glVertexAttrib1s", vertexAttrib1s);
1374 ASSIGN("glVertexAttrib1sv", vertexAttrib1sv);
1375 ASSIGN("glVertexAttrib2d", vertexAttrib2d);
1376 ASSIGN("glVertexAttrib2dv", vertexAttrib2dv);
1377 ASSIGN("glVertexAttrib2f", vertexAttrib2f);
1378 ASSIGN("glVertexAttrib2fv", vertexAttrib2fv);
1379 ASSIGN("glVertexAttrib2s", vertexAttrib2s);
1380 ASSIGN("glVertexAttrib2sv", vertexAttrib2sv);
1381 ASSIGN("glVertexAttrib3d", vertexAttrib3d);
1382 ASSIGN("glVertexAttrib3dv", vertexAttrib3dv);
1383 ASSIGN("glVertexAttrib3f", vertexAttrib3f);
1384 ASSIGN("glVertexAttrib3fv", vertexAttrib3fv);
1385 ASSIGN("glVertexAttrib3s", vertexAttrib3s);
1386 ASSIGN("glVertexAttrib3sv", vertexAttrib3sv);
1387 ASSIGN("glVertexAttrib4Nbv", vertexAttrib4Nbv);
1388 ASSIGN("glVertexAttrib4Niv", vertexAttrib4Niv);
1389 ASSIGN("glVertexAttrib4Nsv", vertexAttrib4Nsv);
1390 ASSIGN("glVertexAttrib4Nub", vertexAttrib4Nub);
1391 ASSIGN("glVertexAttrib4Nubv", vertexAttrib4Nubv);
1392 ASSIGN("glVertexAttrib4Nuiv", vertexAttrib4Nuiv);
1393 ASSIGN("glVertexAttrib4Nusv", vertexAttrib4Nusv);
1394 ASSIGN("glVertexAttrib4bv", vertexAttrib4bv);
1395 ASSIGN("glVertexAttrib4d", vertexAttrib4d);
1396 ASSIGN("glVertexAttrib4dv", vertexAttrib4dv);
1397 ASSIGN("glVertexAttrib4f", vertexAttrib4f);
1398 ASSIGN("glVertexAttrib4fv", vertexAttrib4fv);
1399 ASSIGN("glVertexAttrib4iv", vertexAttrib4iv);
1400 ASSIGN("glVertexAttrib4s", vertexAttrib4s);
1401 ASSIGN("glVertexAttrib4sv", vertexAttrib4sv);
1402 ASSIGN("glVertexAttrib4ubv", vertexAttrib4ubv);
1403 ASSIGN("glVertexAttrib4uiv", vertexAttrib4uiv);
1404 ASSIGN("glVertexAttrib4usv", vertexAttrib4usv);
1405 ASSIGN("glVertexAttribPointer", vertexAttribPointer);
1406 }
1407
1408 if (version >= gl::Version(2, 1))
1409 {
1410 ASSIGN("glUniformMatrix2x3fv", uniformMatrix2x3fv);
1411 ASSIGN("glUniformMatrix2x4fv", uniformMatrix2x4fv);
1412 ASSIGN("glUniformMatrix3x2fv", uniformMatrix3x2fv);
1413 ASSIGN("glUniformMatrix3x4fv", uniformMatrix3x4fv);
1414 ASSIGN("glUniformMatrix4x2fv", uniformMatrix4x2fv);
1415 ASSIGN("glUniformMatrix4x3fv", uniformMatrix4x3fv);
1416 }
1417
1418 if (version >= gl::Version(3, 0))
1419 {
1420 ASSIGN("glBeginConditionalRender", beginConditionalRender);
1421 ASSIGN("glBeginTransformFeedback", beginTransformFeedback);
1422 ASSIGN("glBindBufferBase", bindBufferBase);
1423 ASSIGN("glBindBufferRange", bindBufferRange);
1424 ASSIGN("glBindFragDataLocation", bindFragDataLocation);
1425 ASSIGN("glBindFramebuffer", bindFramebuffer);
1426 ASSIGN("glBindRenderbuffer", bindRenderbuffer);
1427 ASSIGN("glBindVertexArray", bindVertexArray);
1428 ASSIGN("glBlitFramebuffer", blitFramebuffer);
1429 ASSIGN("glCheckFramebufferStatus", checkFramebufferStatus);
1430 ASSIGN("glClampColor", clampColor);
1431 ASSIGN("glClearBufferfi", clearBufferfi);
1432 ASSIGN("glClearBufferfv", clearBufferfv);
1433 ASSIGN("glClearBufferiv", clearBufferiv);
1434 ASSIGN("glClearBufferuiv", clearBufferuiv);
1435 ASSIGN("glColorMaski", colorMaski);
1436 ASSIGN("glDeleteFramebuffers", deleteFramebuffers);
1437 ASSIGN("glDeleteRenderbuffers", deleteRenderbuffers);
1438 ASSIGN("glDeleteVertexArrays", deleteVertexArrays);
1439 ASSIGN("glDisablei", disablei);
1440 ASSIGN("glEnablei", enablei);
1441 ASSIGN("glEndConditionalRender", endConditionalRender);
1442 ASSIGN("glEndTransformFeedback", endTransformFeedback);
1443 ASSIGN("glFlushMappedBufferRange", flushMappedBufferRange);
1444 ASSIGN("glFramebufferRenderbuffer", framebufferRenderbuffer);
1445 ASSIGN("glFramebufferTexture1D", framebufferTexture1D);
1446 ASSIGN("glFramebufferTexture2D", framebufferTexture2D);
1447 ASSIGN("glFramebufferTexture3D", framebufferTexture3D);
1448 ASSIGN("glFramebufferTextureLayer", framebufferTextureLayer);
1449 ASSIGN("glGenFramebuffers", genFramebuffers);
1450 ASSIGN("glGenRenderbuffers", genRenderbuffers);
1451 ASSIGN("glGenVertexArrays", genVertexArrays);
1452 ASSIGN("glGenerateMipmap", generateMipmap);
1453 ASSIGN("glGetBooleani_v", getBooleani_v);
1454 ASSIGN("glGetFragDataLocation", getFragDataLocation);
1455 ASSIGN("glGetFramebufferAttachmentParameteriv", getFramebufferAttachmentParameteriv);
1456 ASSIGN("glGetIntegeri_v", getIntegeri_v);
1457 ASSIGN("glGetRenderbufferParameteriv", getRenderbufferParameteriv);
1458 ASSIGN("glGetStringi", getStringi);
1459 ASSIGN("glGetTexParameterIiv", getTexParameterIiv);
1460 ASSIGN("glGetTexParameterIuiv", getTexParameterIuiv);
1461 ASSIGN("glGetTransformFeedbackVarying", getTransformFeedbackVarying);
1462 ASSIGN("glGetUniformuiv", getUniformuiv);
1463 ASSIGN("glGetVertexAttribIiv", getVertexAttribIiv);
1464 ASSIGN("glGetVertexAttribIuiv", getVertexAttribIuiv);
1465 ASSIGN("glIsEnabledi", isEnabledi);
1466 ASSIGN("glIsFramebuffer", isFramebuffer);
1467 ASSIGN("glIsRenderbuffer", isRenderbuffer);
1468 ASSIGN("glIsVertexArray", isVertexArray);
1469 ASSIGN("glMapBufferRange", mapBufferRange);
1470 ASSIGN("glRenderbufferStorage", renderbufferStorage);
1471 ASSIGN("glRenderbufferStorageMultisample", renderbufferStorageMultisample);
1472 ASSIGN("glTexParameterIiv", texParameterIiv);
1473 ASSIGN("glTexParameterIuiv", texParameterIuiv);
1474 ASSIGN("glTransformFeedbackVaryings", transformFeedbackVaryings);
1475 ASSIGN("glUniform1ui", uniform1ui);
1476 ASSIGN("glUniform1uiv", uniform1uiv);
1477 ASSIGN("glUniform2ui", uniform2ui);
1478 ASSIGN("glUniform2uiv", uniform2uiv);
1479 ASSIGN("glUniform3ui", uniform3ui);
1480 ASSIGN("glUniform3uiv", uniform3uiv);
1481 ASSIGN("glUniform4ui", uniform4ui);
1482 ASSIGN("glUniform4uiv", uniform4uiv);
1483 ASSIGN("glVertexAttribI1i", vertexAttribI1i);
1484 ASSIGN("glVertexAttribI1iv", vertexAttribI1iv);
1485 ASSIGN("glVertexAttribI1ui", vertexAttribI1ui);
1486 ASSIGN("glVertexAttribI1uiv", vertexAttribI1uiv);
1487 ASSIGN("glVertexAttribI2i", vertexAttribI2i);
1488 ASSIGN("glVertexAttribI2iv", vertexAttribI2iv);
1489 ASSIGN("glVertexAttribI2ui", vertexAttribI2ui);
1490 ASSIGN("glVertexAttribI2uiv", vertexAttribI2uiv);
1491 ASSIGN("glVertexAttribI3i", vertexAttribI3i);
1492 ASSIGN("glVertexAttribI3iv", vertexAttribI3iv);
1493 ASSIGN("glVertexAttribI3ui", vertexAttribI3ui);
1494 ASSIGN("glVertexAttribI3uiv", vertexAttribI3uiv);
1495 ASSIGN("glVertexAttribI4bv", vertexAttribI4bv);
1496 ASSIGN("glVertexAttribI4i", vertexAttribI4i);
1497 ASSIGN("glVertexAttribI4iv", vertexAttribI4iv);
1498 ASSIGN("glVertexAttribI4sv", vertexAttribI4sv);
1499 ASSIGN("glVertexAttribI4ubv", vertexAttribI4ubv);
1500 ASSIGN("glVertexAttribI4ui", vertexAttribI4ui);
1501 ASSIGN("glVertexAttribI4uiv", vertexAttribI4uiv);
1502 ASSIGN("glVertexAttribI4usv", vertexAttribI4usv);
1503 ASSIGN("glVertexAttribIPointer", vertexAttribIPointer);
1504 }
1505
1506 if (version >= gl::Version(3, 1))
1507 {
1508 ASSIGN("glCopyBufferSubData", copyBufferSubData);
1509 ASSIGN("glDrawArraysInstanced", drawArraysInstanced);
1510 ASSIGN("glDrawElementsInstanced", drawElementsInstanced);
1511 ASSIGN("glGetActiveUniformBlockName", getActiveUniformBlockName);
1512 ASSIGN("glGetActiveUniformBlockiv", getActiveUniformBlockiv);
1513 ASSIGN("glGetActiveUniformName", getActiveUniformName);
1514 ASSIGN("glGetActiveUniformsiv", getActiveUniformsiv);
1515 ASSIGN("glGetUniformBlockIndex", getUniformBlockIndex);
1516 ASSIGN("glGetUniformIndices", getUniformIndices);
1517 ASSIGN("glPrimitiveRestartIndex", primitiveRestartIndex);
1518 ASSIGN("glTexBuffer", texBuffer);
1519 ASSIGN("glUniformBlockBinding", uniformBlockBinding);
1520 }
1521
1522 if (version >= gl::Version(3, 2))
1523 {
1524 ASSIGN("glClientWaitSync", clientWaitSync);
1525 ASSIGN("glDeleteSync", deleteSync);
1526 ASSIGN("glDrawElementsBaseVertex", drawElementsBaseVertex);
1527 ASSIGN("glDrawElementsInstancedBaseVertex", drawElementsInstancedBaseVertex);
1528 ASSIGN("glDrawRangeElementsBaseVertex", drawRangeElementsBaseVertex);
1529 ASSIGN("glFenceSync", fenceSync);
1530 ASSIGN("glFramebufferTexture", framebufferTexture);
1531 ASSIGN("glGetBufferParameteri64v", getBufferParameteri64v);
1532 ASSIGN("glGetInteger64i_v", getInteger64i_v);
1533 ASSIGN("glGetInteger64v", getInteger64v);
1534 ASSIGN("glGetMultisamplefv", getMultisamplefv);
1535 ASSIGN("glGetSynciv", getSynciv);
1536 ASSIGN("glIsSync", isSync);
1537 ASSIGN("glMultiDrawElementsBaseVertex", multiDrawElementsBaseVertex);
1538 ASSIGN("glProvokingVertex", provokingVertex);
1539 ASSIGN("glSampleMaski", sampleMaski);
1540 ASSIGN("glTexImage2DMultisample", texImage2DMultisample);
1541 ASSIGN("glTexImage3DMultisample", texImage3DMultisample);
1542 ASSIGN("glWaitSync", waitSync);
1543 }
1544
1545 if (version >= gl::Version(3, 3))
1546 {
1547 ASSIGN("glBindFragDataLocationIndexed", bindFragDataLocationIndexed);
1548 ASSIGN("glBindSampler", bindSampler);
1549 ASSIGN("glDeleteSamplers", deleteSamplers);
1550 ASSIGN("glGenSamplers", genSamplers);
1551 ASSIGN("glGetFragDataIndex", getFragDataIndex);
1552 ASSIGN("glGetQueryObjecti64v", getQueryObjecti64v);
1553 ASSIGN("glGetQueryObjectui64v", getQueryObjectui64v);
1554 ASSIGN("glGetSamplerParameterIiv", getSamplerParameterIiv);
1555 ASSIGN("glGetSamplerParameterIuiv", getSamplerParameterIuiv);
1556 ASSIGN("glGetSamplerParameterfv", getSamplerParameterfv);
1557 ASSIGN("glGetSamplerParameteriv", getSamplerParameteriv);
1558 ASSIGN("glIsSampler", isSampler);
1559 ASSIGN("glQueryCounter", queryCounter);
1560 ASSIGN("glSamplerParameterIiv", samplerParameterIiv);
1561 ASSIGN("glSamplerParameterIuiv", samplerParameterIuiv);
1562 ASSIGN("glSamplerParameterf", samplerParameterf);
1563 ASSIGN("glSamplerParameterfv", samplerParameterfv);
1564 ASSIGN("glSamplerParameteri", samplerParameteri);
1565 ASSIGN("glSamplerParameteriv", samplerParameteriv);
1566 ASSIGN("glVertexAttribDivisor", vertexAttribDivisor);
1567 ASSIGN("glVertexAttribP1ui", vertexAttribP1ui);
1568 ASSIGN("glVertexAttribP1uiv", vertexAttribP1uiv);
1569 ASSIGN("glVertexAttribP2ui", vertexAttribP2ui);
1570 ASSIGN("glVertexAttribP2uiv", vertexAttribP2uiv);
1571 ASSIGN("glVertexAttribP3ui", vertexAttribP3ui);
1572 ASSIGN("glVertexAttribP3uiv", vertexAttribP3uiv);
1573 ASSIGN("glVertexAttribP4ui", vertexAttribP4ui);
1574 ASSIGN("glVertexAttribP4uiv", vertexAttribP4uiv);
1575 }
1576
1577 if (version >= gl::Version(4, 0))
1578 {
1579 ASSIGN("glBeginQueryIndexed", beginQueryIndexed);
1580 ASSIGN("glBindTransformFeedback", bindTransformFeedback);
1581 ASSIGN("glBlendEquationSeparatei", blendEquationSeparatei);
1582 ASSIGN("glBlendEquationi", blendEquationi);
1583 ASSIGN("glBlendFuncSeparatei", blendFuncSeparatei);
1584 ASSIGN("glBlendFunci", blendFunci);
1585 ASSIGN("glDeleteTransformFeedbacks", deleteTransformFeedbacks);
1586 ASSIGN("glDrawArraysIndirect", drawArraysIndirect);
1587 ASSIGN("glDrawElementsIndirect", drawElementsIndirect);
1588 ASSIGN("glDrawTransformFeedback", drawTransformFeedback);
1589 ASSIGN("glDrawTransformFeedbackStream", drawTransformFeedbackStream);
1590 ASSIGN("glEndQueryIndexed", endQueryIndexed);
1591 ASSIGN("glGenTransformFeedbacks", genTransformFeedbacks);
1592 ASSIGN("glGetActiveSubroutineName", getActiveSubroutineName);
1593 ASSIGN("glGetActiveSubroutineUniformName", getActiveSubroutineUniformName);
1594 ASSIGN("glGetActiveSubroutineUniformiv", getActiveSubroutineUniformiv);
1595 ASSIGN("glGetProgramStageiv", getProgramStageiv);
1596 ASSIGN("glGetQueryIndexediv", getQueryIndexediv);
1597 ASSIGN("glGetSubroutineIndex", getSubroutineIndex);
1598 ASSIGN("glGetSubroutineUniformLocation", getSubroutineUniformLocation);
1599 ASSIGN("glGetUniformSubroutineuiv", getUniformSubroutineuiv);
1600 ASSIGN("glGetUniformdv", getUniformdv);
1601 ASSIGN("glIsTransformFeedback", isTransformFeedback);
1602 ASSIGN("glMinSampleShading", minSampleShading);
1603 ASSIGN("glPatchParameterfv", patchParameterfv);
1604 ASSIGN("glPatchParameteri", patchParameteri);
1605 ASSIGN("glPauseTransformFeedback", pauseTransformFeedback);
1606 ASSIGN("glResumeTransformFeedback", resumeTransformFeedback);
1607 ASSIGN("glUniform1d", uniform1d);
1608 ASSIGN("glUniform1dv", uniform1dv);
1609 ASSIGN("glUniform2d", uniform2d);
1610 ASSIGN("glUniform2dv", uniform2dv);
1611 ASSIGN("glUniform3d", uniform3d);
1612 ASSIGN("glUniform3dv", uniform3dv);
1613 ASSIGN("glUniform4d", uniform4d);
1614 ASSIGN("glUniform4dv", uniform4dv);
1615 ASSIGN("glUniformMatrix2dv", uniformMatrix2dv);
1616 ASSIGN("glUniformMatrix2x3dv", uniformMatrix2x3dv);
1617 ASSIGN("glUniformMatrix2x4dv", uniformMatrix2x4dv);
1618 ASSIGN("glUniformMatrix3dv", uniformMatrix3dv);
1619 ASSIGN("glUniformMatrix3x2dv", uniformMatrix3x2dv);
1620 ASSIGN("glUniformMatrix3x4dv", uniformMatrix3x4dv);
1621 ASSIGN("glUniformMatrix4dv", uniformMatrix4dv);
1622 ASSIGN("glUniformMatrix4x2dv", uniformMatrix4x2dv);
1623 ASSIGN("glUniformMatrix4x3dv", uniformMatrix4x3dv);
1624 ASSIGN("glUniformSubroutinesuiv", uniformSubroutinesuiv);
1625 }
1626
1627 if (version >= gl::Version(4, 1))
1628 {
1629 ASSIGN("glActiveShaderProgram", activeShaderProgram);
1630 ASSIGN("glBindProgramPipeline", bindProgramPipeline);
1631 ASSIGN("glClearDepthf", clearDepthf);
1632 ASSIGN("glCreateShaderProgramv", createShaderProgramv);
1633 ASSIGN("glDeleteProgramPipelines", deleteProgramPipelines);
1634 ASSIGN("glDepthRangeArrayv", depthRangeArrayv);
1635 ASSIGN("glDepthRangeIndexed", depthRangeIndexed);
1636 ASSIGN("glDepthRangef", depthRangef);
1637 ASSIGN("glGenProgramPipelines", genProgramPipelines);
1638 ASSIGN("glGetDoublei_v", getDoublei_v);
1639 ASSIGN("glGetFloati_v", getFloati_v);
1640 ASSIGN("glGetProgramBinary", getProgramBinary);
1641 ASSIGN("glGetProgramPipelineInfoLog", getProgramPipelineInfoLog);
1642 ASSIGN("glGetProgramPipelineiv", getProgramPipelineiv);
1643 ASSIGN("glGetShaderPrecisionFormat", getShaderPrecisionFormat);
1644 ASSIGN("glGetVertexAttribLdv", getVertexAttribLdv);
1645 ASSIGN("glIsProgramPipeline", isProgramPipeline);
1646 ASSIGN("glProgramBinary", programBinary);
1647 ASSIGN("glProgramParameteri", programParameteri);
1648 ASSIGN("glProgramUniform1d", programUniform1d);
1649 ASSIGN("glProgramUniform1dv", programUniform1dv);
1650 ASSIGN("glProgramUniform1f", programUniform1f);
1651 ASSIGN("glProgramUniform1fv", programUniform1fv);
1652 ASSIGN("glProgramUniform1i", programUniform1i);
1653 ASSIGN("glProgramUniform1iv", programUniform1iv);
1654 ASSIGN("glProgramUniform1ui", programUniform1ui);
1655 ASSIGN("glProgramUniform1uiv", programUniform1uiv);
1656 ASSIGN("glProgramUniform2d", programUniform2d);
1657 ASSIGN("glProgramUniform2dv", programUniform2dv);
1658 ASSIGN("glProgramUniform2f", programUniform2f);
1659 ASSIGN("glProgramUniform2fv", programUniform2fv);
1660 ASSIGN("glProgramUniform2i", programUniform2i);
1661 ASSIGN("glProgramUniform2iv", programUniform2iv);
1662 ASSIGN("glProgramUniform2ui", programUniform2ui);
1663 ASSIGN("glProgramUniform2uiv", programUniform2uiv);
1664 ASSIGN("glProgramUniform3d", programUniform3d);
1665 ASSIGN("glProgramUniform3dv", programUniform3dv);
1666 ASSIGN("glProgramUniform3f", programUniform3f);
1667 ASSIGN("glProgramUniform3fv", programUniform3fv);
1668 ASSIGN("glProgramUniform3i", programUniform3i);
1669 ASSIGN("glProgramUniform3iv", programUniform3iv);
1670 ASSIGN("glProgramUniform3ui", programUniform3ui);
1671 ASSIGN("glProgramUniform3uiv", programUniform3uiv);
1672 ASSIGN("glProgramUniform4d", programUniform4d);
1673 ASSIGN("glProgramUniform4dv", programUniform4dv);
1674 ASSIGN("glProgramUniform4f", programUniform4f);
1675 ASSIGN("glProgramUniform4fv", programUniform4fv);
1676 ASSIGN("glProgramUniform4i", programUniform4i);
1677 ASSIGN("glProgramUniform4iv", programUniform4iv);
1678 ASSIGN("glProgramUniform4ui", programUniform4ui);
1679 ASSIGN("glProgramUniform4uiv", programUniform4uiv);
1680 ASSIGN("glProgramUniformMatrix2dv", programUniformMatrix2dv);
1681 ASSIGN("glProgramUniformMatrix2fv", programUniformMatrix2fv);
1682 ASSIGN("glProgramUniformMatrix2x3dv", programUniformMatrix2x3dv);
1683 ASSIGN("glProgramUniformMatrix2x3fv", programUniformMatrix2x3fv);
1684 ASSIGN("glProgramUniformMatrix2x4dv", programUniformMatrix2x4dv);
1685 ASSIGN("glProgramUniformMatrix2x4fv", programUniformMatrix2x4fv);
1686 ASSIGN("glProgramUniformMatrix3dv", programUniformMatrix3dv);
1687 ASSIGN("glProgramUniformMatrix3fv", programUniformMatrix3fv);
1688 ASSIGN("glProgramUniformMatrix3x2dv", programUniformMatrix3x2dv);
1689 ASSIGN("glProgramUniformMatrix3x2fv", programUniformMatrix3x2fv);
1690 ASSIGN("glProgramUniformMatrix3x4dv", programUniformMatrix3x4dv);
1691 ASSIGN("glProgramUniformMatrix3x4fv", programUniformMatrix3x4fv);
1692 ASSIGN("glProgramUniformMatrix4dv", programUniformMatrix4dv);
1693 ASSIGN("glProgramUniformMatrix4fv", programUniformMatrix4fv);
1694 ASSIGN("glProgramUniformMatrix4x2dv", programUniformMatrix4x2dv);
1695 ASSIGN("glProgramUniformMatrix4x2fv", programUniformMatrix4x2fv);
1696 ASSIGN("glProgramUniformMatrix4x3dv", programUniformMatrix4x3dv);
1697 ASSIGN("glProgramUniformMatrix4x3fv", programUniformMatrix4x3fv);
1698 ASSIGN("glReleaseShaderCompiler", releaseShaderCompiler);
1699 ASSIGN("glScissorArrayv", scissorArrayv);
1700 ASSIGN("glScissorIndexed", scissorIndexed);
1701 ASSIGN("glScissorIndexedv", scissorIndexedv);
1702 ASSIGN("glShaderBinary", shaderBinary);
1703 ASSIGN("glUseProgramStages", useProgramStages);
1704 ASSIGN("glValidateProgramPipeline", validateProgramPipeline);
1705 ASSIGN("glVertexAttribL1d", vertexAttribL1d);
1706 ASSIGN("glVertexAttribL1dv", vertexAttribL1dv);
1707 ASSIGN("glVertexAttribL2d", vertexAttribL2d);
1708 ASSIGN("glVertexAttribL2dv", vertexAttribL2dv);
1709 ASSIGN("glVertexAttribL3d", vertexAttribL3d);
1710 ASSIGN("glVertexAttribL3dv", vertexAttribL3dv);
1711 ASSIGN("glVertexAttribL4d", vertexAttribL4d);
1712 ASSIGN("glVertexAttribL4dv", vertexAttribL4dv);
1713 ASSIGN("glVertexAttribLPointer", vertexAttribLPointer);
1714 ASSIGN("glViewportArrayv", viewportArrayv);
1715 ASSIGN("glViewportIndexedf", viewportIndexedf);
1716 ASSIGN("glViewportIndexedfv", viewportIndexedfv);
1717 }
1718
1719 if (version >= gl::Version(4, 2))
1720 {
1721 ASSIGN("glBindImageTexture", bindImageTexture);
1722 ASSIGN("glDrawArraysInstancedBaseInstance", drawArraysInstancedBaseInstance);
1723 ASSIGN("glDrawElementsInstancedBaseInstance", drawElementsInstancedBaseInstance);
1724 ASSIGN("glDrawElementsInstancedBaseVertexBaseInstance",
1725 drawElementsInstancedBaseVertexBaseInstance);
1726 ASSIGN("glDrawTransformFeedbackInstanced", drawTransformFeedbackInstanced);
1727 ASSIGN("glDrawTransformFeedbackStreamInstanced", drawTransformFeedbackStreamInstanced);
1728 ASSIGN("glGetActiveAtomicCounterBufferiv", getActiveAtomicCounterBufferiv);
1729 ASSIGN("glGetInternalformativ", getInternalformativ);
1730 ASSIGN("glMemoryBarrier", memoryBarrier);
1731 ASSIGN("glTexStorage1D", texStorage1D);
1732 ASSIGN("glTexStorage2D", texStorage2D);
1733 ASSIGN("glTexStorage3D", texStorage3D);
1734 }
1735
1736 if (version >= gl::Version(4, 3))
1737 {
1738 ASSIGN("glBindVertexBuffer", bindVertexBuffer);
1739 ASSIGN("glClearBufferData", clearBufferData);
1740 ASSIGN("glClearBufferSubData", clearBufferSubData);
1741 ASSIGN("glCopyImageSubData", copyImageSubData);
1742 ASSIGN("glDebugMessageCallback", debugMessageCallback);
1743 ASSIGN("glDebugMessageControl", debugMessageControl);
1744 ASSIGN("glDebugMessageInsert", debugMessageInsert);
1745 ASSIGN("glDispatchCompute", dispatchCompute);
1746 ASSIGN("glDispatchComputeIndirect", dispatchComputeIndirect);
1747 ASSIGN("glFramebufferParameteri", framebufferParameteri);
1748 ASSIGN("glGetDebugMessageLog", getDebugMessageLog);
1749 ASSIGN("glGetFramebufferParameteriv", getFramebufferParameteriv);
1750 ASSIGN("glGetInternalformati64v", getInternalformati64v);
1751 ASSIGN("glGetObjectLabel", getObjectLabel);
1752 ASSIGN("glGetObjectPtrLabel", getObjectPtrLabel);
1753 ASSIGN("glGetPointerv", getPointerv);
1754 ASSIGN("glGetProgramInterfaceiv", getProgramInterfaceiv);
1755 ASSIGN("glGetProgramResourceIndex", getProgramResourceIndex);
1756 ASSIGN("glGetProgramResourceLocation", getProgramResourceLocation);
1757 ASSIGN("glGetProgramResourceLocationIndex", getProgramResourceLocationIndex);
1758 ASSIGN("glGetProgramResourceName", getProgramResourceName);
1759 ASSIGN("glGetProgramResourceiv", getProgramResourceiv);
1760 ASSIGN("glInvalidateBufferData", invalidateBufferData);
1761 ASSIGN("glInvalidateBufferSubData", invalidateBufferSubData);
1762 ASSIGN("glInvalidateFramebuffer", invalidateFramebuffer);
1763 ASSIGN("glInvalidateSubFramebuffer", invalidateSubFramebuffer);
1764 ASSIGN("glInvalidateTexImage", invalidateTexImage);
1765 ASSIGN("glInvalidateTexSubImage", invalidateTexSubImage);
1766 ASSIGN("glMultiDrawArraysIndirect", multiDrawArraysIndirect);
1767 ASSIGN("glMultiDrawElementsIndirect", multiDrawElementsIndirect);
1768 ASSIGN("glObjectLabel", objectLabel);
1769 ASSIGN("glObjectPtrLabel", objectPtrLabel);
1770 ASSIGN("glPopDebugGroup", popDebugGroup);
1771 ASSIGN("glPushDebugGroup", pushDebugGroup);
1772 ASSIGN("glShaderStorageBlockBinding", shaderStorageBlockBinding);
1773 ASSIGN("glTexBufferRange", texBufferRange);
1774 ASSIGN("glTexStorage2DMultisample", texStorage2DMultisample);
1775 ASSIGN("glTexStorage3DMultisample", texStorage3DMultisample);
1776 ASSIGN("glTextureView", textureView);
1777 ASSIGN("glVertexAttribBinding", vertexAttribBinding);
1778 ASSIGN("glVertexAttribFormat", vertexAttribFormat);
1779 ASSIGN("glVertexAttribIFormat", vertexAttribIFormat);
1780 ASSIGN("glVertexAttribLFormat", vertexAttribLFormat);
1781 ASSIGN("glVertexBindingDivisor", vertexBindingDivisor);
1782 }
1783
1784 if (version >= gl::Version(4, 4))
1785 {
1786 ASSIGN("glBindBuffersBase", bindBuffersBase);
1787 ASSIGN("glBindBuffersRange", bindBuffersRange);
1788 ASSIGN("glBindImageTextures", bindImageTextures);
1789 ASSIGN("glBindSamplers", bindSamplers);
1790 ASSIGN("glBindTextures", bindTextures);
1791 ASSIGN("glBindVertexBuffers", bindVertexBuffers);
1792 ASSIGN("glBufferStorage", bufferStorage);
1793 ASSIGN("glClearTexImage", clearTexImage);
1794 ASSIGN("glClearTexSubImage", clearTexSubImage);
1795 }
1796
1797 if (version >= gl::Version(4, 5))
1798 {
1799 ASSIGN("glBindTextureUnit", bindTextureUnit);
1800 ASSIGN("glBlitNamedFramebuffer", blitNamedFramebuffer);
1801 ASSIGN("glCheckNamedFramebufferStatus", checkNamedFramebufferStatus);
1802 ASSIGN("glClearNamedBufferData", clearNamedBufferData);
1803 ASSIGN("glClearNamedBufferSubData", clearNamedBufferSubData);
1804 ASSIGN("glClearNamedFramebufferfi", clearNamedFramebufferfi);
1805 ASSIGN("glClearNamedFramebufferfv", clearNamedFramebufferfv);
1806 ASSIGN("glClearNamedFramebufferiv", clearNamedFramebufferiv);
1807 ASSIGN("glClearNamedFramebufferuiv", clearNamedFramebufferuiv);
1808 ASSIGN("glClipControl", clipControl);
1809 ASSIGN("glCompressedTextureSubImage1D", compressedTextureSubImage1D);
1810 ASSIGN("glCompressedTextureSubImage2D", compressedTextureSubImage2D);
1811 ASSIGN("glCompressedTextureSubImage3D", compressedTextureSubImage3D);
1812 ASSIGN("glCopyNamedBufferSubData", copyNamedBufferSubData);
1813 ASSIGN("glCopyTextureSubImage1D", copyTextureSubImage1D);
1814 ASSIGN("glCopyTextureSubImage2D", copyTextureSubImage2D);
1815 ASSIGN("glCopyTextureSubImage3D", copyTextureSubImage3D);
1816 ASSIGN("glCreateBuffers", createBuffers);
1817 ASSIGN("glCreateFramebuffers", createFramebuffers);
1818 ASSIGN("glCreateProgramPipelines", createProgramPipelines);
1819 ASSIGN("glCreateQueries", createQueries);
1820 ASSIGN("glCreateRenderbuffers", createRenderbuffers);
1821 ASSIGN("glCreateSamplers", createSamplers);
1822 ASSIGN("glCreateTextures", createTextures);
1823 ASSIGN("glCreateTransformFeedbacks", createTransformFeedbacks);
1824 ASSIGN("glCreateVertexArrays", createVertexArrays);
1825 ASSIGN("glDisableVertexArrayAttrib", disableVertexArrayAttrib);
1826 ASSIGN("glEnableVertexArrayAttrib", enableVertexArrayAttrib);
1827 ASSIGN("glFlushMappedNamedBufferRange", flushMappedNamedBufferRange);
1828 ASSIGN("glGenerateTextureMipmap", generateTextureMipmap);
1829 ASSIGN("glGetCompressedTextureImage", getCompressedTextureImage);
1830 ASSIGN("glGetCompressedTextureSubImage", getCompressedTextureSubImage);
1831 ASSIGN("glGetGraphicsResetStatus", getGraphicsResetStatus);
1832 ASSIGN("glGetNamedBufferParameteri64v", getNamedBufferParameteri64v);
1833 ASSIGN("glGetNamedBufferParameteriv", getNamedBufferParameteriv);
1834 ASSIGN("glGetNamedBufferPointerv", getNamedBufferPointerv);
1835 ASSIGN("glGetNamedBufferSubData", getNamedBufferSubData);
1836 ASSIGN("glGetNamedFramebufferAttachmentParameteriv",
1837 getNamedFramebufferAttachmentParameteriv);
1838 ASSIGN("glGetNamedFramebufferParameteriv", getNamedFramebufferParameteriv);
1839 ASSIGN("glGetNamedRenderbufferParameteriv", getNamedRenderbufferParameteriv);
1840 ASSIGN("glGetQueryBufferObjecti64v", getQueryBufferObjecti64v);
1841 ASSIGN("glGetQueryBufferObjectiv", getQueryBufferObjectiv);
1842 ASSIGN("glGetQueryBufferObjectui64v", getQueryBufferObjectui64v);
1843 ASSIGN("glGetQueryBufferObjectuiv", getQueryBufferObjectuiv);
1844 ASSIGN("glGetTextureImage", getTextureImage);
1845 ASSIGN("glGetTextureLevelParameterfv", getTextureLevelParameterfv);
1846 ASSIGN("glGetTextureLevelParameteriv", getTextureLevelParameteriv);
1847 ASSIGN("glGetTextureParameterIiv", getTextureParameterIiv);
1848 ASSIGN("glGetTextureParameterIuiv", getTextureParameterIuiv);
1849 ASSIGN("glGetTextureParameterfv", getTextureParameterfv);
1850 ASSIGN("glGetTextureParameteriv", getTextureParameteriv);
1851 ASSIGN("glGetTextureSubImage", getTextureSubImage);
1852 ASSIGN("glGetTransformFeedbacki64_v", getTransformFeedbacki64_v);
1853 ASSIGN("glGetTransformFeedbacki_v", getTransformFeedbacki_v);
1854 ASSIGN("glGetTransformFeedbackiv", getTransformFeedbackiv);
1855 ASSIGN("glGetVertexArrayIndexed64iv", getVertexArrayIndexed64iv);
1856 ASSIGN("glGetVertexArrayIndexediv", getVertexArrayIndexediv);
1857 ASSIGN("glGetVertexArrayiv", getVertexArrayiv);
1858 ASSIGN("glGetnCompressedTexImage", getnCompressedTexImage);
1859 ASSIGN("glGetnTexImage", getnTexImage);
1860 ASSIGN("glGetnUniformdv", getnUniformdv);
1861 ASSIGN("glGetnUniformfv", getnUniformfv);
1862 ASSIGN("glGetnUniformiv", getnUniformiv);
1863 ASSIGN("glGetnUniformuiv", getnUniformuiv);
1864 ASSIGN("glInvalidateNamedFramebufferData", invalidateNamedFramebufferData);
1865 ASSIGN("glInvalidateNamedFramebufferSubData", invalidateNamedFramebufferSubData);
1866 ASSIGN("glMapNamedBuffer", mapNamedBuffer);
1867 ASSIGN("glMapNamedBufferRange", mapNamedBufferRange);
1868 ASSIGN("glMemoryBarrierByRegion", memoryBarrierByRegion);
1869 ASSIGN("glNamedBufferData", namedBufferData);
1870 ASSIGN("glNamedBufferStorage", namedBufferStorage);
1871 ASSIGN("glNamedBufferSubData", namedBufferSubData);
1872 ASSIGN("glNamedFramebufferDrawBuffer", namedFramebufferDrawBuffer);
1873 ASSIGN("glNamedFramebufferDrawBuffers", namedFramebufferDrawBuffers);
1874 ASSIGN("glNamedFramebufferParameteri", namedFramebufferParameteri);
1875 ASSIGN("glNamedFramebufferReadBuffer", namedFramebufferReadBuffer);
1876 ASSIGN("glNamedFramebufferRenderbuffer", namedFramebufferRenderbuffer);
1877 ASSIGN("glNamedFramebufferTexture", namedFramebufferTexture);
1878 ASSIGN("glNamedFramebufferTextureLayer", namedFramebufferTextureLayer);
1879 ASSIGN("glNamedRenderbufferStorage", namedRenderbufferStorage);
1880 ASSIGN("glNamedRenderbufferStorageMultisample", namedRenderbufferStorageMultisample);
1881 ASSIGN("glReadnPixels", readnPixels);
1882 ASSIGN("glTextureBarrier", textureBarrier);
1883 ASSIGN("glTextureBuffer", textureBuffer);
1884 ASSIGN("glTextureBufferRange", textureBufferRange);
1885 ASSIGN("glTextureParameterIiv", textureParameterIiv);
1886 ASSIGN("glTextureParameterIuiv", textureParameterIuiv);
1887 ASSIGN("glTextureParameterf", textureParameterf);
1888 ASSIGN("glTextureParameterfv", textureParameterfv);
1889 ASSIGN("glTextureParameteri", textureParameteri);
1890 ASSIGN("glTextureParameteriv", textureParameteriv);
1891 ASSIGN("glTextureStorage1D", textureStorage1D);
1892 ASSIGN("glTextureStorage2D", textureStorage2D);
1893 ASSIGN("glTextureStorage2DMultisample", textureStorage2DMultisample);
1894 ASSIGN("glTextureStorage3D", textureStorage3D);
1895 ASSIGN("glTextureStorage3DMultisample", textureStorage3DMultisample);
1896 ASSIGN("glTextureSubImage1D", textureSubImage1D);
1897 ASSIGN("glTextureSubImage2D", textureSubImage2D);
1898 ASSIGN("glTextureSubImage3D", textureSubImage3D);
1899 ASSIGN("glTransformFeedbackBufferBase", transformFeedbackBufferBase);
1900 ASSIGN("glTransformFeedbackBufferRange", transformFeedbackBufferRange);
1901 ASSIGN("glUnmapNamedBuffer", unmapNamedBuffer);
1902 ASSIGN("glVertexArrayAttribBinding", vertexArrayAttribBinding);
1903 ASSIGN("glVertexArrayAttribFormat", vertexArrayAttribFormat);
1904 ASSIGN("glVertexArrayAttribIFormat", vertexArrayAttribIFormat);
1905 ASSIGN("glVertexArrayAttribLFormat", vertexArrayAttribLFormat);
1906 ASSIGN("glVertexArrayBindingDivisor", vertexArrayBindingDivisor);
1907 ASSIGN("glVertexArrayElementBuffer", vertexArrayElementBuffer);
1908 ASSIGN("glVertexArrayVertexBuffer", vertexArrayVertexBuffer);
1909 ASSIGN("glVertexArrayVertexBuffers", vertexArrayVertexBuffers);
1910 }
1911 #endif // defined(ANGLE_ENABLE_OPENGL_DESKTOP)
1912 }
1913
initProcsGLES(const gl::Version & version,const std::set<std::string> & extensions)1914 void DispatchTableGL::initProcsGLES(const gl::Version &version,
1915 const std::set<std::string> &extensions)
1916 {
1917 if (extensions.count("GL_EXT_base_instance") != 0)
1918 {
1919 ASSIGN("glDrawArraysInstancedBaseInstanceEXT", drawArraysInstancedBaseInstance);
1920 ASSIGN("glDrawElementsInstancedBaseInstanceEXT", drawElementsInstancedBaseInstance);
1921 ASSIGN("glDrawElementsInstancedBaseVertexBaseInstanceEXT",
1922 drawElementsInstancedBaseVertexBaseInstance);
1923 }
1924
1925 if (extensions.count("GL_EXT_blend_func_extended") != 0)
1926 {
1927 ASSIGN("glBindFragDataLocationEXT", bindFragDataLocation);
1928 ASSIGN("glBindFragDataLocationIndexedEXT", bindFragDataLocationIndexed);
1929 ASSIGN("glGetFragDataIndexEXT", getFragDataIndex);
1930 ASSIGN("glGetProgramResourceLocationIndexEXT", getProgramResourceLocationIndex);
1931 }
1932
1933 if (extensions.count("GL_EXT_buffer_storage") != 0)
1934 {
1935 ASSIGN("glBufferStorageEXT", bufferStorage);
1936 }
1937
1938 if (extensions.count("GL_EXT_clear_texture") != 0)
1939 {
1940 ASSIGN("glClearTexImageEXT", clearTexImage);
1941 ASSIGN("glClearTexSubImageEXT", clearTexSubImage);
1942 }
1943
1944 if (extensions.count("GL_EXT_clip_control") != 0)
1945 {
1946 ASSIGN("glClipControlEXT", clipControl);
1947 }
1948
1949 if (extensions.count("GL_EXT_copy_image") != 0)
1950 {
1951 ASSIGN("glCopyImageSubDataEXT", copyImageSubData);
1952 }
1953
1954 if (extensions.count("GL_EXT_discard_framebuffer") != 0)
1955 {
1956 ASSIGN("glDiscardFramebufferEXT", discardFramebufferEXT);
1957 }
1958
1959 if (extensions.count("GL_EXT_disjoint_timer_query") != 0)
1960 {
1961 ASSIGN("glBeginQueryEXT", beginQuery);
1962 ASSIGN("glDeleteQueriesEXT", deleteQueries);
1963 ASSIGN("glEndQueryEXT", endQuery);
1964 ASSIGN("glGenQueriesEXT", genQueries);
1965 ASSIGN("glGetInteger64vEXT", getInteger64v);
1966 ASSIGN("glGetQueryObjecti64vEXT", getQueryObjecti64v);
1967 ASSIGN("glGetQueryObjectivEXT", getQueryObjectiv);
1968 ASSIGN("glGetQueryObjectui64vEXT", getQueryObjectui64v);
1969 ASSIGN("glGetQueryObjectuivEXT", getQueryObjectuiv);
1970 ASSIGN("glGetQueryivEXT", getQueryiv);
1971 ASSIGN("glIsQueryEXT", isQuery);
1972 ASSIGN("glQueryCounterEXT", queryCounter);
1973 }
1974
1975 if (extensions.count("GL_EXT_draw_buffers") != 0)
1976 {
1977 ASSIGN("glDrawBuffersEXT", drawBuffers);
1978 }
1979
1980 if (extensions.count("GL_EXT_draw_buffers_indexed") != 0)
1981 {
1982 ASSIGN("glBlendEquationSeparateiEXT", blendEquationSeparatei);
1983 ASSIGN("glBlendEquationiEXT", blendEquationi);
1984 ASSIGN("glBlendFuncSeparateiEXT", blendFuncSeparatei);
1985 ASSIGN("glBlendFunciEXT", blendFunci);
1986 ASSIGN("glColorMaskiEXT", colorMaski);
1987 ASSIGN("glDisableiEXT", disablei);
1988 ASSIGN("glEnableiEXT", enablei);
1989 ASSIGN("glIsEnablediEXT", isEnabledi);
1990 }
1991
1992 if (extensions.count("GL_EXT_draw_elements_base_vertex") != 0)
1993 {
1994 ASSIGN("glDrawElementsBaseVertexEXT", drawElementsBaseVertex);
1995 ASSIGN("glDrawElementsInstancedBaseVertexEXT", drawElementsInstancedBaseVertex);
1996 ASSIGN("glDrawRangeElementsBaseVertexEXT", drawRangeElementsBaseVertex);
1997 ASSIGN("glMultiDrawElementsBaseVertexEXT", multiDrawElementsBaseVertex);
1998 }
1999
2000 if (extensions.count("GL_EXT_draw_transform_feedback") != 0)
2001 {
2002 ASSIGN("glDrawTransformFeedbackEXT", drawTransformFeedback);
2003 ASSIGN("glDrawTransformFeedbackInstancedEXT", drawTransformFeedbackInstanced);
2004 }
2005
2006 if (extensions.count("GL_EXT_geometry_shader") != 0)
2007 {
2008 ASSIGN("glFramebufferTextureEXT", framebufferTexture);
2009 }
2010
2011 if (extensions.count("GL_EXT_instanced_arrays") != 0)
2012 {
2013 ASSIGN("glVertexAttribDivisorEXT", vertexAttribDivisor);
2014 }
2015
2016 if (extensions.count("GL_EXT_map_buffer_range") != 0)
2017 {
2018 ASSIGN("glFlushMappedBufferRangeEXT", flushMappedBufferRange);
2019 ASSIGN("glMapBufferRangeEXT", mapBufferRange);
2020 }
2021
2022 if (extensions.count("GL_EXT_multi_draw_indirect") != 0)
2023 {
2024 ASSIGN("glMultiDrawArraysIndirectEXT", multiDrawArraysIndirect);
2025 ASSIGN("glMultiDrawElementsIndirectEXT", multiDrawElementsIndirect);
2026 }
2027
2028 if (extensions.count("GL_EXT_multisampled_render_to_texture") != 0)
2029 {
2030 ASSIGN("glFramebufferTexture2DMultisampleEXT", framebufferTexture2DMultisampleEXT);
2031 ASSIGN("glRenderbufferStorageMultisampleEXT", renderbufferStorageMultisample);
2032 ASSIGN("glRenderbufferStorageMultisampleEXT", renderbufferStorageMultisampleEXT);
2033 }
2034
2035 if (extensions.count("GL_EXT_multiview_draw_buffers") != 0)
2036 {
2037 ASSIGN("glGetIntegeri_vEXT", getIntegeri_v);
2038 }
2039
2040 if (extensions.count("GL_EXT_occlusion_query_boolean") != 0)
2041 {
2042 ASSIGN("glBeginQueryEXT", beginQuery);
2043 ASSIGN("glDeleteQueriesEXT", deleteQueries);
2044 ASSIGN("glEndQueryEXT", endQuery);
2045 ASSIGN("glGenQueriesEXT", genQueries);
2046 ASSIGN("glGetQueryObjectuivEXT", getQueryObjectuiv);
2047 ASSIGN("glGetQueryivEXT", getQueryiv);
2048 ASSIGN("glIsQueryEXT", isQuery);
2049 }
2050
2051 if (extensions.count("GL_EXT_primitive_bounding_box") != 0)
2052 {
2053 ASSIGN("glPrimitiveBoundingBoxEXT", primitiveBoundingBox);
2054 }
2055
2056 if (extensions.count("GL_EXT_robustness") != 0)
2057 {
2058 ASSIGN("glGetGraphicsResetStatusEXT", getGraphicsResetStatus);
2059 ASSIGN("glGetnUniformfvEXT", getnUniformfv);
2060 ASSIGN("glGetnUniformivEXT", getnUniformiv);
2061 ASSIGN("glReadnPixelsEXT", readnPixels);
2062 }
2063
2064 if (extensions.count("GL_EXT_tessellation_shader") != 0)
2065 {
2066 ASSIGN("glPatchParameteriEXT", patchParameteri);
2067 }
2068
2069 if (extensions.count("GL_EXT_texture_border_clamp") != 0)
2070 {
2071 ASSIGN("glGetSamplerParameterIivEXT", getSamplerParameterIiv);
2072 ASSIGN("glGetSamplerParameterIuivEXT", getSamplerParameterIuiv);
2073 ASSIGN("glGetTexParameterIivEXT", getTexParameterIiv);
2074 ASSIGN("glGetTexParameterIuivEXT", getTexParameterIuiv);
2075 ASSIGN("glSamplerParameterIivEXT", samplerParameterIiv);
2076 ASSIGN("glSamplerParameterIuivEXT", samplerParameterIuiv);
2077 ASSIGN("glTexParameterIivEXT", texParameterIiv);
2078 ASSIGN("glTexParameterIuivEXT", texParameterIuiv);
2079 }
2080
2081 if (extensions.count("GL_EXT_texture_buffer") != 0)
2082 {
2083 ASSIGN("glTexBufferEXT", texBuffer);
2084 ASSIGN("glTexBufferEXT", texBufferEXT);
2085 ASSIGN("glTexBufferRangeEXT", texBufferRange);
2086 ASSIGN("glTexBufferRangeEXT", texBufferRangeEXT);
2087 }
2088
2089 if (extensions.count("GL_EXT_texture_storage") != 0)
2090 {
2091 ASSIGN("glTexStorage1DEXT", texStorage1D);
2092 ASSIGN("glTexStorage2DEXT", texStorage2D);
2093 ASSIGN("glTexStorage3DEXT", texStorage3D);
2094 ASSIGN("glTextureStorage1DEXT", textureStorage1D);
2095 ASSIGN("glTextureStorage2DEXT", textureStorage2D);
2096 ASSIGN("glTextureStorage3DEXT", textureStorage3D);
2097 }
2098
2099 if (extensions.count("GL_EXT_texture_view") != 0)
2100 {
2101 ASSIGN("glTextureViewEXT", textureView);
2102 }
2103
2104 if (extensions.count("GL_IMG_multisampled_render_to_texture") != 0)
2105 {
2106 ASSIGN("glFramebufferTexture2DMultisampleIMG", framebufferTexture2DMultisampleIMG);
2107 ASSIGN("glRenderbufferStorageMultisampleIMG", renderbufferStorageMultisampleIMG);
2108 }
2109
2110 if (extensions.count("GL_KHR_debug") != 0)
2111 {
2112 ASSIGN("glDebugMessageCallbackKHR", debugMessageCallback);
2113 ASSIGN("glDebugMessageControlKHR", debugMessageControl);
2114 ASSIGN("glDebugMessageInsertKHR", debugMessageInsert);
2115 ASSIGN("glGetDebugMessageLogKHR", getDebugMessageLog);
2116 ASSIGN("glGetObjectLabelKHR", getObjectLabel);
2117 ASSIGN("glGetObjectPtrLabelKHR", getObjectPtrLabel);
2118 ASSIGN("glGetPointervKHR", getPointerv);
2119 ASSIGN("glObjectLabelKHR", objectLabel);
2120 ASSIGN("glObjectPtrLabelKHR", objectPtrLabel);
2121 ASSIGN("glPopDebugGroupKHR", popDebugGroup);
2122 ASSIGN("glPushDebugGroupKHR", pushDebugGroup);
2123 }
2124
2125 if (extensions.count("GL_KHR_robustness") != 0)
2126 {
2127 ASSIGN("glGetGraphicsResetStatusKHR", getGraphicsResetStatus);
2128 ASSIGN("glGetnUniformfvKHR", getnUniformfv);
2129 ASSIGN("glGetnUniformivKHR", getnUniformiv);
2130 ASSIGN("glGetnUniformuivKHR", getnUniformuiv);
2131 ASSIGN("glReadnPixelsKHR", readnPixels);
2132 }
2133
2134 if (extensions.count("GL_NV_framebuffer_blit") != 0)
2135 {
2136 ASSIGN("glBlitFramebufferNV", blitFramebufferNV);
2137 }
2138
2139 if (extensions.count("GL_OES_EGL_image") != 0)
2140 {
2141 ASSIGN("glEGLImageTargetRenderbufferStorageOES", eGLImageTargetRenderbufferStorageOES);
2142 ASSIGN("glEGLImageTargetTexture2DOES", eGLImageTargetTexture2DOES);
2143 }
2144
2145 if (extensions.count("GL_OES_copy_image") != 0)
2146 {
2147 ASSIGN("glCopyImageSubDataOES", copyImageSubData);
2148 }
2149
2150 if (extensions.count("GL_OES_draw_buffers_indexed") != 0)
2151 {
2152 ASSIGN("glBlendEquationSeparateiOES", blendEquationSeparatei);
2153 ASSIGN("glBlendEquationiOES", blendEquationi);
2154 ASSIGN("glBlendFuncSeparateiOES", blendFuncSeparatei);
2155 ASSIGN("glBlendFunciOES", blendFunci);
2156 ASSIGN("glColorMaskiOES", colorMaski);
2157 ASSIGN("glDisableiOES", disablei);
2158 ASSIGN("glEnableiOES", enablei);
2159 ASSIGN("glIsEnablediOES", isEnabledi);
2160 }
2161
2162 if (extensions.count("GL_OES_draw_elements_base_vertex") != 0)
2163 {
2164 ASSIGN("glDrawElementsBaseVertexOES", drawElementsBaseVertex);
2165 ASSIGN("glDrawElementsInstancedBaseVertexOES", drawElementsInstancedBaseVertex);
2166 ASSIGN("glDrawRangeElementsBaseVertexOES", drawRangeElementsBaseVertex);
2167 ASSIGN("glMultiDrawElementsBaseVertexEXT", multiDrawElementsBaseVertex);
2168 }
2169
2170 if (extensions.count("GL_OES_geometry_shader") != 0)
2171 {
2172 ASSIGN("glFramebufferTextureOES", framebufferTexture);
2173 }
2174
2175 if (extensions.count("GL_OES_get_program_binary") != 0)
2176 {
2177 ASSIGN("glGetProgramBinaryOES", getProgramBinary);
2178 ASSIGN("glProgramBinaryOES", programBinary);
2179 }
2180
2181 if (extensions.count("GL_OES_mapbuffer") != 0)
2182 {
2183 ASSIGN("glGetBufferPointervOES", getBufferPointerv);
2184 ASSIGN("glMapBufferOES", mapBuffer);
2185 ASSIGN("glUnmapBufferOES", unmapBuffer);
2186 }
2187
2188 if (extensions.count("GL_OES_primitive_bounding_box") != 0)
2189 {
2190 ASSIGN("glPrimitiveBoundingBoxOES", primitiveBoundingBox);
2191 }
2192
2193 if (extensions.count("GL_OES_sample_shading") != 0)
2194 {
2195 ASSIGN("glMinSampleShadingOES", minSampleShading);
2196 }
2197
2198 if (extensions.count("GL_OES_tessellation_shader") != 0)
2199 {
2200 ASSIGN("glPatchParameteriOES", patchParameteri);
2201 }
2202
2203 if (extensions.count("GL_OES_texture_3D") != 0)
2204 {
2205 ASSIGN("glCompressedTexImage3DOES", compressedTexImage3D);
2206 ASSIGN("glCompressedTexSubImage3DOES", compressedTexSubImage3D);
2207 ASSIGN("glCopyTexSubImage3DOES", copyTexSubImage3D);
2208 ASSIGN("glFramebufferTexture3DOES", framebufferTexture3D);
2209 ASSIGN("glTexImage3DOES", texImage3D);
2210 ASSIGN("glTexSubImage3DOES", texSubImage3D);
2211 }
2212
2213 if (extensions.count("GL_OES_texture_border_clamp") != 0)
2214 {
2215 ASSIGN("glGetSamplerParameterIivOES", getSamplerParameterIiv);
2216 ASSIGN("glGetSamplerParameterIuivOES", getSamplerParameterIuiv);
2217 ASSIGN("glGetTexParameterIivOES", getTexParameterIiv);
2218 ASSIGN("glGetTexParameterIuivOES", getTexParameterIuiv);
2219 ASSIGN("glSamplerParameterIivOES", samplerParameterIiv);
2220 ASSIGN("glSamplerParameterIuivOES", samplerParameterIuiv);
2221 ASSIGN("glTexParameterIivOES", texParameterIiv);
2222 ASSIGN("glTexParameterIuivOES", texParameterIuiv);
2223 }
2224
2225 if (extensions.count("GL_OES_texture_buffer") != 0)
2226 {
2227 ASSIGN("glTexBufferOES", texBuffer);
2228 ASSIGN("glTexBufferOES", texBufferOES);
2229 ASSIGN("glTexBufferRangeOES", texBufferRange);
2230 ASSIGN("glTexBufferRangeOES", texBufferRangeOES);
2231 }
2232
2233 if (extensions.count("GL_OES_texture_storage_multisample_2d_array") != 0)
2234 {
2235 ASSIGN("glTexStorage3DMultisampleOES", texStorage3DMultisample);
2236 }
2237
2238 if (extensions.count("GL_OES_texture_view") != 0)
2239 {
2240 ASSIGN("glTextureViewOES", textureView);
2241 }
2242
2243 if (extensions.count("GL_OES_vertex_array_object") != 0)
2244 {
2245 ASSIGN("glBindVertexArrayOES", bindVertexArray);
2246 ASSIGN("glDeleteVertexArraysOES", deleteVertexArrays);
2247 ASSIGN("glGenVertexArraysOES", genVertexArrays);
2248 ASSIGN("glIsVertexArrayOES", isVertexArray);
2249 }
2250
2251 if (extensions.count("GL_OES_viewport_array") != 0)
2252 {
2253 ASSIGN("glDisableiOES", disablei);
2254 ASSIGN("glEnableiOES", enablei);
2255 ASSIGN("glGetFloati_vOES", getFloati_v);
2256 ASSIGN("glIsEnablediOES", isEnabledi);
2257 ASSIGN("glScissorArrayvOES", scissorArrayv);
2258 ASSIGN("glScissorIndexedOES", scissorIndexed);
2259 ASSIGN("glScissorIndexedvOES", scissorIndexedv);
2260 ASSIGN("glViewportArrayvOES", viewportArrayv);
2261 ASSIGN("glViewportIndexedfOES", viewportIndexedf);
2262 ASSIGN("glViewportIndexedfvOES", viewportIndexedfv);
2263 }
2264
2265 if (version >= gl::Version(2, 0))
2266 {
2267 ASSIGN("glActiveTexture", activeTexture);
2268 ASSIGN("glAttachShader", attachShader);
2269 ASSIGN("glBindAttribLocation", bindAttribLocation);
2270 ASSIGN("glBindBuffer", bindBuffer);
2271 ASSIGN("glBindFramebuffer", bindFramebuffer);
2272 ASSIGN("glBindRenderbuffer", bindRenderbuffer);
2273 ASSIGN("glBindTexture", bindTexture);
2274 ASSIGN("glBlendColor", blendColor);
2275 ASSIGN("glBlendEquation", blendEquation);
2276 ASSIGN("glBlendEquationSeparate", blendEquationSeparate);
2277 ASSIGN("glBlendFunc", blendFunc);
2278 ASSIGN("glBlendFuncSeparate", blendFuncSeparate);
2279 ASSIGN("glBufferData", bufferData);
2280 ASSIGN("glBufferSubData", bufferSubData);
2281 ASSIGN("glCheckFramebufferStatus", checkFramebufferStatus);
2282 ASSIGN("glClear", clear);
2283 ASSIGN("glClearColor", clearColor);
2284 ASSIGN("glClearDepthf", clearDepthf);
2285 ASSIGN("glClearStencil", clearStencil);
2286 ASSIGN("glColorMask", colorMask);
2287 ASSIGN("glCompileShader", compileShader);
2288 ASSIGN("glCompressedTexImage2D", compressedTexImage2D);
2289 ASSIGN("glCompressedTexSubImage2D", compressedTexSubImage2D);
2290 ASSIGN("glCopyTexImage2D", copyTexImage2D);
2291 ASSIGN("glCopyTexSubImage2D", copyTexSubImage2D);
2292 ASSIGN("glCreateProgram", createProgram);
2293 ASSIGN("glCreateShader", createShader);
2294 ASSIGN("glCullFace", cullFace);
2295 ASSIGN("glDeleteBuffers", deleteBuffers);
2296 ASSIGN("glDeleteFramebuffers", deleteFramebuffers);
2297 ASSIGN("glDeleteProgram", deleteProgram);
2298 ASSIGN("glDeleteRenderbuffers", deleteRenderbuffers);
2299 ASSIGN("glDeleteShader", deleteShader);
2300 ASSIGN("glDeleteTextures", deleteTextures);
2301 ASSIGN("glDepthFunc", depthFunc);
2302 ASSIGN("glDepthMask", depthMask);
2303 ASSIGN("glDepthRangef", depthRangef);
2304 ASSIGN("glDetachShader", detachShader);
2305 ASSIGN("glDisable", disable);
2306 ASSIGN("glDisableVertexAttribArray", disableVertexAttribArray);
2307 ASSIGN("glDrawArrays", drawArrays);
2308 ASSIGN("glDrawElements", drawElements);
2309 ASSIGN("glEnable", enable);
2310 ASSIGN("glEnableVertexAttribArray", enableVertexAttribArray);
2311 ASSIGN("glFinish", finish);
2312 ASSIGN("glFlush", flush);
2313 ASSIGN("glFramebufferRenderbuffer", framebufferRenderbuffer);
2314 ASSIGN("glFramebufferTexture2D", framebufferTexture2D);
2315 ASSIGN("glFrontFace", frontFace);
2316 ASSIGN("glGenBuffers", genBuffers);
2317 ASSIGN("glGenFramebuffers", genFramebuffers);
2318 ASSIGN("glGenRenderbuffers", genRenderbuffers);
2319 ASSIGN("glGenTextures", genTextures);
2320 ASSIGN("glGenerateMipmap", generateMipmap);
2321 ASSIGN("glGetActiveAttrib", getActiveAttrib);
2322 ASSIGN("glGetActiveUniform", getActiveUniform);
2323 ASSIGN("glGetAttachedShaders", getAttachedShaders);
2324 ASSIGN("glGetAttribLocation", getAttribLocation);
2325 ASSIGN("glGetBooleanv", getBooleanv);
2326 ASSIGN("glGetBufferParameteriv", getBufferParameteriv);
2327 ASSIGN("glGetError", getError);
2328 ASSIGN("glGetFloatv", getFloatv);
2329 ASSIGN("glGetFramebufferAttachmentParameteriv", getFramebufferAttachmentParameteriv);
2330 ASSIGN("glGetIntegerv", getIntegerv);
2331 ASSIGN("glGetProgramInfoLog", getProgramInfoLog);
2332 ASSIGN("glGetProgramiv", getProgramiv);
2333 ASSIGN("glGetRenderbufferParameteriv", getRenderbufferParameteriv);
2334 ASSIGN("glGetShaderInfoLog", getShaderInfoLog);
2335 ASSIGN("glGetShaderPrecisionFormat", getShaderPrecisionFormat);
2336 ASSIGN("glGetShaderSource", getShaderSource);
2337 ASSIGN("glGetShaderiv", getShaderiv);
2338 ASSIGN("glGetString", getString);
2339 ASSIGN("glGetTexParameterfv", getTexParameterfv);
2340 ASSIGN("glGetTexParameteriv", getTexParameteriv);
2341 ASSIGN("glGetUniformLocation", getUniformLocation);
2342 ASSIGN("glGetUniformfv", getUniformfv);
2343 ASSIGN("glGetUniformiv", getUniformiv);
2344 ASSIGN("glGetVertexAttribPointerv", getVertexAttribPointerv);
2345 ASSIGN("glGetVertexAttribfv", getVertexAttribfv);
2346 ASSIGN("glGetVertexAttribiv", getVertexAttribiv);
2347 ASSIGN("glHint", hint);
2348 ASSIGN("glIsBuffer", isBuffer);
2349 ASSIGN("glIsEnabled", isEnabled);
2350 ASSIGN("glIsFramebuffer", isFramebuffer);
2351 ASSIGN("glIsProgram", isProgram);
2352 ASSIGN("glIsRenderbuffer", isRenderbuffer);
2353 ASSIGN("glIsShader", isShader);
2354 ASSIGN("glIsTexture", isTexture);
2355 ASSIGN("glLineWidth", lineWidth);
2356 ASSIGN("glLinkProgram", linkProgram);
2357 ASSIGN("glPixelStorei", pixelStorei);
2358 ASSIGN("glPolygonOffset", polygonOffset);
2359 ASSIGN("glReadPixels", readPixels);
2360 ASSIGN("glReleaseShaderCompiler", releaseShaderCompiler);
2361 ASSIGN("glRenderbufferStorage", renderbufferStorage);
2362 ASSIGN("glSampleCoverage", sampleCoverage);
2363 ASSIGN("glScissor", scissor);
2364 ASSIGN("glShaderBinary", shaderBinary);
2365 ASSIGN("glShaderSource", shaderSource);
2366 ASSIGN("glStencilFunc", stencilFunc);
2367 ASSIGN("glStencilFuncSeparate", stencilFuncSeparate);
2368 ASSIGN("glStencilMask", stencilMask);
2369 ASSIGN("glStencilMaskSeparate", stencilMaskSeparate);
2370 ASSIGN("glStencilOp", stencilOp);
2371 ASSIGN("glStencilOpSeparate", stencilOpSeparate);
2372 ASSIGN("glTexImage2D", texImage2D);
2373 ASSIGN("glTexParameterf", texParameterf);
2374 ASSIGN("glTexParameterfv", texParameterfv);
2375 ASSIGN("glTexParameteri", texParameteri);
2376 ASSIGN("glTexParameteriv", texParameteriv);
2377 ASSIGN("glTexSubImage2D", texSubImage2D);
2378 ASSIGN("glUniform1f", uniform1f);
2379 ASSIGN("glUniform1fv", uniform1fv);
2380 ASSIGN("glUniform1i", uniform1i);
2381 ASSIGN("glUniform1iv", uniform1iv);
2382 ASSIGN("glUniform2f", uniform2f);
2383 ASSIGN("glUniform2fv", uniform2fv);
2384 ASSIGN("glUniform2i", uniform2i);
2385 ASSIGN("glUniform2iv", uniform2iv);
2386 ASSIGN("glUniform3f", uniform3f);
2387 ASSIGN("glUniform3fv", uniform3fv);
2388 ASSIGN("glUniform3i", uniform3i);
2389 ASSIGN("glUniform3iv", uniform3iv);
2390 ASSIGN("glUniform4f", uniform4f);
2391 ASSIGN("glUniform4fv", uniform4fv);
2392 ASSIGN("glUniform4i", uniform4i);
2393 ASSIGN("glUniform4iv", uniform4iv);
2394 ASSIGN("glUniformMatrix2fv", uniformMatrix2fv);
2395 ASSIGN("glUniformMatrix3fv", uniformMatrix3fv);
2396 ASSIGN("glUniformMatrix4fv", uniformMatrix4fv);
2397 ASSIGN("glUseProgram", useProgram);
2398 ASSIGN("glValidateProgram", validateProgram);
2399 ASSIGN("glVertexAttrib1f", vertexAttrib1f);
2400 ASSIGN("glVertexAttrib1fv", vertexAttrib1fv);
2401 ASSIGN("glVertexAttrib2f", vertexAttrib2f);
2402 ASSIGN("glVertexAttrib2fv", vertexAttrib2fv);
2403 ASSIGN("glVertexAttrib3f", vertexAttrib3f);
2404 ASSIGN("glVertexAttrib3fv", vertexAttrib3fv);
2405 ASSIGN("glVertexAttrib4f", vertexAttrib4f);
2406 ASSIGN("glVertexAttrib4fv", vertexAttrib4fv);
2407 ASSIGN("glVertexAttribPointer", vertexAttribPointer);
2408 ASSIGN("glViewport", viewport);
2409 }
2410
2411 if (version >= gl::Version(3, 0))
2412 {
2413 ASSIGN("glBeginQuery", beginQuery);
2414 ASSIGN("glBeginTransformFeedback", beginTransformFeedback);
2415 ASSIGN("glBindBufferBase", bindBufferBase);
2416 ASSIGN("glBindBufferRange", bindBufferRange);
2417 ASSIGN("glBindSampler", bindSampler);
2418 ASSIGN("glBindTransformFeedback", bindTransformFeedback);
2419 ASSIGN("glBindVertexArray", bindVertexArray);
2420 ASSIGN("glBlitFramebuffer", blitFramebuffer);
2421 ASSIGN("glClearBufferfi", clearBufferfi);
2422 ASSIGN("glClearBufferfv", clearBufferfv);
2423 ASSIGN("glClearBufferiv", clearBufferiv);
2424 ASSIGN("glClearBufferuiv", clearBufferuiv);
2425 ASSIGN("glClientWaitSync", clientWaitSync);
2426 ASSIGN("glCompressedTexImage3D", compressedTexImage3D);
2427 ASSIGN("glCompressedTexSubImage3D", compressedTexSubImage3D);
2428 ASSIGN("glCopyBufferSubData", copyBufferSubData);
2429 ASSIGN("glCopyTexSubImage3D", copyTexSubImage3D);
2430 ASSIGN("glDeleteQueries", deleteQueries);
2431 ASSIGN("glDeleteSamplers", deleteSamplers);
2432 ASSIGN("glDeleteSync", deleteSync);
2433 ASSIGN("glDeleteTransformFeedbacks", deleteTransformFeedbacks);
2434 ASSIGN("glDeleteVertexArrays", deleteVertexArrays);
2435 ASSIGN("glDrawArraysInstanced", drawArraysInstanced);
2436 ASSIGN("glDrawBuffers", drawBuffers);
2437 ASSIGN("glDrawElementsInstanced", drawElementsInstanced);
2438 ASSIGN("glDrawRangeElements", drawRangeElements);
2439 ASSIGN("glEndQuery", endQuery);
2440 ASSIGN("glEndTransformFeedback", endTransformFeedback);
2441 ASSIGN("glFenceSync", fenceSync);
2442 ASSIGN("glFlushMappedBufferRange", flushMappedBufferRange);
2443 ASSIGN("glFramebufferTextureLayer", framebufferTextureLayer);
2444 ASSIGN("glGenQueries", genQueries);
2445 ASSIGN("glGenSamplers", genSamplers);
2446 ASSIGN("glGenTransformFeedbacks", genTransformFeedbacks);
2447 ASSIGN("glGenVertexArrays", genVertexArrays);
2448 ASSIGN("glGetActiveUniformBlockName", getActiveUniformBlockName);
2449 ASSIGN("glGetActiveUniformBlockiv", getActiveUniformBlockiv);
2450 ASSIGN("glGetActiveUniformsiv", getActiveUniformsiv);
2451 ASSIGN("glGetBufferParameteri64v", getBufferParameteri64v);
2452 ASSIGN("glGetBufferPointerv", getBufferPointerv);
2453 ASSIGN("glGetFragDataLocation", getFragDataLocation);
2454 ASSIGN("glGetInteger64i_v", getInteger64i_v);
2455 ASSIGN("glGetInteger64v", getInteger64v);
2456 ASSIGN("glGetIntegeri_v", getIntegeri_v);
2457 ASSIGN("glGetInternalformativ", getInternalformativ);
2458 ASSIGN("glGetProgramBinary", getProgramBinary);
2459 ASSIGN("glGetQueryObjectuiv", getQueryObjectuiv);
2460 ASSIGN("glGetQueryiv", getQueryiv);
2461 ASSIGN("glGetSamplerParameterfv", getSamplerParameterfv);
2462 ASSIGN("glGetSamplerParameteriv", getSamplerParameteriv);
2463 ASSIGN("glGetStringi", getStringi);
2464 ASSIGN("glGetSynciv", getSynciv);
2465 ASSIGN("glGetTransformFeedbackVarying", getTransformFeedbackVarying);
2466 ASSIGN("glGetUniformBlockIndex", getUniformBlockIndex);
2467 ASSIGN("glGetUniformIndices", getUniformIndices);
2468 ASSIGN("glGetUniformuiv", getUniformuiv);
2469 ASSIGN("glGetVertexAttribIiv", getVertexAttribIiv);
2470 ASSIGN("glGetVertexAttribIuiv", getVertexAttribIuiv);
2471 ASSIGN("glInvalidateFramebuffer", invalidateFramebuffer);
2472 ASSIGN("glInvalidateSubFramebuffer", invalidateSubFramebuffer);
2473 ASSIGN("glIsQuery", isQuery);
2474 ASSIGN("glIsSampler", isSampler);
2475 ASSIGN("glIsSync", isSync);
2476 ASSIGN("glIsTransformFeedback", isTransformFeedback);
2477 ASSIGN("glIsVertexArray", isVertexArray);
2478 ASSIGN("glMapBufferRange", mapBufferRange);
2479 ASSIGN("glPauseTransformFeedback", pauseTransformFeedback);
2480 ASSIGN("glProgramBinary", programBinary);
2481 ASSIGN("glProgramParameteri", programParameteri);
2482 ASSIGN("glReadBuffer", readBuffer);
2483 ASSIGN("glRenderbufferStorageMultisample", renderbufferStorageMultisample);
2484 ASSIGN("glResumeTransformFeedback", resumeTransformFeedback);
2485 ASSIGN("glSamplerParameterf", samplerParameterf);
2486 ASSIGN("glSamplerParameterfv", samplerParameterfv);
2487 ASSIGN("glSamplerParameteri", samplerParameteri);
2488 ASSIGN("glSamplerParameteriv", samplerParameteriv);
2489 ASSIGN("glTexImage3D", texImage3D);
2490 ASSIGN("glTexStorage2D", texStorage2D);
2491 ASSIGN("glTexStorage3D", texStorage3D);
2492 ASSIGN("glTexSubImage3D", texSubImage3D);
2493 ASSIGN("glTransformFeedbackVaryings", transformFeedbackVaryings);
2494 ASSIGN("glUniform1ui", uniform1ui);
2495 ASSIGN("glUniform1uiv", uniform1uiv);
2496 ASSIGN("glUniform2ui", uniform2ui);
2497 ASSIGN("glUniform2uiv", uniform2uiv);
2498 ASSIGN("glUniform3ui", uniform3ui);
2499 ASSIGN("glUniform3uiv", uniform3uiv);
2500 ASSIGN("glUniform4ui", uniform4ui);
2501 ASSIGN("glUniform4uiv", uniform4uiv);
2502 ASSIGN("glUniformBlockBinding", uniformBlockBinding);
2503 ASSIGN("glUniformMatrix2x3fv", uniformMatrix2x3fv);
2504 ASSIGN("glUniformMatrix2x4fv", uniformMatrix2x4fv);
2505 ASSIGN("glUniformMatrix3x2fv", uniformMatrix3x2fv);
2506 ASSIGN("glUniformMatrix3x4fv", uniformMatrix3x4fv);
2507 ASSIGN("glUniformMatrix4x2fv", uniformMatrix4x2fv);
2508 ASSIGN("glUniformMatrix4x3fv", uniformMatrix4x3fv);
2509 ASSIGN("glUnmapBuffer", unmapBuffer);
2510 ASSIGN("glVertexAttribDivisor", vertexAttribDivisor);
2511 ASSIGN("glVertexAttribI4i", vertexAttribI4i);
2512 ASSIGN("glVertexAttribI4iv", vertexAttribI4iv);
2513 ASSIGN("glVertexAttribI4ui", vertexAttribI4ui);
2514 ASSIGN("glVertexAttribI4uiv", vertexAttribI4uiv);
2515 ASSIGN("glVertexAttribIPointer", vertexAttribIPointer);
2516 ASSIGN("glWaitSync", waitSync);
2517 }
2518
2519 if (version >= gl::Version(3, 1))
2520 {
2521 ASSIGN("glActiveShaderProgram", activeShaderProgram);
2522 ASSIGN("glBindImageTexture", bindImageTexture);
2523 ASSIGN("glBindProgramPipeline", bindProgramPipeline);
2524 ASSIGN("glBindVertexBuffer", bindVertexBuffer);
2525 ASSIGN("glCreateShaderProgramv", createShaderProgramv);
2526 ASSIGN("glDeleteProgramPipelines", deleteProgramPipelines);
2527 ASSIGN("glDispatchCompute", dispatchCompute);
2528 ASSIGN("glDispatchComputeIndirect", dispatchComputeIndirect);
2529 ASSIGN("glDrawArraysIndirect", drawArraysIndirect);
2530 ASSIGN("glDrawElementsIndirect", drawElementsIndirect);
2531 ASSIGN("glFramebufferParameteri", framebufferParameteri);
2532 ASSIGN("glGenProgramPipelines", genProgramPipelines);
2533 ASSIGN("glGetBooleani_v", getBooleani_v);
2534 ASSIGN("glGetFramebufferParameteriv", getFramebufferParameteriv);
2535 ASSIGN("glGetMultisamplefv", getMultisamplefv);
2536 ASSIGN("glGetProgramInterfaceiv", getProgramInterfaceiv);
2537 ASSIGN("glGetProgramPipelineInfoLog", getProgramPipelineInfoLog);
2538 ASSIGN("glGetProgramPipelineiv", getProgramPipelineiv);
2539 ASSIGN("glGetProgramResourceIndex", getProgramResourceIndex);
2540 ASSIGN("glGetProgramResourceLocation", getProgramResourceLocation);
2541 ASSIGN("glGetProgramResourceName", getProgramResourceName);
2542 ASSIGN("glGetProgramResourceiv", getProgramResourceiv);
2543 ASSIGN("glGetTexLevelParameterfv", getTexLevelParameterfv);
2544 ASSIGN("glGetTexLevelParameteriv", getTexLevelParameteriv);
2545 ASSIGN("glIsProgramPipeline", isProgramPipeline);
2546 ASSIGN("glMemoryBarrier", memoryBarrier);
2547 ASSIGN("glMemoryBarrierByRegion", memoryBarrierByRegion);
2548 ASSIGN("glProgramUniform1f", programUniform1f);
2549 ASSIGN("glProgramUniform1fv", programUniform1fv);
2550 ASSIGN("glProgramUniform1i", programUniform1i);
2551 ASSIGN("glProgramUniform1iv", programUniform1iv);
2552 ASSIGN("glProgramUniform1ui", programUniform1ui);
2553 ASSIGN("glProgramUniform1uiv", programUniform1uiv);
2554 ASSIGN("glProgramUniform2f", programUniform2f);
2555 ASSIGN("glProgramUniform2fv", programUniform2fv);
2556 ASSIGN("glProgramUniform2i", programUniform2i);
2557 ASSIGN("glProgramUniform2iv", programUniform2iv);
2558 ASSIGN("glProgramUniform2ui", programUniform2ui);
2559 ASSIGN("glProgramUniform2uiv", programUniform2uiv);
2560 ASSIGN("glProgramUniform3f", programUniform3f);
2561 ASSIGN("glProgramUniform3fv", programUniform3fv);
2562 ASSIGN("glProgramUniform3i", programUniform3i);
2563 ASSIGN("glProgramUniform3iv", programUniform3iv);
2564 ASSIGN("glProgramUniform3ui", programUniform3ui);
2565 ASSIGN("glProgramUniform3uiv", programUniform3uiv);
2566 ASSIGN("glProgramUniform4f", programUniform4f);
2567 ASSIGN("glProgramUniform4fv", programUniform4fv);
2568 ASSIGN("glProgramUniform4i", programUniform4i);
2569 ASSIGN("glProgramUniform4iv", programUniform4iv);
2570 ASSIGN("glProgramUniform4ui", programUniform4ui);
2571 ASSIGN("glProgramUniform4uiv", programUniform4uiv);
2572 ASSIGN("glProgramUniformMatrix2fv", programUniformMatrix2fv);
2573 ASSIGN("glProgramUniformMatrix2x3fv", programUniformMatrix2x3fv);
2574 ASSIGN("glProgramUniformMatrix2x4fv", programUniformMatrix2x4fv);
2575 ASSIGN("glProgramUniformMatrix3fv", programUniformMatrix3fv);
2576 ASSIGN("glProgramUniformMatrix3x2fv", programUniformMatrix3x2fv);
2577 ASSIGN("glProgramUniformMatrix3x4fv", programUniformMatrix3x4fv);
2578 ASSIGN("glProgramUniformMatrix4fv", programUniformMatrix4fv);
2579 ASSIGN("glProgramUniformMatrix4x2fv", programUniformMatrix4x2fv);
2580 ASSIGN("glProgramUniformMatrix4x3fv", programUniformMatrix4x3fv);
2581 ASSIGN("glSampleMaski", sampleMaski);
2582 ASSIGN("glTexStorage2DMultisample", texStorage2DMultisample);
2583 ASSIGN("glUseProgramStages", useProgramStages);
2584 ASSIGN("glValidateProgramPipeline", validateProgramPipeline);
2585 ASSIGN("glVertexAttribBinding", vertexAttribBinding);
2586 ASSIGN("glVertexAttribFormat", vertexAttribFormat);
2587 ASSIGN("glVertexAttribIFormat", vertexAttribIFormat);
2588 ASSIGN("glVertexBindingDivisor", vertexBindingDivisor);
2589 }
2590
2591 if (version >= gl::Version(3, 2))
2592 {
2593 ASSIGN("glBlendBarrier", blendBarrier);
2594 ASSIGN("glBlendEquationSeparatei", blendEquationSeparatei);
2595 ASSIGN("glBlendEquationi", blendEquationi);
2596 ASSIGN("glBlendFuncSeparatei", blendFuncSeparatei);
2597 ASSIGN("glBlendFunci", blendFunci);
2598 ASSIGN("glColorMaski", colorMaski);
2599 ASSIGN("glCopyImageSubData", copyImageSubData);
2600 ASSIGN("glDebugMessageCallback", debugMessageCallback);
2601 ASSIGN("glDebugMessageControl", debugMessageControl);
2602 ASSIGN("glDebugMessageInsert", debugMessageInsert);
2603 ASSIGN("glDisablei", disablei);
2604 ASSIGN("glDrawElementsBaseVertex", drawElementsBaseVertex);
2605 ASSIGN("glDrawElementsInstancedBaseVertex", drawElementsInstancedBaseVertex);
2606 ASSIGN("glDrawRangeElementsBaseVertex", drawRangeElementsBaseVertex);
2607 ASSIGN("glEnablei", enablei);
2608 ASSIGN("glFramebufferTexture", framebufferTexture);
2609 ASSIGN("glGetDebugMessageLog", getDebugMessageLog);
2610 ASSIGN("glGetGraphicsResetStatus", getGraphicsResetStatus);
2611 ASSIGN("glGetObjectLabel", getObjectLabel);
2612 ASSIGN("glGetObjectPtrLabel", getObjectPtrLabel);
2613 ASSIGN("glGetPointerv", getPointerv);
2614 ASSIGN("glGetSamplerParameterIiv", getSamplerParameterIiv);
2615 ASSIGN("glGetSamplerParameterIuiv", getSamplerParameterIuiv);
2616 ASSIGN("glGetTexParameterIiv", getTexParameterIiv);
2617 ASSIGN("glGetTexParameterIuiv", getTexParameterIuiv);
2618 ASSIGN("glGetnUniformfv", getnUniformfv);
2619 ASSIGN("glGetnUniformiv", getnUniformiv);
2620 ASSIGN("glGetnUniformuiv", getnUniformuiv);
2621 ASSIGN("glIsEnabledi", isEnabledi);
2622 ASSIGN("glMinSampleShading", minSampleShading);
2623 ASSIGN("glObjectLabel", objectLabel);
2624 ASSIGN("glObjectPtrLabel", objectPtrLabel);
2625 ASSIGN("glPatchParameteri", patchParameteri);
2626 ASSIGN("glPopDebugGroup", popDebugGroup);
2627 ASSIGN("glPrimitiveBoundingBox", primitiveBoundingBox);
2628 ASSIGN("glPushDebugGroup", pushDebugGroup);
2629 ASSIGN("glReadnPixels", readnPixels);
2630 ASSIGN("glSamplerParameterIiv", samplerParameterIiv);
2631 ASSIGN("glSamplerParameterIuiv", samplerParameterIuiv);
2632 ASSIGN("glTexBuffer", texBuffer);
2633 ASSIGN("glTexBufferRange", texBufferRange);
2634 ASSIGN("glTexParameterIiv", texParameterIiv);
2635 ASSIGN("glTexParameterIuiv", texParameterIuiv);
2636 ASSIGN("glTexStorage3DMultisample", texStorage3DMultisample);
2637 }
2638 }
2639
initProcsSharedExtensions(const std::set<std::string> & extensions)2640 void DispatchTableGL::initProcsSharedExtensions(const std::set<std::string> &extensions)
2641 {
2642 if (extensions.count("GL_ARB_sync") != 0)
2643 {
2644 ASSIGN("glClientWaitSync", clientWaitSync);
2645 ASSIGN("glDeleteSync", deleteSync);
2646 ASSIGN("glFenceSync", fenceSync);
2647 ASSIGN("glGetInteger64v", getInteger64v);
2648 ASSIGN("glGetSynciv", getSynciv);
2649 ASSIGN("glIsSync", isSync);
2650 ASSIGN("glWaitSync", waitSync);
2651 }
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_tessellation_shader") != 0)
3381 {
3382 patchParameterfv = &glPatchParameterfvNULL;
3383 patchParameteri = &glPatchParameteriNULL;
3384 }
3385
3386 if (extensions.count("GL_ARB_texture_barrier") != 0)
3387 {
3388 textureBarrier = &glTextureBarrierNULL;
3389 }
3390
3391 if (extensions.count("GL_ARB_texture_buffer_object") != 0)
3392 {
3393 texBuffer = &glTexBufferNULL;
3394 }
3395
3396 if (extensions.count("GL_ARB_texture_buffer_range") != 0)
3397 {
3398 texBufferRange = &glTexBufferRangeNULL;
3399 }
3400
3401 if (extensions.count("GL_ARB_texture_compression") != 0)
3402 {
3403 compressedTexImage1D = &glCompressedTexImage1DNULL;
3404 compressedTexImage2D = &glCompressedTexImage2DNULL;
3405 compressedTexImage3D = &glCompressedTexImage3DNULL;
3406 compressedTexSubImage1D = &glCompressedTexSubImage1DNULL;
3407 compressedTexSubImage2D = &glCompressedTexSubImage2DNULL;
3408 compressedTexSubImage3D = &glCompressedTexSubImage3DNULL;
3409 getCompressedTexImage = &glGetCompressedTexImageNULL;
3410 }
3411
3412 if (extensions.count("GL_ARB_texture_multisample") != 0)
3413 {
3414 getMultisamplefv = &glGetMultisamplefvNULL;
3415 sampleMaski = &glSampleMaskiNULL;
3416 texImage2DMultisample = &glTexImage2DMultisampleNULL;
3417 texImage3DMultisample = &glTexImage3DMultisampleNULL;
3418 }
3419
3420 if (extensions.count("GL_ARB_texture_storage") != 0)
3421 {
3422 texStorage1D = &glTexStorage1DNULL;
3423 texStorage2D = &glTexStorage2DNULL;
3424 texStorage3D = &glTexStorage3DNULL;
3425 }
3426
3427 if (extensions.count("GL_ARB_texture_storage_multisample") != 0)
3428 {
3429 texStorage2DMultisample = &glTexStorage2DMultisampleNULL;
3430 texStorage3DMultisample = &glTexStorage3DMultisampleNULL;
3431 }
3432
3433 if (extensions.count("GL_ARB_texture_view") != 0)
3434 {
3435 textureView = &glTextureViewNULL;
3436 }
3437
3438 if (extensions.count("GL_ARB_timer_query") != 0)
3439 {
3440 getQueryObjecti64v = &glGetQueryObjecti64vNULL;
3441 getQueryObjectui64v = &glGetQueryObjectui64vNULL;
3442 queryCounter = &glQueryCounterNULL;
3443 }
3444
3445 if (extensions.count("GL_ARB_transform_feedback2") != 0)
3446 {
3447 bindTransformFeedback = &glBindTransformFeedbackNULL;
3448 deleteTransformFeedbacks = &glDeleteTransformFeedbacksNULL;
3449 drawTransformFeedback = &glDrawTransformFeedbackNULL;
3450 genTransformFeedbacks = &glGenTransformFeedbacksNULL;
3451 isTransformFeedback = &glIsTransformFeedbackNULL;
3452 pauseTransformFeedback = &glPauseTransformFeedbackNULL;
3453 resumeTransformFeedback = &glResumeTransformFeedbackNULL;
3454 }
3455
3456 if (extensions.count("GL_ARB_transform_feedback3") != 0)
3457 {
3458 beginQueryIndexed = &glBeginQueryIndexedNULL;
3459 drawTransformFeedbackStream = &glDrawTransformFeedbackStreamNULL;
3460 endQueryIndexed = &glEndQueryIndexedNULL;
3461 getQueryIndexediv = &glGetQueryIndexedivNULL;
3462 }
3463
3464 if (extensions.count("GL_ARB_transform_feedback_instanced") != 0)
3465 {
3466 drawTransformFeedbackInstanced = &glDrawTransformFeedbackInstancedNULL;
3467 drawTransformFeedbackStreamInstanced = &glDrawTransformFeedbackStreamInstancedNULL;
3468 }
3469
3470 if (extensions.count("GL_ARB_uniform_buffer_object") != 0)
3471 {
3472 bindBufferBase = &glBindBufferBaseNULL;
3473 bindBufferRange = &glBindBufferRangeNULL;
3474 getActiveUniformBlockName = &glGetActiveUniformBlockNameNULL;
3475 getActiveUniformBlockiv = &glGetActiveUniformBlockivNULL;
3476 getActiveUniformName = &glGetActiveUniformNameNULL;
3477 getActiveUniformsiv = &glGetActiveUniformsivNULL;
3478 getIntegeri_v = &glGetIntegeri_vNULL;
3479 getUniformBlockIndex = &glGetUniformBlockIndexNULL;
3480 getUniformIndices = &glGetUniformIndicesNULL;
3481 uniformBlockBinding = &glUniformBlockBindingNULL;
3482 }
3483
3484 if (extensions.count("GL_ARB_vertex_array_object") != 0)
3485 {
3486 bindVertexArray = &glBindVertexArrayNULL;
3487 deleteVertexArrays = &glDeleteVertexArraysNULL;
3488 genVertexArrays = &glGenVertexArraysNULL;
3489 isVertexArray = &glIsVertexArrayNULL;
3490 }
3491
3492 if (extensions.count("GL_ARB_vertex_attrib_64bit") != 0)
3493 {
3494 getVertexAttribLdv = &glGetVertexAttribLdvNULL;
3495 vertexAttribL1d = &glVertexAttribL1dNULL;
3496 vertexAttribL1dv = &glVertexAttribL1dvNULL;
3497 vertexAttribL2d = &glVertexAttribL2dNULL;
3498 vertexAttribL2dv = &glVertexAttribL2dvNULL;
3499 vertexAttribL3d = &glVertexAttribL3dNULL;
3500 vertexAttribL3dv = &glVertexAttribL3dvNULL;
3501 vertexAttribL4d = &glVertexAttribL4dNULL;
3502 vertexAttribL4dv = &glVertexAttribL4dvNULL;
3503 vertexAttribLPointer = &glVertexAttribLPointerNULL;
3504 }
3505
3506 if (extensions.count("GL_ARB_vertex_attrib_binding") != 0)
3507 {
3508 bindVertexBuffer = &glBindVertexBufferNULL;
3509 vertexAttribBinding = &glVertexAttribBindingNULL;
3510 vertexAttribFormat = &glVertexAttribFormatNULL;
3511 vertexAttribIFormat = &glVertexAttribIFormatNULL;
3512 vertexAttribLFormat = &glVertexAttribLFormatNULL;
3513 vertexBindingDivisor = &glVertexBindingDivisorNULL;
3514 }
3515
3516 if (extensions.count("GL_ARB_vertex_buffer_object") != 0)
3517 {
3518 bindBuffer = &glBindBufferNULL;
3519 bufferData = &glBufferDataNULL;
3520 bufferSubData = &glBufferSubDataNULL;
3521 deleteBuffers = &glDeleteBuffersNULL;
3522 genBuffers = &glGenBuffersNULL;
3523 getBufferParameteriv = &glGetBufferParameterivNULL;
3524 getBufferPointerv = &glGetBufferPointervNULL;
3525 getBufferSubData = &glGetBufferSubDataNULL;
3526 isBuffer = &glIsBufferNULL;
3527 mapBuffer = &glMapBufferNULL;
3528 unmapBuffer = &glUnmapBufferNULL;
3529 }
3530
3531 if (extensions.count("GL_ARB_vertex_program") != 0)
3532 {
3533 disableVertexAttribArray = &glDisableVertexAttribArrayNULL;
3534 enableVertexAttribArray = &glEnableVertexAttribArrayNULL;
3535 getProgramiv = &glGetProgramivNULL;
3536 getVertexAttribPointerv = &glGetVertexAttribPointervNULL;
3537 getVertexAttribdv = &glGetVertexAttribdvNULL;
3538 getVertexAttribfv = &glGetVertexAttribfvNULL;
3539 getVertexAttribiv = &glGetVertexAttribivNULL;
3540 isProgram = &glIsProgramNULL;
3541 vertexAttrib1d = &glVertexAttrib1dNULL;
3542 vertexAttrib1dv = &glVertexAttrib1dvNULL;
3543 vertexAttrib1f = &glVertexAttrib1fNULL;
3544 vertexAttrib1fv = &glVertexAttrib1fvNULL;
3545 vertexAttrib1s = &glVertexAttrib1sNULL;
3546 vertexAttrib1sv = &glVertexAttrib1svNULL;
3547 vertexAttrib2d = &glVertexAttrib2dNULL;
3548 vertexAttrib2dv = &glVertexAttrib2dvNULL;
3549 vertexAttrib2f = &glVertexAttrib2fNULL;
3550 vertexAttrib2fv = &glVertexAttrib2fvNULL;
3551 vertexAttrib2s = &glVertexAttrib2sNULL;
3552 vertexAttrib2sv = &glVertexAttrib2svNULL;
3553 vertexAttrib3d = &glVertexAttrib3dNULL;
3554 vertexAttrib3dv = &glVertexAttrib3dvNULL;
3555 vertexAttrib3f = &glVertexAttrib3fNULL;
3556 vertexAttrib3fv = &glVertexAttrib3fvNULL;
3557 vertexAttrib3s = &glVertexAttrib3sNULL;
3558 vertexAttrib3sv = &glVertexAttrib3svNULL;
3559 vertexAttrib4Nbv = &glVertexAttrib4NbvNULL;
3560 vertexAttrib4Niv = &glVertexAttrib4NivNULL;
3561 vertexAttrib4Nsv = &glVertexAttrib4NsvNULL;
3562 vertexAttrib4Nub = &glVertexAttrib4NubNULL;
3563 vertexAttrib4Nubv = &glVertexAttrib4NubvNULL;
3564 vertexAttrib4Nuiv = &glVertexAttrib4NuivNULL;
3565 vertexAttrib4Nusv = &glVertexAttrib4NusvNULL;
3566 vertexAttrib4bv = &glVertexAttrib4bvNULL;
3567 vertexAttrib4d = &glVertexAttrib4dNULL;
3568 vertexAttrib4dv = &glVertexAttrib4dvNULL;
3569 vertexAttrib4f = &glVertexAttrib4fNULL;
3570 vertexAttrib4fv = &glVertexAttrib4fvNULL;
3571 vertexAttrib4iv = &glVertexAttrib4ivNULL;
3572 vertexAttrib4s = &glVertexAttrib4sNULL;
3573 vertexAttrib4sv = &glVertexAttrib4svNULL;
3574 vertexAttrib4ubv = &glVertexAttrib4ubvNULL;
3575 vertexAttrib4uiv = &glVertexAttrib4uivNULL;
3576 vertexAttrib4usv = &glVertexAttrib4usvNULL;
3577 vertexAttribPointer = &glVertexAttribPointerNULL;
3578 }
3579
3580 if (extensions.count("GL_ARB_vertex_shader") != 0)
3581 {
3582 bindAttribLocation = &glBindAttribLocationNULL;
3583 disableVertexAttribArray = &glDisableVertexAttribArrayNULL;
3584 enableVertexAttribArray = &glEnableVertexAttribArrayNULL;
3585 getActiveAttrib = &glGetActiveAttribNULL;
3586 getAttribLocation = &glGetAttribLocationNULL;
3587 getVertexAttribPointerv = &glGetVertexAttribPointervNULL;
3588 getVertexAttribdv = &glGetVertexAttribdvNULL;
3589 getVertexAttribfv = &glGetVertexAttribfvNULL;
3590 getVertexAttribiv = &glGetVertexAttribivNULL;
3591 vertexAttrib1d = &glVertexAttrib1dNULL;
3592 vertexAttrib1dv = &glVertexAttrib1dvNULL;
3593 vertexAttrib1f = &glVertexAttrib1fNULL;
3594 vertexAttrib1fv = &glVertexAttrib1fvNULL;
3595 vertexAttrib1s = &glVertexAttrib1sNULL;
3596 vertexAttrib1sv = &glVertexAttrib1svNULL;
3597 vertexAttrib2d = &glVertexAttrib2dNULL;
3598 vertexAttrib2dv = &glVertexAttrib2dvNULL;
3599 vertexAttrib2f = &glVertexAttrib2fNULL;
3600 vertexAttrib2fv = &glVertexAttrib2fvNULL;
3601 vertexAttrib2s = &glVertexAttrib2sNULL;
3602 vertexAttrib2sv = &glVertexAttrib2svNULL;
3603 vertexAttrib3d = &glVertexAttrib3dNULL;
3604 vertexAttrib3dv = &glVertexAttrib3dvNULL;
3605 vertexAttrib3f = &glVertexAttrib3fNULL;
3606 vertexAttrib3fv = &glVertexAttrib3fvNULL;
3607 vertexAttrib3s = &glVertexAttrib3sNULL;
3608 vertexAttrib3sv = &glVertexAttrib3svNULL;
3609 vertexAttrib4Nbv = &glVertexAttrib4NbvNULL;
3610 vertexAttrib4Niv = &glVertexAttrib4NivNULL;
3611 vertexAttrib4Nsv = &glVertexAttrib4NsvNULL;
3612 vertexAttrib4Nub = &glVertexAttrib4NubNULL;
3613 vertexAttrib4Nubv = &glVertexAttrib4NubvNULL;
3614 vertexAttrib4Nuiv = &glVertexAttrib4NuivNULL;
3615 vertexAttrib4Nusv = &glVertexAttrib4NusvNULL;
3616 vertexAttrib4bv = &glVertexAttrib4bvNULL;
3617 vertexAttrib4d = &glVertexAttrib4dNULL;
3618 vertexAttrib4dv = &glVertexAttrib4dvNULL;
3619 vertexAttrib4f = &glVertexAttrib4fNULL;
3620 vertexAttrib4fv = &glVertexAttrib4fvNULL;
3621 vertexAttrib4iv = &glVertexAttrib4ivNULL;
3622 vertexAttrib4s = &glVertexAttrib4sNULL;
3623 vertexAttrib4sv = &glVertexAttrib4svNULL;
3624 vertexAttrib4ubv = &glVertexAttrib4ubvNULL;
3625 vertexAttrib4uiv = &glVertexAttrib4uivNULL;
3626 vertexAttrib4usv = &glVertexAttrib4usvNULL;
3627 vertexAttribPointer = &glVertexAttribPointerNULL;
3628 }
3629
3630 if (extensions.count("GL_ARB_vertex_type_2_10_10_10_rev") != 0)
3631 {
3632 vertexAttribP1ui = &glVertexAttribP1uiNULL;
3633 vertexAttribP1uiv = &glVertexAttribP1uivNULL;
3634 vertexAttribP2ui = &glVertexAttribP2uiNULL;
3635 vertexAttribP2uiv = &glVertexAttribP2uivNULL;
3636 vertexAttribP3ui = &glVertexAttribP3uiNULL;
3637 vertexAttribP3uiv = &glVertexAttribP3uivNULL;
3638 vertexAttribP4ui = &glVertexAttribP4uiNULL;
3639 vertexAttribP4uiv = &glVertexAttribP4uivNULL;
3640 }
3641
3642 if (extensions.count("GL_ARB_viewport_array") != 0)
3643 {
3644 depthRangeArrayv = &glDepthRangeArrayvNULL;
3645 depthRangeIndexed = &glDepthRangeIndexedNULL;
3646 getDoublei_v = &glGetDoublei_vNULL;
3647 getFloati_v = &glGetFloati_vNULL;
3648 scissorArrayv = &glScissorArrayvNULL;
3649 scissorIndexed = &glScissorIndexedNULL;
3650 scissorIndexedv = &glScissorIndexedvNULL;
3651 viewportArrayv = &glViewportArrayvNULL;
3652 viewportIndexedf = &glViewportIndexedfNULL;
3653 viewportIndexedfv = &glViewportIndexedfvNULL;
3654 }
3655
3656 if (extensions.count("GL_EXT_blend_color") != 0)
3657 {
3658 blendColor = &glBlendColorNULL;
3659 }
3660
3661 if (extensions.count("GL_EXT_blend_equation_separate") != 0)
3662 {
3663 blendEquationSeparate = &glBlendEquationSeparateNULL;
3664 }
3665
3666 if (extensions.count("GL_EXT_blend_func_separate") != 0)
3667 {
3668 blendFuncSeparate = &glBlendFuncSeparateNULL;
3669 }
3670
3671 if (extensions.count("GL_EXT_copy_texture") != 0)
3672 {
3673 copyTexImage1D = &glCopyTexImage1DNULL;
3674 copyTexImage2D = &glCopyTexImage2DNULL;
3675 copyTexSubImage1D = &glCopyTexSubImage1DNULL;
3676 copyTexSubImage2D = &glCopyTexSubImage2DNULL;
3677 copyTexSubImage3D = &glCopyTexSubImage3DNULL;
3678 }
3679
3680 if (extensions.count("GL_EXT_direct_state_access") != 0)
3681 {
3682 checkNamedFramebufferStatus = &glCheckNamedFramebufferStatusNULL;
3683 clearNamedBufferData = &glClearNamedBufferDataNULL;
3684 clearNamedBufferSubData = &glClearNamedBufferSubDataNULL;
3685 compressedTextureSubImage1D = &glCompressedTextureSubImage1DNULL;
3686 compressedTextureSubImage2D = &glCompressedTextureSubImage2DNULL;
3687 compressedTextureSubImage3D = &glCompressedTextureSubImage3DNULL;
3688 copyTextureSubImage1D = &glCopyTextureSubImage1DNULL;
3689 copyTextureSubImage2D = &glCopyTextureSubImage2DNULL;
3690 copyTextureSubImage3D = &glCopyTextureSubImage3DNULL;
3691 disableVertexArrayAttrib = &glDisableVertexArrayAttribNULL;
3692 enableVertexArrayAttrib = &glEnableVertexArrayAttribNULL;
3693 flushMappedNamedBufferRange = &glFlushMappedNamedBufferRangeNULL;
3694 generateTextureMipmap = &glGenerateTextureMipmapNULL;
3695 getCompressedTextureImage = &glGetCompressedTextureImageNULL;
3696 getDoublei_v = &glGetDoublei_vNULL;
3697 getFloati_v = &glGetFloati_vNULL;
3698 getFramebufferParameteriv = &glGetFramebufferParameterivNULL;
3699 getNamedBufferParameteriv = &glGetNamedBufferParameterivNULL;
3700 getNamedBufferPointerv = &glGetNamedBufferPointervNULL;
3701 getNamedBufferSubData = &glGetNamedBufferSubDataNULL;
3702 getNamedFramebufferAttachmentParameteriv = &glGetNamedFramebufferAttachmentParameterivNULL;
3703 getNamedFramebufferParameteriv = &glGetNamedFramebufferParameterivNULL;
3704 getNamedRenderbufferParameteriv = &glGetNamedRenderbufferParameterivNULL;
3705 getTextureImage = &glGetTextureImageNULL;
3706 getTextureLevelParameterfv = &glGetTextureLevelParameterfvNULL;
3707 getTextureLevelParameteriv = &glGetTextureLevelParameterivNULL;
3708 getTextureParameterIiv = &glGetTextureParameterIivNULL;
3709 getTextureParameterIuiv = &glGetTextureParameterIuivNULL;
3710 getTextureParameterfv = &glGetTextureParameterfvNULL;
3711 getTextureParameteriv = &glGetTextureParameterivNULL;
3712 mapNamedBuffer = &glMapNamedBufferNULL;
3713 mapNamedBufferRange = &glMapNamedBufferRangeNULL;
3714 namedBufferData = &glNamedBufferDataNULL;
3715 namedBufferStorage = &glNamedBufferStorageNULL;
3716 namedBufferSubData = &glNamedBufferSubDataNULL;
3717 namedFramebufferParameteri = &glNamedFramebufferParameteriNULL;
3718 namedFramebufferRenderbuffer = &glNamedFramebufferRenderbufferNULL;
3719 namedFramebufferTexture = &glNamedFramebufferTextureNULL;
3720 namedFramebufferTextureLayer = &glNamedFramebufferTextureLayerNULL;
3721 namedRenderbufferStorage = &glNamedRenderbufferStorageNULL;
3722 namedRenderbufferStorageMultisample = &glNamedRenderbufferStorageMultisampleNULL;
3723 programUniform1d = &glProgramUniform1dNULL;
3724 programUniform1dv = &glProgramUniform1dvNULL;
3725 programUniform2d = &glProgramUniform2dNULL;
3726 programUniform2dv = &glProgramUniform2dvNULL;
3727 programUniform3d = &glProgramUniform3dNULL;
3728 programUniform3dv = &glProgramUniform3dvNULL;
3729 programUniform4d = &glProgramUniform4dNULL;
3730 programUniform4dv = &glProgramUniform4dvNULL;
3731 programUniformMatrix2dv = &glProgramUniformMatrix2dvNULL;
3732 programUniformMatrix2x3dv = &glProgramUniformMatrix2x3dvNULL;
3733 programUniformMatrix2x4dv = &glProgramUniformMatrix2x4dvNULL;
3734 programUniformMatrix3dv = &glProgramUniformMatrix3dvNULL;
3735 programUniformMatrix3x2dv = &glProgramUniformMatrix3x2dvNULL;
3736 programUniformMatrix3x4dv = &glProgramUniformMatrix3x4dvNULL;
3737 programUniformMatrix4dv = &glProgramUniformMatrix4dvNULL;
3738 programUniformMatrix4x2dv = &glProgramUniformMatrix4x2dvNULL;
3739 programUniformMatrix4x3dv = &glProgramUniformMatrix4x3dvNULL;
3740 textureBuffer = &glTextureBufferNULL;
3741 textureBufferRange = &glTextureBufferRangeNULL;
3742 textureParameterIiv = &glTextureParameterIivNULL;
3743 textureParameterIuiv = &glTextureParameterIuivNULL;
3744 textureParameterf = &glTextureParameterfNULL;
3745 textureParameterfv = &glTextureParameterfvNULL;
3746 textureParameteri = &glTextureParameteriNULL;
3747 textureParameteriv = &glTextureParameterivNULL;
3748 textureStorage1D = &glTextureStorage1DNULL;
3749 textureStorage2D = &glTextureStorage2DNULL;
3750 textureStorage2DMultisample = &glTextureStorage2DMultisampleNULL;
3751 textureStorage3D = &glTextureStorage3DNULL;
3752 textureStorage3DMultisample = &glTextureStorage3DMultisampleNULL;
3753 textureSubImage1D = &glTextureSubImage1DNULL;
3754 textureSubImage2D = &glTextureSubImage2DNULL;
3755 textureSubImage3D = &glTextureSubImage3DNULL;
3756 unmapNamedBuffer = &glUnmapNamedBufferNULL;
3757 }
3758
3759 if (extensions.count("GL_EXT_draw_range_elements") != 0)
3760 {
3761 drawRangeElements = &glDrawRangeElementsNULL;
3762 }
3763
3764 if (extensions.count("GL_EXT_framebuffer_blit") != 0)
3765 {
3766 blitFramebuffer = &glBlitFramebufferNULL;
3767 blitFramebufferEXT = &glBlitFramebufferEXTNULL;
3768 }
3769
3770 if (extensions.count("GL_EXT_framebuffer_multisample") != 0)
3771 {
3772 renderbufferStorageMultisample = &glRenderbufferStorageMultisampleNULL;
3773 renderbufferStorageMultisampleEXT = &glRenderbufferStorageMultisampleEXTNULL;
3774 }
3775
3776 if (extensions.count("GL_EXT_framebuffer_object") != 0)
3777 {
3778 bindFramebuffer = &glBindFramebufferNULL;
3779 bindRenderbuffer = &glBindRenderbufferNULL;
3780 checkFramebufferStatus = &glCheckFramebufferStatusNULL;
3781 deleteFramebuffers = &glDeleteFramebuffersNULL;
3782 deleteRenderbuffers = &glDeleteRenderbuffersNULL;
3783 framebufferRenderbuffer = &glFramebufferRenderbufferNULL;
3784 framebufferTexture1D = &glFramebufferTexture1DNULL;
3785 framebufferTexture2D = &glFramebufferTexture2DNULL;
3786 framebufferTexture3D = &glFramebufferTexture3DNULL;
3787 genFramebuffers = &glGenFramebuffersNULL;
3788 genRenderbuffers = &glGenRenderbuffersNULL;
3789 generateMipmap = &glGenerateMipmapNULL;
3790 getFramebufferAttachmentParameteriv = &glGetFramebufferAttachmentParameterivNULL;
3791 getRenderbufferParameteriv = &glGetRenderbufferParameterivNULL;
3792 isFramebuffer = &glIsFramebufferNULL;
3793 isRenderbuffer = &glIsRenderbufferNULL;
3794 renderbufferStorage = &glRenderbufferStorageNULL;
3795 }
3796
3797 if (extensions.count("GL_EXT_gpu_shader4") != 0)
3798 {
3799 bindFragDataLocation = &glBindFragDataLocationNULL;
3800 getFragDataLocation = &glGetFragDataLocationNULL;
3801 getUniformuiv = &glGetUniformuivNULL;
3802 uniform1ui = &glUniform1uiNULL;
3803 uniform1uiv = &glUniform1uivNULL;
3804 uniform2ui = &glUniform2uiNULL;
3805 uniform2uiv = &glUniform2uivNULL;
3806 uniform3ui = &glUniform3uiNULL;
3807 uniform3uiv = &glUniform3uivNULL;
3808 uniform4ui = &glUniform4uiNULL;
3809 uniform4uiv = &glUniform4uivNULL;
3810 }
3811
3812 if (extensions.count("GL_EXT_point_parameters") != 0)
3813 {
3814 pointParameterf = &glPointParameterfNULL;
3815 pointParameterfv = &glPointParameterfvNULL;
3816 }
3817
3818 if (extensions.count("GL_EXT_polygon_offset") != 0)
3819 {
3820 polygonOffset = &glPolygonOffsetNULL;
3821 }
3822
3823 if (extensions.count("GL_EXT_provoking_vertex") != 0)
3824 {
3825 provokingVertex = &glProvokingVertexNULL;
3826 }
3827
3828 if (extensions.count("GL_EXT_shader_image_load_store") != 0)
3829 {
3830 bindImageTexture = &glBindImageTextureNULL;
3831 memoryBarrier = &glMemoryBarrierNULL;
3832 }
3833
3834 if (extensions.count("GL_EXT_subtexture") != 0)
3835 {
3836 texSubImage1D = &glTexSubImage1DNULL;
3837 texSubImage2D = &glTexSubImage2DNULL;
3838 }
3839
3840 if (extensions.count("GL_EXT_texture3D") != 0)
3841 {
3842 texImage3D = &glTexImage3DNULL;
3843 texSubImage3D = &glTexSubImage3DNULL;
3844 }
3845
3846 if (extensions.count("GL_EXT_texture_array") != 0)
3847 {
3848 framebufferTextureLayer = &glFramebufferTextureLayerNULL;
3849 }
3850
3851 if (extensions.count("GL_EXT_texture_buffer_object") != 0)
3852 {
3853 texBuffer = &glTexBufferNULL;
3854 texBufferEXT = &glTexBufferEXTNULL;
3855 }
3856
3857 if (extensions.count("GL_EXT_texture_integer") != 0)
3858 {
3859 getTexParameterIiv = &glGetTexParameterIivNULL;
3860 getTexParameterIuiv = &glGetTexParameterIuivNULL;
3861 texParameterIiv = &glTexParameterIivNULL;
3862 texParameterIuiv = &glTexParameterIuivNULL;
3863 }
3864
3865 if (extensions.count("GL_EXT_texture_object") != 0)
3866 {
3867 bindTexture = &glBindTextureNULL;
3868 deleteTextures = &glDeleteTexturesNULL;
3869 genTextures = &glGenTexturesNULL;
3870 isTexture = &glIsTextureNULL;
3871 }
3872
3873 if (extensions.count("GL_EXT_timer_query") != 0)
3874 {
3875 getQueryObjecti64v = &glGetQueryObjecti64vNULL;
3876 getQueryObjectui64v = &glGetQueryObjectui64vNULL;
3877 }
3878
3879 if (extensions.count("GL_EXT_transform_feedback") != 0)
3880 {
3881 beginTransformFeedback = &glBeginTransformFeedbackNULL;
3882 bindBufferBase = &glBindBufferBaseNULL;
3883 bindBufferRange = &glBindBufferRangeNULL;
3884 endTransformFeedback = &glEndTransformFeedbackNULL;
3885 getTransformFeedbackVarying = &glGetTransformFeedbackVaryingNULL;
3886 transformFeedbackVaryings = &glTransformFeedbackVaryingsNULL;
3887 }
3888
3889 if (extensions.count("GL_EXT_vertex_array") != 0)
3890 {
3891 drawArrays = &glDrawArraysNULL;
3892 getPointerv = &glGetPointervNULL;
3893 }
3894
3895 if (extensions.count("GL_EXT_vertex_attrib_64bit") != 0)
3896 {
3897 getVertexAttribLdv = &glGetVertexAttribLdvNULL;
3898 vertexAttribL1d = &glVertexAttribL1dNULL;
3899 vertexAttribL1dv = &glVertexAttribL1dvNULL;
3900 vertexAttribL2d = &glVertexAttribL2dNULL;
3901 vertexAttribL2dv = &glVertexAttribL2dvNULL;
3902 vertexAttribL3d = &glVertexAttribL3dNULL;
3903 vertexAttribL3dv = &glVertexAttribL3dvNULL;
3904 vertexAttribL4d = &glVertexAttribL4dNULL;
3905 vertexAttribL4dv = &glVertexAttribL4dvNULL;
3906 vertexAttribLPointer = &glVertexAttribLPointerNULL;
3907 }
3908
3909 if (extensions.count("GL_KHR_debug") != 0)
3910 {
3911 debugMessageCallback = &glDebugMessageCallbackNULL;
3912 debugMessageControl = &glDebugMessageControlNULL;
3913 debugMessageInsert = &glDebugMessageInsertNULL;
3914 getDebugMessageLog = &glGetDebugMessageLogNULL;
3915 getObjectLabel = &glGetObjectLabelNULL;
3916 getObjectPtrLabel = &glGetObjectPtrLabelNULL;
3917 getPointerv = &glGetPointervNULL;
3918 objectLabel = &glObjectLabelNULL;
3919 objectPtrLabel = &glObjectPtrLabelNULL;
3920 popDebugGroup = &glPopDebugGroupNULL;
3921 pushDebugGroup = &glPushDebugGroupNULL;
3922 }
3923
3924 if (extensions.count("GL_KHR_robustness") != 0)
3925 {
3926 getGraphicsResetStatus = &glGetGraphicsResetStatusNULL;
3927 getnUniformfv = &glGetnUniformfvNULL;
3928 getnUniformiv = &glGetnUniformivNULL;
3929 getnUniformuiv = &glGetnUniformuivNULL;
3930 readnPixels = &glReadnPixelsNULL;
3931 }
3932
3933 if (extensions.count("GL_NV_geometry_program4") != 0)
3934 {
3935 framebufferTexture = &glFramebufferTextureNULL;
3936 framebufferTextureLayer = &glFramebufferTextureLayerNULL;
3937 }
3938
3939 if (extensions.count("GL_NV_vertex_program4") != 0)
3940 {
3941 getVertexAttribIiv = &glGetVertexAttribIivNULL;
3942 getVertexAttribIuiv = &glGetVertexAttribIuivNULL;
3943 vertexAttribI1i = &glVertexAttribI1iNULL;
3944 vertexAttribI1iv = &glVertexAttribI1ivNULL;
3945 vertexAttribI1ui = &glVertexAttribI1uiNULL;
3946 vertexAttribI1uiv = &glVertexAttribI1uivNULL;
3947 vertexAttribI2i = &glVertexAttribI2iNULL;
3948 vertexAttribI2iv = &glVertexAttribI2ivNULL;
3949 vertexAttribI2ui = &glVertexAttribI2uiNULL;
3950 vertexAttribI2uiv = &glVertexAttribI2uivNULL;
3951 vertexAttribI3i = &glVertexAttribI3iNULL;
3952 vertexAttribI3iv = &glVertexAttribI3ivNULL;
3953 vertexAttribI3ui = &glVertexAttribI3uiNULL;
3954 vertexAttribI3uiv = &glVertexAttribI3uivNULL;
3955 vertexAttribI4bv = &glVertexAttribI4bvNULL;
3956 vertexAttribI4i = &glVertexAttribI4iNULL;
3957 vertexAttribI4iv = &glVertexAttribI4ivNULL;
3958 vertexAttribI4sv = &glVertexAttribI4svNULL;
3959 vertexAttribI4ubv = &glVertexAttribI4ubvNULL;
3960 vertexAttribI4ui = &glVertexAttribI4uiNULL;
3961 vertexAttribI4uiv = &glVertexAttribI4uivNULL;
3962 vertexAttribI4usv = &glVertexAttribI4usvNULL;
3963 vertexAttribIPointer = &glVertexAttribIPointerNULL;
3964 }
3965
3966 if (extensions.count("GL_OES_single_precision") != 0)
3967 {
3968 clearDepthf = &glClearDepthfNULL;
3969 depthRangef = &glDepthRangefNULL;
3970 }
3971
3972 if (version >= gl::Version(1, 0))
3973 {
3974 blendFunc = &glBlendFuncNULL;
3975 clear = &glClearNULL;
3976 clearColor = &glClearColorNULL;
3977 clearDepth = &glClearDepthNULL;
3978 clearStencil = &glClearStencilNULL;
3979 colorMask = &glColorMaskNULL;
3980 cullFace = &glCullFaceNULL;
3981 depthFunc = &glDepthFuncNULL;
3982 depthMask = &glDepthMaskNULL;
3983 depthRange = &glDepthRangeNULL;
3984 disable = &glDisableNULL;
3985 drawBuffer = &glDrawBufferNULL;
3986 enable = &glEnableNULL;
3987 finish = &glFinishNULL;
3988 flush = &glFlushNULL;
3989 frontFace = &glFrontFaceNULL;
3990 getBooleanv = &glGetBooleanvNULL;
3991 getDoublev = &glGetDoublevNULL;
3992 getError = &glGetErrorNULL;
3993 getFloatv = &glGetFloatvNULL;
3994 getIntegerv = &glGetIntegervNULL;
3995 getString = &glGetStringNULL;
3996 getTexImage = &glGetTexImageNULL;
3997 getTexLevelParameterfv = &glGetTexLevelParameterfvNULL;
3998 getTexLevelParameteriv = &glGetTexLevelParameterivNULL;
3999 getTexParameterfv = &glGetTexParameterfvNULL;
4000 getTexParameteriv = &glGetTexParameterivNULL;
4001 hint = &glHintNULL;
4002 isEnabled = &glIsEnabledNULL;
4003 lineWidth = &glLineWidthNULL;
4004 logicOp = &glLogicOpNULL;
4005 pixelStoref = &glPixelStorefNULL;
4006 pixelStorei = &glPixelStoreiNULL;
4007 pointSize = &glPointSizeNULL;
4008 polygonMode = &glPolygonModeNULL;
4009 readBuffer = &glReadBufferNULL;
4010 readPixels = &glReadPixelsNULL;
4011 scissor = &glScissorNULL;
4012 stencilFunc = &glStencilFuncNULL;
4013 stencilMask = &glStencilMaskNULL;
4014 stencilOp = &glStencilOpNULL;
4015 texImage1D = &glTexImage1DNULL;
4016 texImage2D = &glTexImage2DNULL;
4017 texParameterf = &glTexParameterfNULL;
4018 texParameterfv = &glTexParameterfvNULL;
4019 texParameteri = &glTexParameteriNULL;
4020 texParameteriv = &glTexParameterivNULL;
4021 viewport = &glViewportNULL;
4022 }
4023
4024 if (version >= gl::Version(1, 1))
4025 {
4026 bindTexture = &glBindTextureNULL;
4027 copyTexImage1D = &glCopyTexImage1DNULL;
4028 copyTexImage2D = &glCopyTexImage2DNULL;
4029 copyTexSubImage1D = &glCopyTexSubImage1DNULL;
4030 copyTexSubImage2D = &glCopyTexSubImage2DNULL;
4031 deleteTextures = &glDeleteTexturesNULL;
4032 drawArrays = &glDrawArraysNULL;
4033 drawElements = &glDrawElementsNULL;
4034 genTextures = &glGenTexturesNULL;
4035 isTexture = &glIsTextureNULL;
4036 polygonOffset = &glPolygonOffsetNULL;
4037 texSubImage1D = &glTexSubImage1DNULL;
4038 texSubImage2D = &glTexSubImage2DNULL;
4039 }
4040
4041 if (version >= gl::Version(1, 2))
4042 {
4043 copyTexSubImage3D = &glCopyTexSubImage3DNULL;
4044 drawRangeElements = &glDrawRangeElementsNULL;
4045 texImage3D = &glTexImage3DNULL;
4046 texSubImage3D = &glTexSubImage3DNULL;
4047 }
4048
4049 if (version >= gl::Version(1, 3))
4050 {
4051 activeTexture = &glActiveTextureNULL;
4052 compressedTexImage1D = &glCompressedTexImage1DNULL;
4053 compressedTexImage2D = &glCompressedTexImage2DNULL;
4054 compressedTexImage3D = &glCompressedTexImage3DNULL;
4055 compressedTexSubImage1D = &glCompressedTexSubImage1DNULL;
4056 compressedTexSubImage2D = &glCompressedTexSubImage2DNULL;
4057 compressedTexSubImage3D = &glCompressedTexSubImage3DNULL;
4058 getCompressedTexImage = &glGetCompressedTexImageNULL;
4059 sampleCoverage = &glSampleCoverageNULL;
4060 }
4061
4062 if (version >= gl::Version(1, 4))
4063 {
4064 blendColor = &glBlendColorNULL;
4065 blendEquation = &glBlendEquationNULL;
4066 blendFuncSeparate = &glBlendFuncSeparateNULL;
4067 multiDrawArrays = &glMultiDrawArraysNULL;
4068 multiDrawElements = &glMultiDrawElementsNULL;
4069 pointParameterf = &glPointParameterfNULL;
4070 pointParameterfv = &glPointParameterfvNULL;
4071 pointParameteri = &glPointParameteriNULL;
4072 pointParameteriv = &glPointParameterivNULL;
4073 }
4074
4075 if (version >= gl::Version(1, 5))
4076 {
4077 beginQuery = &glBeginQueryNULL;
4078 bindBuffer = &glBindBufferNULL;
4079 bufferData = &glBufferDataNULL;
4080 bufferSubData = &glBufferSubDataNULL;
4081 deleteBuffers = &glDeleteBuffersNULL;
4082 deleteQueries = &glDeleteQueriesNULL;
4083 endQuery = &glEndQueryNULL;
4084 genBuffers = &glGenBuffersNULL;
4085 genQueries = &glGenQueriesNULL;
4086 getBufferParameteriv = &glGetBufferParameterivNULL;
4087 getBufferPointerv = &glGetBufferPointervNULL;
4088 getBufferSubData = &glGetBufferSubDataNULL;
4089 getQueryObjectiv = &glGetQueryObjectivNULL;
4090 getQueryObjectuiv = &glGetQueryObjectuivNULL;
4091 getQueryiv = &glGetQueryivNULL;
4092 isBuffer = &glIsBufferNULL;
4093 isQuery = &glIsQueryNULL;
4094 mapBuffer = &glMapBufferNULL;
4095 unmapBuffer = &glUnmapBufferNULL;
4096 }
4097
4098 if (version >= gl::Version(2, 0))
4099 {
4100 attachShader = &glAttachShaderNULL;
4101 bindAttribLocation = &glBindAttribLocationNULL;
4102 blendEquationSeparate = &glBlendEquationSeparateNULL;
4103 compileShader = &glCompileShaderNULL;
4104 createProgram = &glCreateProgramNULL;
4105 createShader = &glCreateShaderNULL;
4106 deleteProgram = &glDeleteProgramNULL;
4107 deleteShader = &glDeleteShaderNULL;
4108 detachShader = &glDetachShaderNULL;
4109 disableVertexAttribArray = &glDisableVertexAttribArrayNULL;
4110 drawBuffers = &glDrawBuffersNULL;
4111 enableVertexAttribArray = &glEnableVertexAttribArrayNULL;
4112 getActiveAttrib = &glGetActiveAttribNULL;
4113 getActiveUniform = &glGetActiveUniformNULL;
4114 getAttachedShaders = &glGetAttachedShadersNULL;
4115 getAttribLocation = &glGetAttribLocationNULL;
4116 getProgramInfoLog = &glGetProgramInfoLogNULL;
4117 getProgramiv = &glGetProgramivNULL;
4118 getShaderInfoLog = &glGetShaderInfoLogNULL;
4119 getShaderSource = &glGetShaderSourceNULL;
4120 getShaderiv = &glGetShaderivNULL;
4121 getUniformLocation = &glGetUniformLocationNULL;
4122 getUniformfv = &glGetUniformfvNULL;
4123 getUniformiv = &glGetUniformivNULL;
4124 getVertexAttribPointerv = &glGetVertexAttribPointervNULL;
4125 getVertexAttribdv = &glGetVertexAttribdvNULL;
4126 getVertexAttribfv = &glGetVertexAttribfvNULL;
4127 getVertexAttribiv = &glGetVertexAttribivNULL;
4128 isProgram = &glIsProgramNULL;
4129 isShader = &glIsShaderNULL;
4130 linkProgram = &glLinkProgramNULL;
4131 shaderSource = &glShaderSourceNULL;
4132 stencilFuncSeparate = &glStencilFuncSeparateNULL;
4133 stencilMaskSeparate = &glStencilMaskSeparateNULL;
4134 stencilOpSeparate = &glStencilOpSeparateNULL;
4135 uniform1f = &glUniform1fNULL;
4136 uniform1fv = &glUniform1fvNULL;
4137 uniform1i = &glUniform1iNULL;
4138 uniform1iv = &glUniform1ivNULL;
4139 uniform2f = &glUniform2fNULL;
4140 uniform2fv = &glUniform2fvNULL;
4141 uniform2i = &glUniform2iNULL;
4142 uniform2iv = &glUniform2ivNULL;
4143 uniform3f = &glUniform3fNULL;
4144 uniform3fv = &glUniform3fvNULL;
4145 uniform3i = &glUniform3iNULL;
4146 uniform3iv = &glUniform3ivNULL;
4147 uniform4f = &glUniform4fNULL;
4148 uniform4fv = &glUniform4fvNULL;
4149 uniform4i = &glUniform4iNULL;
4150 uniform4iv = &glUniform4ivNULL;
4151 uniformMatrix2fv = &glUniformMatrix2fvNULL;
4152 uniformMatrix3fv = &glUniformMatrix3fvNULL;
4153 uniformMatrix4fv = &glUniformMatrix4fvNULL;
4154 useProgram = &glUseProgramNULL;
4155 validateProgram = &glValidateProgramNULL;
4156 vertexAttrib1d = &glVertexAttrib1dNULL;
4157 vertexAttrib1dv = &glVertexAttrib1dvNULL;
4158 vertexAttrib1f = &glVertexAttrib1fNULL;
4159 vertexAttrib1fv = &glVertexAttrib1fvNULL;
4160 vertexAttrib1s = &glVertexAttrib1sNULL;
4161 vertexAttrib1sv = &glVertexAttrib1svNULL;
4162 vertexAttrib2d = &glVertexAttrib2dNULL;
4163 vertexAttrib2dv = &glVertexAttrib2dvNULL;
4164 vertexAttrib2f = &glVertexAttrib2fNULL;
4165 vertexAttrib2fv = &glVertexAttrib2fvNULL;
4166 vertexAttrib2s = &glVertexAttrib2sNULL;
4167 vertexAttrib2sv = &glVertexAttrib2svNULL;
4168 vertexAttrib3d = &glVertexAttrib3dNULL;
4169 vertexAttrib3dv = &glVertexAttrib3dvNULL;
4170 vertexAttrib3f = &glVertexAttrib3fNULL;
4171 vertexAttrib3fv = &glVertexAttrib3fvNULL;
4172 vertexAttrib3s = &glVertexAttrib3sNULL;
4173 vertexAttrib3sv = &glVertexAttrib3svNULL;
4174 vertexAttrib4Nbv = &glVertexAttrib4NbvNULL;
4175 vertexAttrib4Niv = &glVertexAttrib4NivNULL;
4176 vertexAttrib4Nsv = &glVertexAttrib4NsvNULL;
4177 vertexAttrib4Nub = &glVertexAttrib4NubNULL;
4178 vertexAttrib4Nubv = &glVertexAttrib4NubvNULL;
4179 vertexAttrib4Nuiv = &glVertexAttrib4NuivNULL;
4180 vertexAttrib4Nusv = &glVertexAttrib4NusvNULL;
4181 vertexAttrib4bv = &glVertexAttrib4bvNULL;
4182 vertexAttrib4d = &glVertexAttrib4dNULL;
4183 vertexAttrib4dv = &glVertexAttrib4dvNULL;
4184 vertexAttrib4f = &glVertexAttrib4fNULL;
4185 vertexAttrib4fv = &glVertexAttrib4fvNULL;
4186 vertexAttrib4iv = &glVertexAttrib4ivNULL;
4187 vertexAttrib4s = &glVertexAttrib4sNULL;
4188 vertexAttrib4sv = &glVertexAttrib4svNULL;
4189 vertexAttrib4ubv = &glVertexAttrib4ubvNULL;
4190 vertexAttrib4uiv = &glVertexAttrib4uivNULL;
4191 vertexAttrib4usv = &glVertexAttrib4usvNULL;
4192 vertexAttribPointer = &glVertexAttribPointerNULL;
4193 }
4194
4195 if (version >= gl::Version(2, 1))
4196 {
4197 uniformMatrix2x3fv = &glUniformMatrix2x3fvNULL;
4198 uniformMatrix2x4fv = &glUniformMatrix2x4fvNULL;
4199 uniformMatrix3x2fv = &glUniformMatrix3x2fvNULL;
4200 uniformMatrix3x4fv = &glUniformMatrix3x4fvNULL;
4201 uniformMatrix4x2fv = &glUniformMatrix4x2fvNULL;
4202 uniformMatrix4x3fv = &glUniformMatrix4x3fvNULL;
4203 }
4204
4205 if (version >= gl::Version(3, 0))
4206 {
4207 beginConditionalRender = &glBeginConditionalRenderNULL;
4208 beginTransformFeedback = &glBeginTransformFeedbackNULL;
4209 bindBufferBase = &glBindBufferBaseNULL;
4210 bindBufferRange = &glBindBufferRangeNULL;
4211 bindFragDataLocation = &glBindFragDataLocationNULL;
4212 bindFramebuffer = &glBindFramebufferNULL;
4213 bindRenderbuffer = &glBindRenderbufferNULL;
4214 bindVertexArray = &glBindVertexArrayNULL;
4215 blitFramebuffer = &glBlitFramebufferNULL;
4216 checkFramebufferStatus = &glCheckFramebufferStatusNULL;
4217 clampColor = &glClampColorNULL;
4218 clearBufferfi = &glClearBufferfiNULL;
4219 clearBufferfv = &glClearBufferfvNULL;
4220 clearBufferiv = &glClearBufferivNULL;
4221 clearBufferuiv = &glClearBufferuivNULL;
4222 colorMaski = &glColorMaskiNULL;
4223 deleteFramebuffers = &glDeleteFramebuffersNULL;
4224 deleteRenderbuffers = &glDeleteRenderbuffersNULL;
4225 deleteVertexArrays = &glDeleteVertexArraysNULL;
4226 disablei = &glDisableiNULL;
4227 enablei = &glEnableiNULL;
4228 endConditionalRender = &glEndConditionalRenderNULL;
4229 endTransformFeedback = &glEndTransformFeedbackNULL;
4230 flushMappedBufferRange = &glFlushMappedBufferRangeNULL;
4231 framebufferRenderbuffer = &glFramebufferRenderbufferNULL;
4232 framebufferTexture1D = &glFramebufferTexture1DNULL;
4233 framebufferTexture2D = &glFramebufferTexture2DNULL;
4234 framebufferTexture3D = &glFramebufferTexture3DNULL;
4235 framebufferTextureLayer = &glFramebufferTextureLayerNULL;
4236 genFramebuffers = &glGenFramebuffersNULL;
4237 genRenderbuffers = &glGenRenderbuffersNULL;
4238 genVertexArrays = &glGenVertexArraysNULL;
4239 generateMipmap = &glGenerateMipmapNULL;
4240 getBooleani_v = &glGetBooleani_vNULL;
4241 getFragDataLocation = &glGetFragDataLocationNULL;
4242 getFramebufferAttachmentParameteriv = &glGetFramebufferAttachmentParameterivNULL;
4243 getIntegeri_v = &glGetIntegeri_vNULL;
4244 getRenderbufferParameteriv = &glGetRenderbufferParameterivNULL;
4245 getStringi = &glGetStringiNULL;
4246 getTexParameterIiv = &glGetTexParameterIivNULL;
4247 getTexParameterIuiv = &glGetTexParameterIuivNULL;
4248 getTransformFeedbackVarying = &glGetTransformFeedbackVaryingNULL;
4249 getUniformuiv = &glGetUniformuivNULL;
4250 getVertexAttribIiv = &glGetVertexAttribIivNULL;
4251 getVertexAttribIuiv = &glGetVertexAttribIuivNULL;
4252 isEnabledi = &glIsEnablediNULL;
4253 isFramebuffer = &glIsFramebufferNULL;
4254 isRenderbuffer = &glIsRenderbufferNULL;
4255 isVertexArray = &glIsVertexArrayNULL;
4256 mapBufferRange = &glMapBufferRangeNULL;
4257 renderbufferStorage = &glRenderbufferStorageNULL;
4258 renderbufferStorageMultisample = &glRenderbufferStorageMultisampleNULL;
4259 texParameterIiv = &glTexParameterIivNULL;
4260 texParameterIuiv = &glTexParameterIuivNULL;
4261 transformFeedbackVaryings = &glTransformFeedbackVaryingsNULL;
4262 uniform1ui = &glUniform1uiNULL;
4263 uniform1uiv = &glUniform1uivNULL;
4264 uniform2ui = &glUniform2uiNULL;
4265 uniform2uiv = &glUniform2uivNULL;
4266 uniform3ui = &glUniform3uiNULL;
4267 uniform3uiv = &glUniform3uivNULL;
4268 uniform4ui = &glUniform4uiNULL;
4269 uniform4uiv = &glUniform4uivNULL;
4270 vertexAttribI1i = &glVertexAttribI1iNULL;
4271 vertexAttribI1iv = &glVertexAttribI1ivNULL;
4272 vertexAttribI1ui = &glVertexAttribI1uiNULL;
4273 vertexAttribI1uiv = &glVertexAttribI1uivNULL;
4274 vertexAttribI2i = &glVertexAttribI2iNULL;
4275 vertexAttribI2iv = &glVertexAttribI2ivNULL;
4276 vertexAttribI2ui = &glVertexAttribI2uiNULL;
4277 vertexAttribI2uiv = &glVertexAttribI2uivNULL;
4278 vertexAttribI3i = &glVertexAttribI3iNULL;
4279 vertexAttribI3iv = &glVertexAttribI3ivNULL;
4280 vertexAttribI3ui = &glVertexAttribI3uiNULL;
4281 vertexAttribI3uiv = &glVertexAttribI3uivNULL;
4282 vertexAttribI4bv = &glVertexAttribI4bvNULL;
4283 vertexAttribI4i = &glVertexAttribI4iNULL;
4284 vertexAttribI4iv = &glVertexAttribI4ivNULL;
4285 vertexAttribI4sv = &glVertexAttribI4svNULL;
4286 vertexAttribI4ubv = &glVertexAttribI4ubvNULL;
4287 vertexAttribI4ui = &glVertexAttribI4uiNULL;
4288 vertexAttribI4uiv = &glVertexAttribI4uivNULL;
4289 vertexAttribI4usv = &glVertexAttribI4usvNULL;
4290 vertexAttribIPointer = &glVertexAttribIPointerNULL;
4291 }
4292
4293 if (version >= gl::Version(3, 1))
4294 {
4295 copyBufferSubData = &glCopyBufferSubDataNULL;
4296 drawArraysInstanced = &glDrawArraysInstancedNULL;
4297 drawElementsInstanced = &glDrawElementsInstancedNULL;
4298 getActiveUniformBlockName = &glGetActiveUniformBlockNameNULL;
4299 getActiveUniformBlockiv = &glGetActiveUniformBlockivNULL;
4300 getActiveUniformName = &glGetActiveUniformNameNULL;
4301 getActiveUniformsiv = &glGetActiveUniformsivNULL;
4302 getUniformBlockIndex = &glGetUniformBlockIndexNULL;
4303 getUniformIndices = &glGetUniformIndicesNULL;
4304 primitiveRestartIndex = &glPrimitiveRestartIndexNULL;
4305 texBuffer = &glTexBufferNULL;
4306 uniformBlockBinding = &glUniformBlockBindingNULL;
4307 }
4308
4309 if (version >= gl::Version(3, 2))
4310 {
4311 clientWaitSync = &glClientWaitSyncNULL;
4312 deleteSync = &glDeleteSyncNULL;
4313 drawElementsBaseVertex = &glDrawElementsBaseVertexNULL;
4314 drawElementsInstancedBaseVertex = &glDrawElementsInstancedBaseVertexNULL;
4315 drawRangeElementsBaseVertex = &glDrawRangeElementsBaseVertexNULL;
4316 fenceSync = &glFenceSyncNULL;
4317 framebufferTexture = &glFramebufferTextureNULL;
4318 getBufferParameteri64v = &glGetBufferParameteri64vNULL;
4319 getInteger64i_v = &glGetInteger64i_vNULL;
4320 getInteger64v = &glGetInteger64vNULL;
4321 getMultisamplefv = &glGetMultisamplefvNULL;
4322 getSynciv = &glGetSyncivNULL;
4323 isSync = &glIsSyncNULL;
4324 multiDrawElementsBaseVertex = &glMultiDrawElementsBaseVertexNULL;
4325 provokingVertex = &glProvokingVertexNULL;
4326 sampleMaski = &glSampleMaskiNULL;
4327 texImage2DMultisample = &glTexImage2DMultisampleNULL;
4328 texImage3DMultisample = &glTexImage3DMultisampleNULL;
4329 waitSync = &glWaitSyncNULL;
4330 }
4331
4332 if (version >= gl::Version(3, 3))
4333 {
4334 bindFragDataLocationIndexed = &glBindFragDataLocationIndexedNULL;
4335 bindSampler = &glBindSamplerNULL;
4336 deleteSamplers = &glDeleteSamplersNULL;
4337 genSamplers = &glGenSamplersNULL;
4338 getFragDataIndex = &glGetFragDataIndexNULL;
4339 getQueryObjecti64v = &glGetQueryObjecti64vNULL;
4340 getQueryObjectui64v = &glGetQueryObjectui64vNULL;
4341 getSamplerParameterIiv = &glGetSamplerParameterIivNULL;
4342 getSamplerParameterIuiv = &glGetSamplerParameterIuivNULL;
4343 getSamplerParameterfv = &glGetSamplerParameterfvNULL;
4344 getSamplerParameteriv = &glGetSamplerParameterivNULL;
4345 isSampler = &glIsSamplerNULL;
4346 queryCounter = &glQueryCounterNULL;
4347 samplerParameterIiv = &glSamplerParameterIivNULL;
4348 samplerParameterIuiv = &glSamplerParameterIuivNULL;
4349 samplerParameterf = &glSamplerParameterfNULL;
4350 samplerParameterfv = &glSamplerParameterfvNULL;
4351 samplerParameteri = &glSamplerParameteriNULL;
4352 samplerParameteriv = &glSamplerParameterivNULL;
4353 vertexAttribDivisor = &glVertexAttribDivisorNULL;
4354 vertexAttribP1ui = &glVertexAttribP1uiNULL;
4355 vertexAttribP1uiv = &glVertexAttribP1uivNULL;
4356 vertexAttribP2ui = &glVertexAttribP2uiNULL;
4357 vertexAttribP2uiv = &glVertexAttribP2uivNULL;
4358 vertexAttribP3ui = &glVertexAttribP3uiNULL;
4359 vertexAttribP3uiv = &glVertexAttribP3uivNULL;
4360 vertexAttribP4ui = &glVertexAttribP4uiNULL;
4361 vertexAttribP4uiv = &glVertexAttribP4uivNULL;
4362 }
4363
4364 if (version >= gl::Version(4, 0))
4365 {
4366 beginQueryIndexed = &glBeginQueryIndexedNULL;
4367 bindTransformFeedback = &glBindTransformFeedbackNULL;
4368 blendEquationSeparatei = &glBlendEquationSeparateiNULL;
4369 blendEquationi = &glBlendEquationiNULL;
4370 blendFuncSeparatei = &glBlendFuncSeparateiNULL;
4371 blendFunci = &glBlendFunciNULL;
4372 deleteTransformFeedbacks = &glDeleteTransformFeedbacksNULL;
4373 drawArraysIndirect = &glDrawArraysIndirectNULL;
4374 drawElementsIndirect = &glDrawElementsIndirectNULL;
4375 drawTransformFeedback = &glDrawTransformFeedbackNULL;
4376 drawTransformFeedbackStream = &glDrawTransformFeedbackStreamNULL;
4377 endQueryIndexed = &glEndQueryIndexedNULL;
4378 genTransformFeedbacks = &glGenTransformFeedbacksNULL;
4379 getActiveSubroutineName = &glGetActiveSubroutineNameNULL;
4380 getActiveSubroutineUniformName = &glGetActiveSubroutineUniformNameNULL;
4381 getActiveSubroutineUniformiv = &glGetActiveSubroutineUniformivNULL;
4382 getProgramStageiv = &glGetProgramStageivNULL;
4383 getQueryIndexediv = &glGetQueryIndexedivNULL;
4384 getSubroutineIndex = &glGetSubroutineIndexNULL;
4385 getSubroutineUniformLocation = &glGetSubroutineUniformLocationNULL;
4386 getUniformSubroutineuiv = &glGetUniformSubroutineuivNULL;
4387 getUniformdv = &glGetUniformdvNULL;
4388 isTransformFeedback = &glIsTransformFeedbackNULL;
4389 minSampleShading = &glMinSampleShadingNULL;
4390 patchParameterfv = &glPatchParameterfvNULL;
4391 patchParameteri = &glPatchParameteriNULL;
4392 pauseTransformFeedback = &glPauseTransformFeedbackNULL;
4393 resumeTransformFeedback = &glResumeTransformFeedbackNULL;
4394 uniform1d = &glUniform1dNULL;
4395 uniform1dv = &glUniform1dvNULL;
4396 uniform2d = &glUniform2dNULL;
4397 uniform2dv = &glUniform2dvNULL;
4398 uniform3d = &glUniform3dNULL;
4399 uniform3dv = &glUniform3dvNULL;
4400 uniform4d = &glUniform4dNULL;
4401 uniform4dv = &glUniform4dvNULL;
4402 uniformMatrix2dv = &glUniformMatrix2dvNULL;
4403 uniformMatrix2x3dv = &glUniformMatrix2x3dvNULL;
4404 uniformMatrix2x4dv = &glUniformMatrix2x4dvNULL;
4405 uniformMatrix3dv = &glUniformMatrix3dvNULL;
4406 uniformMatrix3x2dv = &glUniformMatrix3x2dvNULL;
4407 uniformMatrix3x4dv = &glUniformMatrix3x4dvNULL;
4408 uniformMatrix4dv = &glUniformMatrix4dvNULL;
4409 uniformMatrix4x2dv = &glUniformMatrix4x2dvNULL;
4410 uniformMatrix4x3dv = &glUniformMatrix4x3dvNULL;
4411 uniformSubroutinesuiv = &glUniformSubroutinesuivNULL;
4412 }
4413
4414 if (version >= gl::Version(4, 1))
4415 {
4416 activeShaderProgram = &glActiveShaderProgramNULL;
4417 bindProgramPipeline = &glBindProgramPipelineNULL;
4418 clearDepthf = &glClearDepthfNULL;
4419 createShaderProgramv = &glCreateShaderProgramvNULL;
4420 deleteProgramPipelines = &glDeleteProgramPipelinesNULL;
4421 depthRangeArrayv = &glDepthRangeArrayvNULL;
4422 depthRangeIndexed = &glDepthRangeIndexedNULL;
4423 depthRangef = &glDepthRangefNULL;
4424 genProgramPipelines = &glGenProgramPipelinesNULL;
4425 getDoublei_v = &glGetDoublei_vNULL;
4426 getFloati_v = &glGetFloati_vNULL;
4427 getProgramBinary = &glGetProgramBinaryNULL;
4428 getProgramPipelineInfoLog = &glGetProgramPipelineInfoLogNULL;
4429 getProgramPipelineiv = &glGetProgramPipelineivNULL;
4430 getShaderPrecisionFormat = &glGetShaderPrecisionFormatNULL;
4431 getVertexAttribLdv = &glGetVertexAttribLdvNULL;
4432 isProgramPipeline = &glIsProgramPipelineNULL;
4433 programBinary = &glProgramBinaryNULL;
4434 programParameteri = &glProgramParameteriNULL;
4435 programUniform1d = &glProgramUniform1dNULL;
4436 programUniform1dv = &glProgramUniform1dvNULL;
4437 programUniform1f = &glProgramUniform1fNULL;
4438 programUniform1fv = &glProgramUniform1fvNULL;
4439 programUniform1i = &glProgramUniform1iNULL;
4440 programUniform1iv = &glProgramUniform1ivNULL;
4441 programUniform1ui = &glProgramUniform1uiNULL;
4442 programUniform1uiv = &glProgramUniform1uivNULL;
4443 programUniform2d = &glProgramUniform2dNULL;
4444 programUniform2dv = &glProgramUniform2dvNULL;
4445 programUniform2f = &glProgramUniform2fNULL;
4446 programUniform2fv = &glProgramUniform2fvNULL;
4447 programUniform2i = &glProgramUniform2iNULL;
4448 programUniform2iv = &glProgramUniform2ivNULL;
4449 programUniform2ui = &glProgramUniform2uiNULL;
4450 programUniform2uiv = &glProgramUniform2uivNULL;
4451 programUniform3d = &glProgramUniform3dNULL;
4452 programUniform3dv = &glProgramUniform3dvNULL;
4453 programUniform3f = &glProgramUniform3fNULL;
4454 programUniform3fv = &glProgramUniform3fvNULL;
4455 programUniform3i = &glProgramUniform3iNULL;
4456 programUniform3iv = &glProgramUniform3ivNULL;
4457 programUniform3ui = &glProgramUniform3uiNULL;
4458 programUniform3uiv = &glProgramUniform3uivNULL;
4459 programUniform4d = &glProgramUniform4dNULL;
4460 programUniform4dv = &glProgramUniform4dvNULL;
4461 programUniform4f = &glProgramUniform4fNULL;
4462 programUniform4fv = &glProgramUniform4fvNULL;
4463 programUniform4i = &glProgramUniform4iNULL;
4464 programUniform4iv = &glProgramUniform4ivNULL;
4465 programUniform4ui = &glProgramUniform4uiNULL;
4466 programUniform4uiv = &glProgramUniform4uivNULL;
4467 programUniformMatrix2dv = &glProgramUniformMatrix2dvNULL;
4468 programUniformMatrix2fv = &glProgramUniformMatrix2fvNULL;
4469 programUniformMatrix2x3dv = &glProgramUniformMatrix2x3dvNULL;
4470 programUniformMatrix2x3fv = &glProgramUniformMatrix2x3fvNULL;
4471 programUniformMatrix2x4dv = &glProgramUniformMatrix2x4dvNULL;
4472 programUniformMatrix2x4fv = &glProgramUniformMatrix2x4fvNULL;
4473 programUniformMatrix3dv = &glProgramUniformMatrix3dvNULL;
4474 programUniformMatrix3fv = &glProgramUniformMatrix3fvNULL;
4475 programUniformMatrix3x2dv = &glProgramUniformMatrix3x2dvNULL;
4476 programUniformMatrix3x2fv = &glProgramUniformMatrix3x2fvNULL;
4477 programUniformMatrix3x4dv = &glProgramUniformMatrix3x4dvNULL;
4478 programUniformMatrix3x4fv = &glProgramUniformMatrix3x4fvNULL;
4479 programUniformMatrix4dv = &glProgramUniformMatrix4dvNULL;
4480 programUniformMatrix4fv = &glProgramUniformMatrix4fvNULL;
4481 programUniformMatrix4x2dv = &glProgramUniformMatrix4x2dvNULL;
4482 programUniformMatrix4x2fv = &glProgramUniformMatrix4x2fvNULL;
4483 programUniformMatrix4x3dv = &glProgramUniformMatrix4x3dvNULL;
4484 programUniformMatrix4x3fv = &glProgramUniformMatrix4x3fvNULL;
4485 releaseShaderCompiler = &glReleaseShaderCompilerNULL;
4486 scissorArrayv = &glScissorArrayvNULL;
4487 scissorIndexed = &glScissorIndexedNULL;
4488 scissorIndexedv = &glScissorIndexedvNULL;
4489 shaderBinary = &glShaderBinaryNULL;
4490 useProgramStages = &glUseProgramStagesNULL;
4491 validateProgramPipeline = &glValidateProgramPipelineNULL;
4492 vertexAttribL1d = &glVertexAttribL1dNULL;
4493 vertexAttribL1dv = &glVertexAttribL1dvNULL;
4494 vertexAttribL2d = &glVertexAttribL2dNULL;
4495 vertexAttribL2dv = &glVertexAttribL2dvNULL;
4496 vertexAttribL3d = &glVertexAttribL3dNULL;
4497 vertexAttribL3dv = &glVertexAttribL3dvNULL;
4498 vertexAttribL4d = &glVertexAttribL4dNULL;
4499 vertexAttribL4dv = &glVertexAttribL4dvNULL;
4500 vertexAttribLPointer = &glVertexAttribLPointerNULL;
4501 viewportArrayv = &glViewportArrayvNULL;
4502 viewportIndexedf = &glViewportIndexedfNULL;
4503 viewportIndexedfv = &glViewportIndexedfvNULL;
4504 }
4505
4506 if (version >= gl::Version(4, 2))
4507 {
4508 bindImageTexture = &glBindImageTextureNULL;
4509 drawArraysInstancedBaseInstance = &glDrawArraysInstancedBaseInstanceNULL;
4510 drawElementsInstancedBaseInstance = &glDrawElementsInstancedBaseInstanceNULL;
4511 drawElementsInstancedBaseVertexBaseInstance =
4512 &glDrawElementsInstancedBaseVertexBaseInstanceNULL;
4513 drawTransformFeedbackInstanced = &glDrawTransformFeedbackInstancedNULL;
4514 drawTransformFeedbackStreamInstanced = &glDrawTransformFeedbackStreamInstancedNULL;
4515 getActiveAtomicCounterBufferiv = &glGetActiveAtomicCounterBufferivNULL;
4516 getInternalformativ = &glGetInternalformativNULL;
4517 memoryBarrier = &glMemoryBarrierNULL;
4518 texStorage1D = &glTexStorage1DNULL;
4519 texStorage2D = &glTexStorage2DNULL;
4520 texStorage3D = &glTexStorage3DNULL;
4521 }
4522
4523 if (version >= gl::Version(4, 3))
4524 {
4525 bindVertexBuffer = &glBindVertexBufferNULL;
4526 clearBufferData = &glClearBufferDataNULL;
4527 clearBufferSubData = &glClearBufferSubDataNULL;
4528 copyImageSubData = &glCopyImageSubDataNULL;
4529 debugMessageCallback = &glDebugMessageCallbackNULL;
4530 debugMessageControl = &glDebugMessageControlNULL;
4531 debugMessageInsert = &glDebugMessageInsertNULL;
4532 dispatchCompute = &glDispatchComputeNULL;
4533 dispatchComputeIndirect = &glDispatchComputeIndirectNULL;
4534 framebufferParameteri = &glFramebufferParameteriNULL;
4535 getDebugMessageLog = &glGetDebugMessageLogNULL;
4536 getFramebufferParameteriv = &glGetFramebufferParameterivNULL;
4537 getInternalformati64v = &glGetInternalformati64vNULL;
4538 getObjectLabel = &glGetObjectLabelNULL;
4539 getObjectPtrLabel = &glGetObjectPtrLabelNULL;
4540 getPointerv = &glGetPointervNULL;
4541 getProgramInterfaceiv = &glGetProgramInterfaceivNULL;
4542 getProgramResourceIndex = &glGetProgramResourceIndexNULL;
4543 getProgramResourceLocation = &glGetProgramResourceLocationNULL;
4544 getProgramResourceLocationIndex = &glGetProgramResourceLocationIndexNULL;
4545 getProgramResourceName = &glGetProgramResourceNameNULL;
4546 getProgramResourceiv = &glGetProgramResourceivNULL;
4547 invalidateBufferData = &glInvalidateBufferDataNULL;
4548 invalidateBufferSubData = &glInvalidateBufferSubDataNULL;
4549 invalidateFramebuffer = &glInvalidateFramebufferNULL;
4550 invalidateSubFramebuffer = &glInvalidateSubFramebufferNULL;
4551 invalidateTexImage = &glInvalidateTexImageNULL;
4552 invalidateTexSubImage = &glInvalidateTexSubImageNULL;
4553 multiDrawArraysIndirect = &glMultiDrawArraysIndirectNULL;
4554 multiDrawElementsIndirect = &glMultiDrawElementsIndirectNULL;
4555 objectLabel = &glObjectLabelNULL;
4556 objectPtrLabel = &glObjectPtrLabelNULL;
4557 popDebugGroup = &glPopDebugGroupNULL;
4558 pushDebugGroup = &glPushDebugGroupNULL;
4559 shaderStorageBlockBinding = &glShaderStorageBlockBindingNULL;
4560 texBufferRange = &glTexBufferRangeNULL;
4561 texStorage2DMultisample = &glTexStorage2DMultisampleNULL;
4562 texStorage3DMultisample = &glTexStorage3DMultisampleNULL;
4563 textureView = &glTextureViewNULL;
4564 vertexAttribBinding = &glVertexAttribBindingNULL;
4565 vertexAttribFormat = &glVertexAttribFormatNULL;
4566 vertexAttribIFormat = &glVertexAttribIFormatNULL;
4567 vertexAttribLFormat = &glVertexAttribLFormatNULL;
4568 vertexBindingDivisor = &glVertexBindingDivisorNULL;
4569 }
4570
4571 if (version >= gl::Version(4, 4))
4572 {
4573 bindBuffersBase = &glBindBuffersBaseNULL;
4574 bindBuffersRange = &glBindBuffersRangeNULL;
4575 bindImageTextures = &glBindImageTexturesNULL;
4576 bindSamplers = &glBindSamplersNULL;
4577 bindTextures = &glBindTexturesNULL;
4578 bindVertexBuffers = &glBindVertexBuffersNULL;
4579 bufferStorage = &glBufferStorageNULL;
4580 clearTexImage = &glClearTexImageNULL;
4581 clearTexSubImage = &glClearTexSubImageNULL;
4582 }
4583
4584 if (version >= gl::Version(4, 5))
4585 {
4586 bindTextureUnit = &glBindTextureUnitNULL;
4587 blitNamedFramebuffer = &glBlitNamedFramebufferNULL;
4588 checkNamedFramebufferStatus = &glCheckNamedFramebufferStatusNULL;
4589 clearNamedBufferData = &glClearNamedBufferDataNULL;
4590 clearNamedBufferSubData = &glClearNamedBufferSubDataNULL;
4591 clearNamedFramebufferfi = &glClearNamedFramebufferfiNULL;
4592 clearNamedFramebufferfv = &glClearNamedFramebufferfvNULL;
4593 clearNamedFramebufferiv = &glClearNamedFramebufferivNULL;
4594 clearNamedFramebufferuiv = &glClearNamedFramebufferuivNULL;
4595 clipControl = &glClipControlNULL;
4596 compressedTextureSubImage1D = &glCompressedTextureSubImage1DNULL;
4597 compressedTextureSubImage2D = &glCompressedTextureSubImage2DNULL;
4598 compressedTextureSubImage3D = &glCompressedTextureSubImage3DNULL;
4599 copyNamedBufferSubData = &glCopyNamedBufferSubDataNULL;
4600 copyTextureSubImage1D = &glCopyTextureSubImage1DNULL;
4601 copyTextureSubImage2D = &glCopyTextureSubImage2DNULL;
4602 copyTextureSubImage3D = &glCopyTextureSubImage3DNULL;
4603 createBuffers = &glCreateBuffersNULL;
4604 createFramebuffers = &glCreateFramebuffersNULL;
4605 createProgramPipelines = &glCreateProgramPipelinesNULL;
4606 createQueries = &glCreateQueriesNULL;
4607 createRenderbuffers = &glCreateRenderbuffersNULL;
4608 createSamplers = &glCreateSamplersNULL;
4609 createTextures = &glCreateTexturesNULL;
4610 createTransformFeedbacks = &glCreateTransformFeedbacksNULL;
4611 createVertexArrays = &glCreateVertexArraysNULL;
4612 disableVertexArrayAttrib = &glDisableVertexArrayAttribNULL;
4613 enableVertexArrayAttrib = &glEnableVertexArrayAttribNULL;
4614 flushMappedNamedBufferRange = &glFlushMappedNamedBufferRangeNULL;
4615 generateTextureMipmap = &glGenerateTextureMipmapNULL;
4616 getCompressedTextureImage = &glGetCompressedTextureImageNULL;
4617 getCompressedTextureSubImage = &glGetCompressedTextureSubImageNULL;
4618 getGraphicsResetStatus = &glGetGraphicsResetStatusNULL;
4619 getNamedBufferParameteri64v = &glGetNamedBufferParameteri64vNULL;
4620 getNamedBufferParameteriv = &glGetNamedBufferParameterivNULL;
4621 getNamedBufferPointerv = &glGetNamedBufferPointervNULL;
4622 getNamedBufferSubData = &glGetNamedBufferSubDataNULL;
4623 getNamedFramebufferAttachmentParameteriv = &glGetNamedFramebufferAttachmentParameterivNULL;
4624 getNamedFramebufferParameteriv = &glGetNamedFramebufferParameterivNULL;
4625 getNamedRenderbufferParameteriv = &glGetNamedRenderbufferParameterivNULL;
4626 getQueryBufferObjecti64v = &glGetQueryBufferObjecti64vNULL;
4627 getQueryBufferObjectiv = &glGetQueryBufferObjectivNULL;
4628 getQueryBufferObjectui64v = &glGetQueryBufferObjectui64vNULL;
4629 getQueryBufferObjectuiv = &glGetQueryBufferObjectuivNULL;
4630 getTextureImage = &glGetTextureImageNULL;
4631 getTextureLevelParameterfv = &glGetTextureLevelParameterfvNULL;
4632 getTextureLevelParameteriv = &glGetTextureLevelParameterivNULL;
4633 getTextureParameterIiv = &glGetTextureParameterIivNULL;
4634 getTextureParameterIuiv = &glGetTextureParameterIuivNULL;
4635 getTextureParameterfv = &glGetTextureParameterfvNULL;
4636 getTextureParameteriv = &glGetTextureParameterivNULL;
4637 getTextureSubImage = &glGetTextureSubImageNULL;
4638 getTransformFeedbacki64_v = &glGetTransformFeedbacki64_vNULL;
4639 getTransformFeedbacki_v = &glGetTransformFeedbacki_vNULL;
4640 getTransformFeedbackiv = &glGetTransformFeedbackivNULL;
4641 getVertexArrayIndexed64iv = &glGetVertexArrayIndexed64ivNULL;
4642 getVertexArrayIndexediv = &glGetVertexArrayIndexedivNULL;
4643 getVertexArrayiv = &glGetVertexArrayivNULL;
4644 getnCompressedTexImage = &glGetnCompressedTexImageNULL;
4645 getnTexImage = &glGetnTexImageNULL;
4646 getnUniformdv = &glGetnUniformdvNULL;
4647 getnUniformfv = &glGetnUniformfvNULL;
4648 getnUniformiv = &glGetnUniformivNULL;
4649 getnUniformuiv = &glGetnUniformuivNULL;
4650 invalidateNamedFramebufferData = &glInvalidateNamedFramebufferDataNULL;
4651 invalidateNamedFramebufferSubData = &glInvalidateNamedFramebufferSubDataNULL;
4652 mapNamedBuffer = &glMapNamedBufferNULL;
4653 mapNamedBufferRange = &glMapNamedBufferRangeNULL;
4654 memoryBarrierByRegion = &glMemoryBarrierByRegionNULL;
4655 namedBufferData = &glNamedBufferDataNULL;
4656 namedBufferStorage = &glNamedBufferStorageNULL;
4657 namedBufferSubData = &glNamedBufferSubDataNULL;
4658 namedFramebufferDrawBuffer = &glNamedFramebufferDrawBufferNULL;
4659 namedFramebufferDrawBuffers = &glNamedFramebufferDrawBuffersNULL;
4660 namedFramebufferParameteri = &glNamedFramebufferParameteriNULL;
4661 namedFramebufferReadBuffer = &glNamedFramebufferReadBufferNULL;
4662 namedFramebufferRenderbuffer = &glNamedFramebufferRenderbufferNULL;
4663 namedFramebufferTexture = &glNamedFramebufferTextureNULL;
4664 namedFramebufferTextureLayer = &glNamedFramebufferTextureLayerNULL;
4665 namedRenderbufferStorage = &glNamedRenderbufferStorageNULL;
4666 namedRenderbufferStorageMultisample = &glNamedRenderbufferStorageMultisampleNULL;
4667 readnPixels = &glReadnPixelsNULL;
4668 textureBarrier = &glTextureBarrierNULL;
4669 textureBuffer = &glTextureBufferNULL;
4670 textureBufferRange = &glTextureBufferRangeNULL;
4671 textureParameterIiv = &glTextureParameterIivNULL;
4672 textureParameterIuiv = &glTextureParameterIuivNULL;
4673 textureParameterf = &glTextureParameterfNULL;
4674 textureParameterfv = &glTextureParameterfvNULL;
4675 textureParameteri = &glTextureParameteriNULL;
4676 textureParameteriv = &glTextureParameterivNULL;
4677 textureStorage1D = &glTextureStorage1DNULL;
4678 textureStorage2D = &glTextureStorage2DNULL;
4679 textureStorage2DMultisample = &glTextureStorage2DMultisampleNULL;
4680 textureStorage3D = &glTextureStorage3DNULL;
4681 textureStorage3DMultisample = &glTextureStorage3DMultisampleNULL;
4682 textureSubImage1D = &glTextureSubImage1DNULL;
4683 textureSubImage2D = &glTextureSubImage2DNULL;
4684 textureSubImage3D = &glTextureSubImage3DNULL;
4685 transformFeedbackBufferBase = &glTransformFeedbackBufferBaseNULL;
4686 transformFeedbackBufferRange = &glTransformFeedbackBufferRangeNULL;
4687 unmapNamedBuffer = &glUnmapNamedBufferNULL;
4688 vertexArrayAttribBinding = &glVertexArrayAttribBindingNULL;
4689 vertexArrayAttribFormat = &glVertexArrayAttribFormatNULL;
4690 vertexArrayAttribIFormat = &glVertexArrayAttribIFormatNULL;
4691 vertexArrayAttribLFormat = &glVertexArrayAttribLFormatNULL;
4692 vertexArrayBindingDivisor = &glVertexArrayBindingDivisorNULL;
4693 vertexArrayElementBuffer = &glVertexArrayElementBufferNULL;
4694 vertexArrayVertexBuffer = &glVertexArrayVertexBufferNULL;
4695 vertexArrayVertexBuffers = &glVertexArrayVertexBuffersNULL;
4696 }
4697 # endif // defined(ANGLE_ENABLE_OPENGL_DESKTOP)
4698 }
4699
initProcsGLESNULL(const gl::Version & version,const std::set<std::string> & extensions)4700 void DispatchTableGL::initProcsGLESNULL(const gl::Version &version,
4701 const std::set<std::string> &extensions)
4702 {
4703 if (extensions.count("GL_EXT_base_instance") != 0)
4704 {
4705 drawArraysInstancedBaseInstance = &glDrawArraysInstancedBaseInstanceNULL;
4706 drawElementsInstancedBaseInstance = &glDrawElementsInstancedBaseInstanceNULL;
4707 drawElementsInstancedBaseVertexBaseInstance =
4708 &glDrawElementsInstancedBaseVertexBaseInstanceNULL;
4709 }
4710
4711 if (extensions.count("GL_EXT_blend_func_extended") != 0)
4712 {
4713 bindFragDataLocation = &glBindFragDataLocationNULL;
4714 bindFragDataLocationIndexed = &glBindFragDataLocationIndexedNULL;
4715 getFragDataIndex = &glGetFragDataIndexNULL;
4716 getProgramResourceLocationIndex = &glGetProgramResourceLocationIndexNULL;
4717 }
4718
4719 if (extensions.count("GL_EXT_buffer_storage") != 0)
4720 {
4721 bufferStorage = &glBufferStorageNULL;
4722 }
4723
4724 if (extensions.count("GL_EXT_clear_texture") != 0)
4725 {
4726 clearTexImage = &glClearTexImageNULL;
4727 clearTexSubImage = &glClearTexSubImageNULL;
4728 }
4729
4730 if (extensions.count("GL_EXT_clip_control") != 0)
4731 {
4732 clipControl = &glClipControlNULL;
4733 }
4734
4735 if (extensions.count("GL_EXT_copy_image") != 0)
4736 {
4737 copyImageSubData = &glCopyImageSubDataNULL;
4738 }
4739
4740 if (extensions.count("GL_EXT_discard_framebuffer") != 0)
4741 {
4742 discardFramebufferEXT = &glDiscardFramebufferEXTNULL;
4743 }
4744
4745 if (extensions.count("GL_EXT_disjoint_timer_query") != 0)
4746 {
4747 beginQuery = &glBeginQueryNULL;
4748 deleteQueries = &glDeleteQueriesNULL;
4749 endQuery = &glEndQueryNULL;
4750 genQueries = &glGenQueriesNULL;
4751 getInteger64v = &glGetInteger64vNULL;
4752 getQueryObjecti64v = &glGetQueryObjecti64vNULL;
4753 getQueryObjectiv = &glGetQueryObjectivNULL;
4754 getQueryObjectui64v = &glGetQueryObjectui64vNULL;
4755 getQueryObjectuiv = &glGetQueryObjectuivNULL;
4756 getQueryiv = &glGetQueryivNULL;
4757 isQuery = &glIsQueryNULL;
4758 queryCounter = &glQueryCounterNULL;
4759 }
4760
4761 if (extensions.count("GL_EXT_draw_buffers") != 0)
4762 {
4763 drawBuffers = &glDrawBuffersNULL;
4764 }
4765
4766 if (extensions.count("GL_EXT_draw_buffers_indexed") != 0)
4767 {
4768 blendEquationSeparatei = &glBlendEquationSeparateiNULL;
4769 blendEquationi = &glBlendEquationiNULL;
4770 blendFuncSeparatei = &glBlendFuncSeparateiNULL;
4771 blendFunci = &glBlendFunciNULL;
4772 colorMaski = &glColorMaskiNULL;
4773 disablei = &glDisableiNULL;
4774 enablei = &glEnableiNULL;
4775 isEnabledi = &glIsEnablediNULL;
4776 }
4777
4778 if (extensions.count("GL_EXT_draw_elements_base_vertex") != 0)
4779 {
4780 drawElementsBaseVertex = &glDrawElementsBaseVertexNULL;
4781 drawElementsInstancedBaseVertex = &glDrawElementsInstancedBaseVertexNULL;
4782 drawRangeElementsBaseVertex = &glDrawRangeElementsBaseVertexNULL;
4783 multiDrawElementsBaseVertex = &glMultiDrawElementsBaseVertexNULL;
4784 }
4785
4786 if (extensions.count("GL_EXT_draw_transform_feedback") != 0)
4787 {
4788 drawTransformFeedback = &glDrawTransformFeedbackNULL;
4789 drawTransformFeedbackInstanced = &glDrawTransformFeedbackInstancedNULL;
4790 }
4791
4792 if (extensions.count("GL_EXT_geometry_shader") != 0)
4793 {
4794 framebufferTexture = &glFramebufferTextureNULL;
4795 }
4796
4797 if (extensions.count("GL_EXT_instanced_arrays") != 0)
4798 {
4799 vertexAttribDivisor = &glVertexAttribDivisorNULL;
4800 }
4801
4802 if (extensions.count("GL_EXT_map_buffer_range") != 0)
4803 {
4804 flushMappedBufferRange = &glFlushMappedBufferRangeNULL;
4805 mapBufferRange = &glMapBufferRangeNULL;
4806 }
4807
4808 if (extensions.count("GL_EXT_multi_draw_indirect") != 0)
4809 {
4810 multiDrawArraysIndirect = &glMultiDrawArraysIndirectNULL;
4811 multiDrawElementsIndirect = &glMultiDrawElementsIndirectNULL;
4812 }
4813
4814 if (extensions.count("GL_EXT_multisampled_render_to_texture") != 0)
4815 {
4816 framebufferTexture2DMultisampleEXT = &glFramebufferTexture2DMultisampleEXTNULL;
4817 renderbufferStorageMultisample = &glRenderbufferStorageMultisampleNULL;
4818 renderbufferStorageMultisampleEXT = &glRenderbufferStorageMultisampleEXTNULL;
4819 }
4820
4821 if (extensions.count("GL_EXT_multiview_draw_buffers") != 0)
4822 {
4823 getIntegeri_v = &glGetIntegeri_vNULL;
4824 }
4825
4826 if (extensions.count("GL_EXT_occlusion_query_boolean") != 0)
4827 {
4828 beginQuery = &glBeginQueryNULL;
4829 deleteQueries = &glDeleteQueriesNULL;
4830 endQuery = &glEndQueryNULL;
4831 genQueries = &glGenQueriesNULL;
4832 getQueryObjectuiv = &glGetQueryObjectuivNULL;
4833 getQueryiv = &glGetQueryivNULL;
4834 isQuery = &glIsQueryNULL;
4835 }
4836
4837 if (extensions.count("GL_EXT_primitive_bounding_box") != 0)
4838 {
4839 primitiveBoundingBox = &glPrimitiveBoundingBoxNULL;
4840 }
4841
4842 if (extensions.count("GL_EXT_robustness") != 0)
4843 {
4844 getGraphicsResetStatus = &glGetGraphicsResetStatusNULL;
4845 getnUniformfv = &glGetnUniformfvNULL;
4846 getnUniformiv = &glGetnUniformivNULL;
4847 readnPixels = &glReadnPixelsNULL;
4848 }
4849
4850 if (extensions.count("GL_EXT_tessellation_shader") != 0)
4851 {
4852 patchParameteri = &glPatchParameteriNULL;
4853 }
4854
4855 if (extensions.count("GL_EXT_texture_border_clamp") != 0)
4856 {
4857 getSamplerParameterIiv = &glGetSamplerParameterIivNULL;
4858 getSamplerParameterIuiv = &glGetSamplerParameterIuivNULL;
4859 getTexParameterIiv = &glGetTexParameterIivNULL;
4860 getTexParameterIuiv = &glGetTexParameterIuivNULL;
4861 samplerParameterIiv = &glSamplerParameterIivNULL;
4862 samplerParameterIuiv = &glSamplerParameterIuivNULL;
4863 texParameterIiv = &glTexParameterIivNULL;
4864 texParameterIuiv = &glTexParameterIuivNULL;
4865 }
4866
4867 if (extensions.count("GL_EXT_texture_buffer") != 0)
4868 {
4869 texBuffer = &glTexBufferNULL;
4870 texBufferEXT = &glTexBufferEXTNULL;
4871 texBufferRange = &glTexBufferRangeNULL;
4872 texBufferRangeEXT = &glTexBufferRangeEXTNULL;
4873 }
4874
4875 if (extensions.count("GL_EXT_texture_storage") != 0)
4876 {
4877 texStorage1D = &glTexStorage1DNULL;
4878 texStorage2D = &glTexStorage2DNULL;
4879 texStorage3D = &glTexStorage3DNULL;
4880 textureStorage1D = &glTextureStorage1DNULL;
4881 textureStorage2D = &glTextureStorage2DNULL;
4882 textureStorage3D = &glTextureStorage3DNULL;
4883 }
4884
4885 if (extensions.count("GL_EXT_texture_view") != 0)
4886 {
4887 textureView = &glTextureViewNULL;
4888 }
4889
4890 if (extensions.count("GL_IMG_multisampled_render_to_texture") != 0)
4891 {
4892 framebufferTexture2DMultisampleIMG = &glFramebufferTexture2DMultisampleIMGNULL;
4893 renderbufferStorageMultisampleIMG = &glRenderbufferStorageMultisampleIMGNULL;
4894 }
4895
4896 if (extensions.count("GL_KHR_debug") != 0)
4897 {
4898 debugMessageCallback = &glDebugMessageCallbackNULL;
4899 debugMessageControl = &glDebugMessageControlNULL;
4900 debugMessageInsert = &glDebugMessageInsertNULL;
4901 getDebugMessageLog = &glGetDebugMessageLogNULL;
4902 getObjectLabel = &glGetObjectLabelNULL;
4903 getObjectPtrLabel = &glGetObjectPtrLabelNULL;
4904 getPointerv = &glGetPointervNULL;
4905 objectLabel = &glObjectLabelNULL;
4906 objectPtrLabel = &glObjectPtrLabelNULL;
4907 popDebugGroup = &glPopDebugGroupNULL;
4908 pushDebugGroup = &glPushDebugGroupNULL;
4909 }
4910
4911 if (extensions.count("GL_KHR_robustness") != 0)
4912 {
4913 getGraphicsResetStatus = &glGetGraphicsResetStatusNULL;
4914 getnUniformfv = &glGetnUniformfvNULL;
4915 getnUniformiv = &glGetnUniformivNULL;
4916 getnUniformuiv = &glGetnUniformuivNULL;
4917 readnPixels = &glReadnPixelsNULL;
4918 }
4919
4920 if (extensions.count("GL_NV_framebuffer_blit") != 0)
4921 {
4922 blitFramebufferNV = &glBlitFramebufferNVNULL;
4923 }
4924
4925 if (extensions.count("GL_OES_EGL_image") != 0)
4926 {
4927 eGLImageTargetRenderbufferStorageOES = &glEGLImageTargetRenderbufferStorageOESNULL;
4928 eGLImageTargetTexture2DOES = &glEGLImageTargetTexture2DOESNULL;
4929 }
4930
4931 if (extensions.count("GL_OES_copy_image") != 0)
4932 {
4933 copyImageSubData = &glCopyImageSubDataNULL;
4934 }
4935
4936 if (extensions.count("GL_OES_draw_buffers_indexed") != 0)
4937 {
4938 blendEquationSeparatei = &glBlendEquationSeparateiNULL;
4939 blendEquationi = &glBlendEquationiNULL;
4940 blendFuncSeparatei = &glBlendFuncSeparateiNULL;
4941 blendFunci = &glBlendFunciNULL;
4942 colorMaski = &glColorMaskiNULL;
4943 disablei = &glDisableiNULL;
4944 enablei = &glEnableiNULL;
4945 isEnabledi = &glIsEnablediNULL;
4946 }
4947
4948 if (extensions.count("GL_OES_draw_elements_base_vertex") != 0)
4949 {
4950 drawElementsBaseVertex = &glDrawElementsBaseVertexNULL;
4951 drawElementsInstancedBaseVertex = &glDrawElementsInstancedBaseVertexNULL;
4952 drawRangeElementsBaseVertex = &glDrawRangeElementsBaseVertexNULL;
4953 multiDrawElementsBaseVertex = &glMultiDrawElementsBaseVertexNULL;
4954 }
4955
4956 if (extensions.count("GL_OES_geometry_shader") != 0)
4957 {
4958 framebufferTexture = &glFramebufferTextureNULL;
4959 }
4960
4961 if (extensions.count("GL_OES_get_program_binary") != 0)
4962 {
4963 getProgramBinary = &glGetProgramBinaryNULL;
4964 programBinary = &glProgramBinaryNULL;
4965 }
4966
4967 if (extensions.count("GL_OES_mapbuffer") != 0)
4968 {
4969 getBufferPointerv = &glGetBufferPointervNULL;
4970 mapBuffer = &glMapBufferNULL;
4971 unmapBuffer = &glUnmapBufferNULL;
4972 }
4973
4974 if (extensions.count("GL_OES_primitive_bounding_box") != 0)
4975 {
4976 primitiveBoundingBox = &glPrimitiveBoundingBoxNULL;
4977 }
4978
4979 if (extensions.count("GL_OES_sample_shading") != 0)
4980 {
4981 minSampleShading = &glMinSampleShadingNULL;
4982 }
4983
4984 if (extensions.count("GL_OES_tessellation_shader") != 0)
4985 {
4986 patchParameteri = &glPatchParameteriNULL;
4987 }
4988
4989 if (extensions.count("GL_OES_texture_3D") != 0)
4990 {
4991 compressedTexImage3D = &glCompressedTexImage3DNULL;
4992 compressedTexSubImage3D = &glCompressedTexSubImage3DNULL;
4993 copyTexSubImage3D = &glCopyTexSubImage3DNULL;
4994 framebufferTexture3D = &glFramebufferTexture3DNULL;
4995 texImage3D = &glTexImage3DNULL;
4996 texSubImage3D = &glTexSubImage3DNULL;
4997 }
4998
4999 if (extensions.count("GL_OES_texture_border_clamp") != 0)
5000 {
5001 getSamplerParameterIiv = &glGetSamplerParameterIivNULL;
5002 getSamplerParameterIuiv = &glGetSamplerParameterIuivNULL;
5003 getTexParameterIiv = &glGetTexParameterIivNULL;
5004 getTexParameterIuiv = &glGetTexParameterIuivNULL;
5005 samplerParameterIiv = &glSamplerParameterIivNULL;
5006 samplerParameterIuiv = &glSamplerParameterIuivNULL;
5007 texParameterIiv = &glTexParameterIivNULL;
5008 texParameterIuiv = &glTexParameterIuivNULL;
5009 }
5010
5011 if (extensions.count("GL_OES_texture_buffer") != 0)
5012 {
5013 texBuffer = &glTexBufferNULL;
5014 texBufferOES = &glTexBufferOESNULL;
5015 texBufferRange = &glTexBufferRangeNULL;
5016 texBufferRangeOES = &glTexBufferRangeOESNULL;
5017 }
5018
5019 if (extensions.count("GL_OES_texture_storage_multisample_2d_array") != 0)
5020 {
5021 texStorage3DMultisample = &glTexStorage3DMultisampleNULL;
5022 }
5023
5024 if (extensions.count("GL_OES_texture_view") != 0)
5025 {
5026 textureView = &glTextureViewNULL;
5027 }
5028
5029 if (extensions.count("GL_OES_vertex_array_object") != 0)
5030 {
5031 bindVertexArray = &glBindVertexArrayNULL;
5032 deleteVertexArrays = &glDeleteVertexArraysNULL;
5033 genVertexArrays = &glGenVertexArraysNULL;
5034 isVertexArray = &glIsVertexArrayNULL;
5035 }
5036
5037 if (extensions.count("GL_OES_viewport_array") != 0)
5038 {
5039 disablei = &glDisableiNULL;
5040 enablei = &glEnableiNULL;
5041 getFloati_v = &glGetFloati_vNULL;
5042 isEnabledi = &glIsEnablediNULL;
5043 scissorArrayv = &glScissorArrayvNULL;
5044 scissorIndexed = &glScissorIndexedNULL;
5045 scissorIndexedv = &glScissorIndexedvNULL;
5046 viewportArrayv = &glViewportArrayvNULL;
5047 viewportIndexedf = &glViewportIndexedfNULL;
5048 viewportIndexedfv = &glViewportIndexedfvNULL;
5049 }
5050
5051 if (version >= gl::Version(2, 0))
5052 {
5053 activeTexture = &glActiveTextureNULL;
5054 attachShader = &glAttachShaderNULL;
5055 bindAttribLocation = &glBindAttribLocationNULL;
5056 bindBuffer = &glBindBufferNULL;
5057 bindFramebuffer = &glBindFramebufferNULL;
5058 bindRenderbuffer = &glBindRenderbufferNULL;
5059 bindTexture = &glBindTextureNULL;
5060 blendColor = &glBlendColorNULL;
5061 blendEquation = &glBlendEquationNULL;
5062 blendEquationSeparate = &glBlendEquationSeparateNULL;
5063 blendFunc = &glBlendFuncNULL;
5064 blendFuncSeparate = &glBlendFuncSeparateNULL;
5065 bufferData = &glBufferDataNULL;
5066 bufferSubData = &glBufferSubDataNULL;
5067 checkFramebufferStatus = &glCheckFramebufferStatusNULL;
5068 clear = &glClearNULL;
5069 clearColor = &glClearColorNULL;
5070 clearDepthf = &glClearDepthfNULL;
5071 clearStencil = &glClearStencilNULL;
5072 colorMask = &glColorMaskNULL;
5073 compileShader = &glCompileShaderNULL;
5074 compressedTexImage2D = &glCompressedTexImage2DNULL;
5075 compressedTexSubImage2D = &glCompressedTexSubImage2DNULL;
5076 copyTexImage2D = &glCopyTexImage2DNULL;
5077 copyTexSubImage2D = &glCopyTexSubImage2DNULL;
5078 createProgram = &glCreateProgramNULL;
5079 createShader = &glCreateShaderNULL;
5080 cullFace = &glCullFaceNULL;
5081 deleteBuffers = &glDeleteBuffersNULL;
5082 deleteFramebuffers = &glDeleteFramebuffersNULL;
5083 deleteProgram = &glDeleteProgramNULL;
5084 deleteRenderbuffers = &glDeleteRenderbuffersNULL;
5085 deleteShader = &glDeleteShaderNULL;
5086 deleteTextures = &glDeleteTexturesNULL;
5087 depthFunc = &glDepthFuncNULL;
5088 depthMask = &glDepthMaskNULL;
5089 depthRangef = &glDepthRangefNULL;
5090 detachShader = &glDetachShaderNULL;
5091 disable = &glDisableNULL;
5092 disableVertexAttribArray = &glDisableVertexAttribArrayNULL;
5093 drawArrays = &glDrawArraysNULL;
5094 drawElements = &glDrawElementsNULL;
5095 enable = &glEnableNULL;
5096 enableVertexAttribArray = &glEnableVertexAttribArrayNULL;
5097 finish = &glFinishNULL;
5098 flush = &glFlushNULL;
5099 framebufferRenderbuffer = &glFramebufferRenderbufferNULL;
5100 framebufferTexture2D = &glFramebufferTexture2DNULL;
5101 frontFace = &glFrontFaceNULL;
5102 genBuffers = &glGenBuffersNULL;
5103 genFramebuffers = &glGenFramebuffersNULL;
5104 genRenderbuffers = &glGenRenderbuffersNULL;
5105 genTextures = &glGenTexturesNULL;
5106 generateMipmap = &glGenerateMipmapNULL;
5107 getActiveAttrib = &glGetActiveAttribNULL;
5108 getActiveUniform = &glGetActiveUniformNULL;
5109 getAttachedShaders = &glGetAttachedShadersNULL;
5110 getAttribLocation = &glGetAttribLocationNULL;
5111 getBooleanv = &glGetBooleanvNULL;
5112 getBufferParameteriv = &glGetBufferParameterivNULL;
5113 getError = &glGetErrorNULL;
5114 getFloatv = &glGetFloatvNULL;
5115 getFramebufferAttachmentParameteriv = &glGetFramebufferAttachmentParameterivNULL;
5116 getIntegerv = &glGetIntegervNULL;
5117 getProgramInfoLog = &glGetProgramInfoLogNULL;
5118 getProgramiv = &glGetProgramivNULL;
5119 getRenderbufferParameteriv = &glGetRenderbufferParameterivNULL;
5120 getShaderInfoLog = &glGetShaderInfoLogNULL;
5121 getShaderPrecisionFormat = &glGetShaderPrecisionFormatNULL;
5122 getShaderSource = &glGetShaderSourceNULL;
5123 getShaderiv = &glGetShaderivNULL;
5124 getString = &glGetStringNULL;
5125 getTexParameterfv = &glGetTexParameterfvNULL;
5126 getTexParameteriv = &glGetTexParameterivNULL;
5127 getUniformLocation = &glGetUniformLocationNULL;
5128 getUniformfv = &glGetUniformfvNULL;
5129 getUniformiv = &glGetUniformivNULL;
5130 getVertexAttribPointerv = &glGetVertexAttribPointervNULL;
5131 getVertexAttribfv = &glGetVertexAttribfvNULL;
5132 getVertexAttribiv = &glGetVertexAttribivNULL;
5133 hint = &glHintNULL;
5134 isBuffer = &glIsBufferNULL;
5135 isEnabled = &glIsEnabledNULL;
5136 isFramebuffer = &glIsFramebufferNULL;
5137 isProgram = &glIsProgramNULL;
5138 isRenderbuffer = &glIsRenderbufferNULL;
5139 isShader = &glIsShaderNULL;
5140 isTexture = &glIsTextureNULL;
5141 lineWidth = &glLineWidthNULL;
5142 linkProgram = &glLinkProgramNULL;
5143 pixelStorei = &glPixelStoreiNULL;
5144 polygonOffset = &glPolygonOffsetNULL;
5145 readPixels = &glReadPixelsNULL;
5146 releaseShaderCompiler = &glReleaseShaderCompilerNULL;
5147 renderbufferStorage = &glRenderbufferStorageNULL;
5148 sampleCoverage = &glSampleCoverageNULL;
5149 scissor = &glScissorNULL;
5150 shaderBinary = &glShaderBinaryNULL;
5151 shaderSource = &glShaderSourceNULL;
5152 stencilFunc = &glStencilFuncNULL;
5153 stencilFuncSeparate = &glStencilFuncSeparateNULL;
5154 stencilMask = &glStencilMaskNULL;
5155 stencilMaskSeparate = &glStencilMaskSeparateNULL;
5156 stencilOp = &glStencilOpNULL;
5157 stencilOpSeparate = &glStencilOpSeparateNULL;
5158 texImage2D = &glTexImage2DNULL;
5159 texParameterf = &glTexParameterfNULL;
5160 texParameterfv = &glTexParameterfvNULL;
5161 texParameteri = &glTexParameteriNULL;
5162 texParameteriv = &glTexParameterivNULL;
5163 texSubImage2D = &glTexSubImage2DNULL;
5164 uniform1f = &glUniform1fNULL;
5165 uniform1fv = &glUniform1fvNULL;
5166 uniform1i = &glUniform1iNULL;
5167 uniform1iv = &glUniform1ivNULL;
5168 uniform2f = &glUniform2fNULL;
5169 uniform2fv = &glUniform2fvNULL;
5170 uniform2i = &glUniform2iNULL;
5171 uniform2iv = &glUniform2ivNULL;
5172 uniform3f = &glUniform3fNULL;
5173 uniform3fv = &glUniform3fvNULL;
5174 uniform3i = &glUniform3iNULL;
5175 uniform3iv = &glUniform3ivNULL;
5176 uniform4f = &glUniform4fNULL;
5177 uniform4fv = &glUniform4fvNULL;
5178 uniform4i = &glUniform4iNULL;
5179 uniform4iv = &glUniform4ivNULL;
5180 uniformMatrix2fv = &glUniformMatrix2fvNULL;
5181 uniformMatrix3fv = &glUniformMatrix3fvNULL;
5182 uniformMatrix4fv = &glUniformMatrix4fvNULL;
5183 useProgram = &glUseProgramNULL;
5184 validateProgram = &glValidateProgramNULL;
5185 vertexAttrib1f = &glVertexAttrib1fNULL;
5186 vertexAttrib1fv = &glVertexAttrib1fvNULL;
5187 vertexAttrib2f = &glVertexAttrib2fNULL;
5188 vertexAttrib2fv = &glVertexAttrib2fvNULL;
5189 vertexAttrib3f = &glVertexAttrib3fNULL;
5190 vertexAttrib3fv = &glVertexAttrib3fvNULL;
5191 vertexAttrib4f = &glVertexAttrib4fNULL;
5192 vertexAttrib4fv = &glVertexAttrib4fvNULL;
5193 vertexAttribPointer = &glVertexAttribPointerNULL;
5194 viewport = &glViewportNULL;
5195 }
5196
5197 if (version >= gl::Version(3, 0))
5198 {
5199 beginQuery = &glBeginQueryNULL;
5200 beginTransformFeedback = &glBeginTransformFeedbackNULL;
5201 bindBufferBase = &glBindBufferBaseNULL;
5202 bindBufferRange = &glBindBufferRangeNULL;
5203 bindSampler = &glBindSamplerNULL;
5204 bindTransformFeedback = &glBindTransformFeedbackNULL;
5205 bindVertexArray = &glBindVertexArrayNULL;
5206 blitFramebuffer = &glBlitFramebufferNULL;
5207 clearBufferfi = &glClearBufferfiNULL;
5208 clearBufferfv = &glClearBufferfvNULL;
5209 clearBufferiv = &glClearBufferivNULL;
5210 clearBufferuiv = &glClearBufferuivNULL;
5211 clientWaitSync = &glClientWaitSyncNULL;
5212 compressedTexImage3D = &glCompressedTexImage3DNULL;
5213 compressedTexSubImage3D = &glCompressedTexSubImage3DNULL;
5214 copyBufferSubData = &glCopyBufferSubDataNULL;
5215 copyTexSubImage3D = &glCopyTexSubImage3DNULL;
5216 deleteQueries = &glDeleteQueriesNULL;
5217 deleteSamplers = &glDeleteSamplersNULL;
5218 deleteSync = &glDeleteSyncNULL;
5219 deleteTransformFeedbacks = &glDeleteTransformFeedbacksNULL;
5220 deleteVertexArrays = &glDeleteVertexArraysNULL;
5221 drawArraysInstanced = &glDrawArraysInstancedNULL;
5222 drawBuffers = &glDrawBuffersNULL;
5223 drawElementsInstanced = &glDrawElementsInstancedNULL;
5224 drawRangeElements = &glDrawRangeElementsNULL;
5225 endQuery = &glEndQueryNULL;
5226 endTransformFeedback = &glEndTransformFeedbackNULL;
5227 fenceSync = &glFenceSyncNULL;
5228 flushMappedBufferRange = &glFlushMappedBufferRangeNULL;
5229 framebufferTextureLayer = &glFramebufferTextureLayerNULL;
5230 genQueries = &glGenQueriesNULL;
5231 genSamplers = &glGenSamplersNULL;
5232 genTransformFeedbacks = &glGenTransformFeedbacksNULL;
5233 genVertexArrays = &glGenVertexArraysNULL;
5234 getActiveUniformBlockName = &glGetActiveUniformBlockNameNULL;
5235 getActiveUniformBlockiv = &glGetActiveUniformBlockivNULL;
5236 getActiveUniformsiv = &glGetActiveUniformsivNULL;
5237 getBufferParameteri64v = &glGetBufferParameteri64vNULL;
5238 getBufferPointerv = &glGetBufferPointervNULL;
5239 getFragDataLocation = &glGetFragDataLocationNULL;
5240 getInteger64i_v = &glGetInteger64i_vNULL;
5241 getInteger64v = &glGetInteger64vNULL;
5242 getIntegeri_v = &glGetIntegeri_vNULL;
5243 getInternalformativ = &glGetInternalformativNULL;
5244 getProgramBinary = &glGetProgramBinaryNULL;
5245 getQueryObjectuiv = &glGetQueryObjectuivNULL;
5246 getQueryiv = &glGetQueryivNULL;
5247 getSamplerParameterfv = &glGetSamplerParameterfvNULL;
5248 getSamplerParameteriv = &glGetSamplerParameterivNULL;
5249 getStringi = &glGetStringiNULL;
5250 getSynciv = &glGetSyncivNULL;
5251 getTransformFeedbackVarying = &glGetTransformFeedbackVaryingNULL;
5252 getUniformBlockIndex = &glGetUniformBlockIndexNULL;
5253 getUniformIndices = &glGetUniformIndicesNULL;
5254 getUniformuiv = &glGetUniformuivNULL;
5255 getVertexAttribIiv = &glGetVertexAttribIivNULL;
5256 getVertexAttribIuiv = &glGetVertexAttribIuivNULL;
5257 invalidateFramebuffer = &glInvalidateFramebufferNULL;
5258 invalidateSubFramebuffer = &glInvalidateSubFramebufferNULL;
5259 isQuery = &glIsQueryNULL;
5260 isSampler = &glIsSamplerNULL;
5261 isSync = &glIsSyncNULL;
5262 isTransformFeedback = &glIsTransformFeedbackNULL;
5263 isVertexArray = &glIsVertexArrayNULL;
5264 mapBufferRange = &glMapBufferRangeNULL;
5265 pauseTransformFeedback = &glPauseTransformFeedbackNULL;
5266 programBinary = &glProgramBinaryNULL;
5267 programParameteri = &glProgramParameteriNULL;
5268 readBuffer = &glReadBufferNULL;
5269 renderbufferStorageMultisample = &glRenderbufferStorageMultisampleNULL;
5270 resumeTransformFeedback = &glResumeTransformFeedbackNULL;
5271 samplerParameterf = &glSamplerParameterfNULL;
5272 samplerParameterfv = &glSamplerParameterfvNULL;
5273 samplerParameteri = &glSamplerParameteriNULL;
5274 samplerParameteriv = &glSamplerParameterivNULL;
5275 texImage3D = &glTexImage3DNULL;
5276 texStorage2D = &glTexStorage2DNULL;
5277 texStorage3D = &glTexStorage3DNULL;
5278 texSubImage3D = &glTexSubImage3DNULL;
5279 transformFeedbackVaryings = &glTransformFeedbackVaryingsNULL;
5280 uniform1ui = &glUniform1uiNULL;
5281 uniform1uiv = &glUniform1uivNULL;
5282 uniform2ui = &glUniform2uiNULL;
5283 uniform2uiv = &glUniform2uivNULL;
5284 uniform3ui = &glUniform3uiNULL;
5285 uniform3uiv = &glUniform3uivNULL;
5286 uniform4ui = &glUniform4uiNULL;
5287 uniform4uiv = &glUniform4uivNULL;
5288 uniformBlockBinding = &glUniformBlockBindingNULL;
5289 uniformMatrix2x3fv = &glUniformMatrix2x3fvNULL;
5290 uniformMatrix2x4fv = &glUniformMatrix2x4fvNULL;
5291 uniformMatrix3x2fv = &glUniformMatrix3x2fvNULL;
5292 uniformMatrix3x4fv = &glUniformMatrix3x4fvNULL;
5293 uniformMatrix4x2fv = &glUniformMatrix4x2fvNULL;
5294 uniformMatrix4x3fv = &glUniformMatrix4x3fvNULL;
5295 unmapBuffer = &glUnmapBufferNULL;
5296 vertexAttribDivisor = &glVertexAttribDivisorNULL;
5297 vertexAttribI4i = &glVertexAttribI4iNULL;
5298 vertexAttribI4iv = &glVertexAttribI4ivNULL;
5299 vertexAttribI4ui = &glVertexAttribI4uiNULL;
5300 vertexAttribI4uiv = &glVertexAttribI4uivNULL;
5301 vertexAttribIPointer = &glVertexAttribIPointerNULL;
5302 waitSync = &glWaitSyncNULL;
5303 }
5304
5305 if (version >= gl::Version(3, 1))
5306 {
5307 activeShaderProgram = &glActiveShaderProgramNULL;
5308 bindImageTexture = &glBindImageTextureNULL;
5309 bindProgramPipeline = &glBindProgramPipelineNULL;
5310 bindVertexBuffer = &glBindVertexBufferNULL;
5311 createShaderProgramv = &glCreateShaderProgramvNULL;
5312 deleteProgramPipelines = &glDeleteProgramPipelinesNULL;
5313 dispatchCompute = &glDispatchComputeNULL;
5314 dispatchComputeIndirect = &glDispatchComputeIndirectNULL;
5315 drawArraysIndirect = &glDrawArraysIndirectNULL;
5316 drawElementsIndirect = &glDrawElementsIndirectNULL;
5317 framebufferParameteri = &glFramebufferParameteriNULL;
5318 genProgramPipelines = &glGenProgramPipelinesNULL;
5319 getBooleani_v = &glGetBooleani_vNULL;
5320 getFramebufferParameteriv = &glGetFramebufferParameterivNULL;
5321 getMultisamplefv = &glGetMultisamplefvNULL;
5322 getProgramInterfaceiv = &glGetProgramInterfaceivNULL;
5323 getProgramPipelineInfoLog = &glGetProgramPipelineInfoLogNULL;
5324 getProgramPipelineiv = &glGetProgramPipelineivNULL;
5325 getProgramResourceIndex = &glGetProgramResourceIndexNULL;
5326 getProgramResourceLocation = &glGetProgramResourceLocationNULL;
5327 getProgramResourceName = &glGetProgramResourceNameNULL;
5328 getProgramResourceiv = &glGetProgramResourceivNULL;
5329 getTexLevelParameterfv = &glGetTexLevelParameterfvNULL;
5330 getTexLevelParameteriv = &glGetTexLevelParameterivNULL;
5331 isProgramPipeline = &glIsProgramPipelineNULL;
5332 memoryBarrier = &glMemoryBarrierNULL;
5333 memoryBarrierByRegion = &glMemoryBarrierByRegionNULL;
5334 programUniform1f = &glProgramUniform1fNULL;
5335 programUniform1fv = &glProgramUniform1fvNULL;
5336 programUniform1i = &glProgramUniform1iNULL;
5337 programUniform1iv = &glProgramUniform1ivNULL;
5338 programUniform1ui = &glProgramUniform1uiNULL;
5339 programUniform1uiv = &glProgramUniform1uivNULL;
5340 programUniform2f = &glProgramUniform2fNULL;
5341 programUniform2fv = &glProgramUniform2fvNULL;
5342 programUniform2i = &glProgramUniform2iNULL;
5343 programUniform2iv = &glProgramUniform2ivNULL;
5344 programUniform2ui = &glProgramUniform2uiNULL;
5345 programUniform2uiv = &glProgramUniform2uivNULL;
5346 programUniform3f = &glProgramUniform3fNULL;
5347 programUniform3fv = &glProgramUniform3fvNULL;
5348 programUniform3i = &glProgramUniform3iNULL;
5349 programUniform3iv = &glProgramUniform3ivNULL;
5350 programUniform3ui = &glProgramUniform3uiNULL;
5351 programUniform3uiv = &glProgramUniform3uivNULL;
5352 programUniform4f = &glProgramUniform4fNULL;
5353 programUniform4fv = &glProgramUniform4fvNULL;
5354 programUniform4i = &glProgramUniform4iNULL;
5355 programUniform4iv = &glProgramUniform4ivNULL;
5356 programUniform4ui = &glProgramUniform4uiNULL;
5357 programUniform4uiv = &glProgramUniform4uivNULL;
5358 programUniformMatrix2fv = &glProgramUniformMatrix2fvNULL;
5359 programUniformMatrix2x3fv = &glProgramUniformMatrix2x3fvNULL;
5360 programUniformMatrix2x4fv = &glProgramUniformMatrix2x4fvNULL;
5361 programUniformMatrix3fv = &glProgramUniformMatrix3fvNULL;
5362 programUniformMatrix3x2fv = &glProgramUniformMatrix3x2fvNULL;
5363 programUniformMatrix3x4fv = &glProgramUniformMatrix3x4fvNULL;
5364 programUniformMatrix4fv = &glProgramUniformMatrix4fvNULL;
5365 programUniformMatrix4x2fv = &glProgramUniformMatrix4x2fvNULL;
5366 programUniformMatrix4x3fv = &glProgramUniformMatrix4x3fvNULL;
5367 sampleMaski = &glSampleMaskiNULL;
5368 texStorage2DMultisample = &glTexStorage2DMultisampleNULL;
5369 useProgramStages = &glUseProgramStagesNULL;
5370 validateProgramPipeline = &glValidateProgramPipelineNULL;
5371 vertexAttribBinding = &glVertexAttribBindingNULL;
5372 vertexAttribFormat = &glVertexAttribFormatNULL;
5373 vertexAttribIFormat = &glVertexAttribIFormatNULL;
5374 vertexBindingDivisor = &glVertexBindingDivisorNULL;
5375 }
5376
5377 if (version >= gl::Version(3, 2))
5378 {
5379 blendBarrier = &glBlendBarrierNULL;
5380 blendEquationSeparatei = &glBlendEquationSeparateiNULL;
5381 blendEquationi = &glBlendEquationiNULL;
5382 blendFuncSeparatei = &glBlendFuncSeparateiNULL;
5383 blendFunci = &glBlendFunciNULL;
5384 colorMaski = &glColorMaskiNULL;
5385 copyImageSubData = &glCopyImageSubDataNULL;
5386 debugMessageCallback = &glDebugMessageCallbackNULL;
5387 debugMessageControl = &glDebugMessageControlNULL;
5388 debugMessageInsert = &glDebugMessageInsertNULL;
5389 disablei = &glDisableiNULL;
5390 drawElementsBaseVertex = &glDrawElementsBaseVertexNULL;
5391 drawElementsInstancedBaseVertex = &glDrawElementsInstancedBaseVertexNULL;
5392 drawRangeElementsBaseVertex = &glDrawRangeElementsBaseVertexNULL;
5393 enablei = &glEnableiNULL;
5394 framebufferTexture = &glFramebufferTextureNULL;
5395 getDebugMessageLog = &glGetDebugMessageLogNULL;
5396 getGraphicsResetStatus = &glGetGraphicsResetStatusNULL;
5397 getObjectLabel = &glGetObjectLabelNULL;
5398 getObjectPtrLabel = &glGetObjectPtrLabelNULL;
5399 getPointerv = &glGetPointervNULL;
5400 getSamplerParameterIiv = &glGetSamplerParameterIivNULL;
5401 getSamplerParameterIuiv = &glGetSamplerParameterIuivNULL;
5402 getTexParameterIiv = &glGetTexParameterIivNULL;
5403 getTexParameterIuiv = &glGetTexParameterIuivNULL;
5404 getnUniformfv = &glGetnUniformfvNULL;
5405 getnUniformiv = &glGetnUniformivNULL;
5406 getnUniformuiv = &glGetnUniformuivNULL;
5407 isEnabledi = &glIsEnablediNULL;
5408 minSampleShading = &glMinSampleShadingNULL;
5409 objectLabel = &glObjectLabelNULL;
5410 objectPtrLabel = &glObjectPtrLabelNULL;
5411 patchParameteri = &glPatchParameteriNULL;
5412 popDebugGroup = &glPopDebugGroupNULL;
5413 primitiveBoundingBox = &glPrimitiveBoundingBoxNULL;
5414 pushDebugGroup = &glPushDebugGroupNULL;
5415 readnPixels = &glReadnPixelsNULL;
5416 samplerParameterIiv = &glSamplerParameterIivNULL;
5417 samplerParameterIuiv = &glSamplerParameterIuivNULL;
5418 texBuffer = &glTexBufferNULL;
5419 texBufferRange = &glTexBufferRangeNULL;
5420 texParameterIiv = &glTexParameterIivNULL;
5421 texParameterIuiv = &glTexParameterIuivNULL;
5422 texStorage3DMultisample = &glTexStorage3DMultisampleNULL;
5423 }
5424 }
5425
initProcsSharedExtensionsNULL(const std::set<std::string> & extensions)5426 void DispatchTableGL::initProcsSharedExtensionsNULL(const std::set<std::string> &extensions)
5427 {
5428 if (extensions.count("GL_ARB_sync") != 0)
5429 {
5430 clientWaitSync = &glClientWaitSyncNULL;
5431 deleteSync = &glDeleteSyncNULL;
5432 fenceSync = &glFenceSyncNULL;
5433 getInteger64v = &glGetInteger64vNULL;
5434 getSynciv = &glGetSyncivNULL;
5435 isSync = &glIsSyncNULL;
5436 waitSync = &glWaitSyncNULL;
5437 }
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