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