blob: e20249f61747df21bcb284ccb27d4210e70ff81a [file] [log] [blame]
Geoff Lang56cf9af2015-02-17 10:16:49 -05001//
2// Copyright (c) 2015 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
7// FunctionsGL.cpp: Implements the FuntionsGL class to contain loaded GL functions
8
9#include "libANGLE/renderer/gl/FunctionsGL.h"
Geoff Langa4903b72015-03-02 16:02:48 -080010#include "libANGLE/renderer/gl/renderergl_utils.h"
Geoff Lang56cf9af2015-02-17 10:16:49 -050011
12namespace rx
13{
14
Geoff Langa4903b72015-03-02 16:02:48 -080015static void GetGLVersion(PFNGLGETSTRINGPROC getStringFunction, GLuint *outMajorVersion, GLuint *outMinorVersion,
16 bool *outIsES)
17{
18 const std::string version = reinterpret_cast<const char*>(getStringFunction(GL_VERSION));
19 if (version.find("OpenGL ES") == std::string::npos)
20 {
21 // ES spec states that the GL_VERSION string will be in the following format:
22 // "OpenGL ES N.M vendor-specific information"
23 *outIsES = false;
24 *outMajorVersion = version[0] - '0';
25 *outMinorVersion = version[2] - '0';
26 }
27 else
28 {
29 // OpenGL spec states the GL_VERSION string will be in the following format:
30 // <version number><space><vendor-specific information>
31 // The version number is either of the form major number.minor number or major
32 // number.minor number.release number, where the numbers all have one or more
33 // digits
34 *outIsES = true;
35 *outMajorVersion = version[10] - '0';
36 *outMinorVersion = version[12] - '0';
37 }
38}
39
40static std::vector<std::string> GetNonIndexedExtensions(PFNGLGETSTRINGPROC getStringFunction)
41{
42 std::vector<std::string> result;
43
44 std::istringstream stream(reinterpret_cast<const char*>(getStringFunction(GL_EXTENSIONS)));
45 std::string extension;
46 while (std::getline(stream, extension, ' '))
47 {
48 result.push_back(extension);
49 }
50
51 return result;
52}
53
54static std::vector<std::string> GetIndexedExtensions(PFNGLGETINTEGERVPROC getIntegerFunction, PFNGLGETSTRINGIPROC getStringIFunction)
55{
56 std::vector<std::string> result;
57
58 GLint numExtensions;
59 getIntegerFunction(GL_NUM_EXTENSIONS, &numExtensions);
60
61 result.reserve(numExtensions);
62
63 for (GLint i = 0; i < numExtensions; i++)
64 {
65 result.push_back(reinterpret_cast<const char*>(getStringIFunction(GL_EXTENSIONS, i)));
66 }
67
68 return result;
69}
70
Geoff Lang56cf9af2015-02-17 10:16:49 -050071template <typename T>
72static void AssignGLEntryPoint(void *function, T *outFunction)
73{
74 *outFunction = reinterpret_cast<T>(function);
75}
76
Geoff Langa4903b72015-03-02 16:02:48 -080077template <typename T>
78static void AssignGLExtensionEntryPoint(const std::vector<std::string> &extensions, const std::string &extension, void *function, T *outFunction)
79{
80 if (std::find(extensions.begin(), extensions.end(), extension) != extensions.end())
81 {
82 *outFunction = reinterpret_cast<T>(function);
83 }
84}
85
Geoff Lang56cf9af2015-02-17 10:16:49 -050086FunctionsGL::FunctionsGL()
Geoff Langa4903b72015-03-02 16:02:48 -080087 : majorVersion(0),
88 minorVersion(0),
89 openGLES(false),
90 extensions(),
91
92 blendFunc(nullptr),
Geoff Lang56cf9af2015-02-17 10:16:49 -050093 clear(nullptr),
94 clearColor(nullptr),
95 clearDepth(nullptr),
96 clearStencil(nullptr),
97 colorMask(nullptr),
98 cullFace(nullptr),
99 depthFunc(nullptr),
100 depthMask(nullptr),
101 depthRange(nullptr),
102 disable(nullptr),
103 drawBuffer(nullptr),
104 enable(nullptr),
105 finish(nullptr),
106 flush(nullptr),
107 frontFace(nullptr),
108 getBooleanv(nullptr),
109 getDoublev(nullptr),
110 getError(nullptr),
111 getFloatv(nullptr),
112 getIntegerv(nullptr),
113 getString(nullptr),
114 getTexImage(nullptr),
115 getTexLevelParameterfv(nullptr),
116 getTexLevelParameteriv(nullptr),
117 getTexParameterfv(nullptr),
118 getTexParameteriv(nullptr),
119 hint(nullptr),
120 isEnabled(nullptr),
121 lineWidth(nullptr),
122 logicOp(nullptr),
123 pixelStoref(nullptr),
124 pixelStorei(nullptr),
125 pointSize(nullptr),
126 polygonMode(nullptr),
127 readBuffer(nullptr),
128 readPixels(nullptr),
129 scissor(nullptr),
130 stencilFunc(nullptr),
131 stencilMask(nullptr),
132 stencilOp(nullptr),
133 texImage1D(nullptr),
134 texImage2D(nullptr),
135 texParameterf(nullptr),
136 texParameterfv(nullptr),
137 texParameteri(nullptr),
138 texParameteriv(nullptr),
139 viewport(nullptr),
140
141 bindTexture(nullptr),
142 copyTexImage1D(nullptr),
143 copyTexImage2D(nullptr),
144 copyTexSubImage1D(nullptr),
145 copyTexSubImage2D(nullptr),
146 deleteTextures(nullptr),
147 drawArrays(nullptr),
148 drawElements(nullptr),
149 genTextures(nullptr),
150 isTexture(nullptr),
151 polygonOffset(nullptr),
152 texSubImage1D(nullptr),
153 texSubImage2D(nullptr),
154
155 blendColor(nullptr),
156 blendEquation(nullptr),
157 copyTexSubImage3D(nullptr),
158 drawRangeElements(nullptr),
159 texImage3D(nullptr),
160 texSubImage3D(nullptr),
161
162 activeTexture(nullptr),
163 compressedTexImage1D(nullptr),
164 compressedTexImage2D(nullptr),
165 compressedTexImage3D(nullptr),
166 compressedTexSubImage1D(nullptr),
167 compressedTexSubImage2D(nullptr),
168 compressedTexSubImage3D(nullptr),
169 getCompressedTexImage(nullptr),
170 sampleCoverage(nullptr),
171
172 blendFuncSeparate(nullptr),
173 multiDrawArrays(nullptr),
174 multiDrawElements(nullptr),
175 pointParameterf(nullptr),
176 pointParameterfv(nullptr),
177 pointParameteri(nullptr),
178 pointParameteriv(nullptr),
179
180 beginQuery(nullptr),
181 bindBuffer(nullptr),
182 bufferData(nullptr),
183 bufferSubData(nullptr),
184 deleteBuffers(nullptr),
185 deleteQueries(nullptr),
186 endQuery(nullptr),
187 genBuffers(nullptr),
188 genQueries(nullptr),
189 getBufferParameteriv(nullptr),
190 getBufferPointerv(nullptr),
191 getBufferSubData(nullptr),
192 getQueryObjectiv(nullptr),
193 getQueryObjectuiv(nullptr),
194 getQueryiv(nullptr),
195 isBuffer(nullptr),
196 isQuery(nullptr),
197 mapBuffer(nullptr),
198 unmapBuffer(nullptr),
199
200 attachShader(nullptr),
201 bindAttribLocation(nullptr),
202 blendEquationSeparate(nullptr),
203 compileShader(nullptr),
204 createProgram(nullptr),
205 createShader(nullptr),
206 deleteProgram(nullptr),
207 deleteShader(nullptr),
208 detachShader(nullptr),
209 disableVertexAttribArray(nullptr),
210 drawBuffers(nullptr),
211 enableVertexAttribArray(nullptr),
212 getActiveAttrib(nullptr),
213 getActiveUniform(nullptr),
214 getAttachedShaders(nullptr),
215 getAttribLocation(nullptr),
216 getProgramInfoLog(nullptr),
217 getProgramiv(nullptr),
218 getShaderInfoLog(nullptr),
219 getShaderSource(nullptr),
220 getShaderiv(nullptr),
221 getUniformLocation(nullptr),
222 getUniformfv(nullptr),
223 getUniformiv(nullptr),
224 getVertexAttribPointerv(nullptr),
225 getVertexAttribdv(nullptr),
226 getVertexAttribfv(nullptr),
227 getVertexAttribiv(nullptr),
228 isProgram(nullptr),
229 isShader(nullptr),
230 linkProgram(nullptr),
231 shaderSource(nullptr),
232 stencilFuncSeparate(nullptr),
233 stencilMaskSeparate(nullptr),
234 stencilOpSeparate(nullptr),
235 uniform1f(nullptr),
236 uniform1fv(nullptr),
237 uniform1i(nullptr),
238 uniform1iv(nullptr),
239 uniform2f(nullptr),
240 uniform2fv(nullptr),
241 uniform2i(nullptr),
242 uniform2iv(nullptr),
243 uniform3f(nullptr),
244 uniform3fv(nullptr),
245 uniform3i(nullptr),
246 uniform3iv(nullptr),
247 uniform4f(nullptr),
248 uniform4fv(nullptr),
249 uniform4i(nullptr),
250 uniform4iv(nullptr),
251 uniformMatrix2fv(nullptr),
252 uniformMatrix3fv(nullptr),
253 uniformMatrix4fv(nullptr),
254 useProgram(nullptr),
255 validateProgram(nullptr),
256 vertexAttrib1d(nullptr),
257 vertexAttrib1dv(nullptr),
258 vertexAttrib1f(nullptr),
259 vertexAttrib1fv(nullptr),
260 vertexAttrib1s(nullptr),
261 vertexAttrib1sv(nullptr),
262 vertexAttrib2d(nullptr),
263 vertexAttrib2dv(nullptr),
264 vertexAttrib2f(nullptr),
265 vertexAttrib2fv(nullptr),
266 vertexAttrib2s(nullptr),
267 vertexAttrib2sv(nullptr),
268 vertexAttrib3d(nullptr),
269 vertexAttrib3dv(nullptr),
270 vertexAttrib3f(nullptr),
271 vertexAttrib3fv(nullptr),
272 vertexAttrib3s(nullptr),
273 vertexAttrib3sv(nullptr),
274 vertexAttrib4Nbv(nullptr),
275 vertexAttrib4Niv(nullptr),
276 vertexAttrib4Nsv(nullptr),
277 vertexAttrib4Nub(nullptr),
278 vertexAttrib4Nubv(nullptr),
279 vertexAttrib4Nuiv(nullptr),
280 vertexAttrib4Nusv(nullptr),
281 vertexAttrib4bv(nullptr),
282 vertexAttrib4d(nullptr),
283 vertexAttrib4dv(nullptr),
284 vertexAttrib4f(nullptr),
285 vertexAttrib4fv(nullptr),
286 vertexAttrib4iv(nullptr),
287 vertexAttrib4s(nullptr),
288 vertexAttrib4sv(nullptr),
289 vertexAttrib4ubv(nullptr),
290 vertexAttrib4uiv(nullptr),
291 vertexAttrib4usv(nullptr),
292 vertexAttribPointer(nullptr),
293
294 uniformMatrix2x3fv(nullptr),
295 uniformMatrix2x4fv(nullptr),
296 uniformMatrix3x2fv(nullptr),
297 uniformMatrix3x4fv(nullptr),
298 uniformMatrix4x2fv(nullptr),
299 uniformMatrix4x3fv(nullptr),
300
301 beginConditionalRender(nullptr),
302 beginTransformFeedback(nullptr),
303 bindBufferBase(nullptr),
304 bindBufferRange(nullptr),
305 bindFragDataLocation(nullptr),
306 bindFramebuffer(nullptr),
307 bindRenderbuffer(nullptr),
308 bindVertexArray(nullptr),
309 blitFramebuffer(nullptr),
310 checkFramebufferStatus(nullptr),
311 clampColor(nullptr),
312 clearBufferfi(nullptr),
313 clearBufferfv(nullptr),
314 clearBufferiv(nullptr),
315 clearBufferuiv(nullptr),
316 colorMaski(nullptr),
317 deleteFramebuffers(nullptr),
318 deleteRenderbuffers(nullptr),
319 deleteVertexArrays(nullptr),
320 disablei(nullptr),
321 enablei(nullptr),
322 endConditionalRender(nullptr),
323 endTransformFeedback(nullptr),
324 flushMappedBufferRange(nullptr),
325 framebufferRenderbuffer(nullptr),
326 framebufferTexture1D(nullptr),
327 framebufferTexture2D(nullptr),
328 framebufferTexture3D(nullptr),
329 framebufferTextureLayer(nullptr),
330 genFramebuffers(nullptr),
331 genRenderbuffers(nullptr),
332 genVertexArrays(nullptr),
333 generateMipmap(nullptr),
334 getBooleani_v(nullptr),
335 getFragDataLocation(nullptr),
336 getFramebufferAttachmentParameteriv(nullptr),
337 getIntegeri_v(nullptr),
338 getRenderbufferParameteriv(nullptr),
339 getStringi(nullptr),
340 getTexParameterIiv(nullptr),
341 getTexParameterIuiv(nullptr),
342 getTransformFeedbackVarying(nullptr),
343 getUniformuiv(nullptr),
344 getVertexAttribIiv(nullptr),
345 getVertexAttribIuiv(nullptr),
346 isEnabledi(nullptr),
347 isFramebuffer(nullptr),
348 isRenderbuffer(nullptr),
349 isVertexArray(nullptr),
350 mapBufferRange(nullptr),
351 renderbufferStorage(nullptr),
352 renderbufferStorageMultisample(nullptr),
353 texParameterIiv(nullptr),
354 texParameterIuiv(nullptr),
355 transformFeedbackVaryings(nullptr),
356 uniform1ui(nullptr),
357 uniform1uiv(nullptr),
358 uniform2ui(nullptr),
359 uniform2uiv(nullptr),
360 uniform3ui(nullptr),
361 uniform3uiv(nullptr),
362 uniform4ui(nullptr),
363 uniform4uiv(nullptr),
364 vertexAttribI1i(nullptr),
365 vertexAttribI1iv(nullptr),
366 vertexAttribI1ui(nullptr),
367 vertexAttribI1uiv(nullptr),
368 vertexAttribI2i(nullptr),
369 vertexAttribI2iv(nullptr),
370 vertexAttribI2ui(nullptr),
371 vertexAttribI2uiv(nullptr),
372 vertexAttribI3i(nullptr),
373 vertexAttribI3iv(nullptr),
374 vertexAttribI3ui(nullptr),
375 vertexAttribI3uiv(nullptr),
376 vertexAttribI4bv(nullptr),
377 vertexAttribI4i(nullptr),
378 vertexAttribI4iv(nullptr),
379 vertexAttribI4sv(nullptr),
380 vertexAttribI4ubv(nullptr),
381 vertexAttribI4ui(nullptr),
382 vertexAttribI4uiv(nullptr),
383 vertexAttribI4usv(nullptr),
384 vertexAttribIPointer(nullptr),
385
386 copyBufferSubData(nullptr),
387 drawArraysInstanced(nullptr),
388 drawElementsInstanced(nullptr),
389 getActiveUniformBlockName(nullptr),
390 getActiveUniformBlockiv(nullptr),
391 getActiveUniformName(nullptr),
392 getActiveUniformsiv(nullptr),
393 getUniformBlockIndex(nullptr),
394 getUniformIndices(nullptr),
395 primitiveRestartIndex(nullptr),
396 texBuffer(nullptr),
397 uniformBlockBinding(nullptr),
398
399 clientWaitSync(nullptr),
400 deleteSync(nullptr),
401 drawElementsBaseVertex(nullptr),
402 drawElementsInstancedBaseVertex(nullptr),
403 drawRangeElementsBaseVertex(nullptr),
404 fenceSync(nullptr),
405 framebufferTexture(nullptr),
406 getBufferParameteri64v(nullptr),
407 getInteger64i_v(nullptr),
408 getInteger64v(nullptr),
409 getMultisamplefv(nullptr),
410 getSynciv(nullptr),
411 isSync(nullptr),
412 multiDrawElementsBaseVertex(nullptr),
413 provokingVertex(nullptr),
414 sampleMaski(nullptr),
415 texImage2DMultisample(nullptr),
416 texImage3DMultisample(nullptr),
417 waitSync(nullptr),
418
419 bindFragDataLocationIndexed(nullptr),
420 bindSampler(nullptr),
421 deleteSamplers(nullptr),
422 genSamplers(nullptr),
423 getFragDataIndex(nullptr),
424 getQueryObjecti64v(nullptr),
425 getQueryObjectui64v(nullptr),
426 getSamplerParameterIiv(nullptr),
427 getSamplerParameterIuiv(nullptr),
428 getSamplerParameterfv(nullptr),
429 getSamplerParameteriv(nullptr),
430 isSampler(nullptr),
431 queryCounter(nullptr),
432 samplerParameterIiv(nullptr),
433 samplerParameterIuiv(nullptr),
434 samplerParameterf(nullptr),
435 samplerParameterfv(nullptr),
436 samplerParameteri(nullptr),
437 samplerParameteriv(nullptr),
438 vertexAttribDivisor(nullptr),
439 vertexAttribP1ui(nullptr),
440 vertexAttribP1uiv(nullptr),
441 vertexAttribP2ui(nullptr),
442 vertexAttribP2uiv(nullptr),
443 vertexAttribP3ui(nullptr),
444 vertexAttribP3uiv(nullptr),
445 vertexAttribP4ui(nullptr),
446 vertexAttribP4uiv(nullptr),
447
448 beginQueryIndexed(nullptr),
449 bindTransformFeedback(nullptr),
450 blendEquationSeparatei(nullptr),
451 blendEquationi(nullptr),
452 blendFuncSeparatei(nullptr),
453 blendFunci(nullptr),
454 deleteTransformFeedbacks(nullptr),
455 drawArraysIndirect(nullptr),
456 drawElementsIndirect(nullptr),
457 drawTransformFeedback(nullptr),
458 drawTransformFeedbackStream(nullptr),
459 endQueryIndexed(nullptr),
460 genTransformFeedbacks(nullptr),
461 getActiveSubroutineName(nullptr),
462 getActiveSubroutineUniformName(nullptr),
463 getActiveSubroutineUniformiv(nullptr),
464 getProgramStageiv(nullptr),
465 getQueryIndexediv(nullptr),
466 getSubroutineIndex(nullptr),
467 getSubroutineUniformLocation(nullptr),
468 getUniformSubroutineuiv(nullptr),
469 getUniformdv(nullptr),
470 isTransformFeedback(nullptr),
471 minSampleShading(nullptr),
472 patchParameterfv(nullptr),
473 patchParameteri(nullptr),
474 pauseTransformFeedback(nullptr),
475 resumeTransformFeedback(nullptr),
476 uniform1d(nullptr),
477 uniform1dv(nullptr),
478 uniform2d(nullptr),
479 uniform2dv(nullptr),
480 uniform3d(nullptr),
481 uniform3dv(nullptr),
482 uniform4d(nullptr),
483 uniform4dv(nullptr),
484 uniformMatrix2dv(nullptr),
485 uniformMatrix2x3dv(nullptr),
486 uniformMatrix2x4dv(nullptr),
487 uniformMatrix3dv(nullptr),
488 uniformMatrix3x2dv(nullptr),
489 uniformMatrix3x4dv(nullptr),
490 uniformMatrix4dv(nullptr),
491 uniformMatrix4x2dv(nullptr),
492 uniformMatrix4x3dv(nullptr),
493 uniformSubroutinesuiv(nullptr),
494
495 activeShaderProgram(nullptr),
496 bindProgramPipeline(nullptr),
497 clearDepthf(nullptr),
498 createShaderProgramv(nullptr),
499 deleteProgramPipelines(nullptr),
500 depthRangeArrayv(nullptr),
501 depthRangeIndexed(nullptr),
502 depthRangef(nullptr),
503 genProgramPipelines(nullptr),
504 getDoublei_v(nullptr),
505 getFloati_v(nullptr),
506 getProgramBinary(nullptr),
507 getProgramPipelineInfoLog(nullptr),
508 getProgramPipelineiv(nullptr),
509 getShaderPrecisionFormat(nullptr),
510 getVertexAttribLdv(nullptr),
511 isProgramPipeline(nullptr),
512 programBinary(nullptr),
513 programParameteri(nullptr),
514 programUniform1d(nullptr),
515 programUniform1dv(nullptr),
516 programUniform1f(nullptr),
517 programUniform1fv(nullptr),
518 programUniform1i(nullptr),
519 programUniform1iv(nullptr),
520 programUniform1ui(nullptr),
521 programUniform1uiv(nullptr),
522 programUniform2d(nullptr),
523 programUniform2dv(nullptr),
524 programUniform2f(nullptr),
525 programUniform2fv(nullptr),
526 programUniform2i(nullptr),
527 programUniform2iv(nullptr),
528 programUniform2ui(nullptr),
529 programUniform2uiv(nullptr),
530 programUniform3d(nullptr),
531 programUniform3dv(nullptr),
532 programUniform3f(nullptr),
533 programUniform3fv(nullptr),
534 programUniform3i(nullptr),
535 programUniform3iv(nullptr),
536 programUniform3ui(nullptr),
537 programUniform3uiv(nullptr),
538 programUniform4d(nullptr),
539 programUniform4dv(nullptr),
540 programUniform4f(nullptr),
541 programUniform4fv(nullptr),
542 programUniform4i(nullptr),
543 programUniform4iv(nullptr),
544 programUniform4ui(nullptr),
545 programUniform4uiv(nullptr),
546 programUniformMatrix2dv(nullptr),
547 programUniformMatrix2fv(nullptr),
548 programUniformMatrix2x3dv(nullptr),
549 programUniformMatrix2x3fv(nullptr),
550 programUniformMatrix2x4dv(nullptr),
551 programUniformMatrix2x4fv(nullptr),
552 programUniformMatrix3dv(nullptr),
553 programUniformMatrix3fv(nullptr),
554 programUniformMatrix3x2dv(nullptr),
555 programUniformMatrix3x2fv(nullptr),
556 programUniformMatrix3x4dv(nullptr),
557 programUniformMatrix3x4fv(nullptr),
558 programUniformMatrix4dv(nullptr),
559 programUniformMatrix4fv(nullptr),
560 programUniformMatrix4x2dv(nullptr),
561 programUniformMatrix4x2fv(nullptr),
562 programUniformMatrix4x3dv(nullptr),
563 programUniformMatrix4x3fv(nullptr),
564 releaseShaderCompiler(nullptr),
565 scissorArrayv(nullptr),
566 scissorIndexed(nullptr),
567 scissorIndexedv(nullptr),
568 shaderBinary(nullptr),
569 useProgramStages(nullptr),
570 validateProgramPipeline(nullptr),
571 vertexAttribL1d(nullptr),
572 vertexAttribL1dv(nullptr),
573 vertexAttribL2d(nullptr),
574 vertexAttribL2dv(nullptr),
575 vertexAttribL3d(nullptr),
576 vertexAttribL3dv(nullptr),
577 vertexAttribL4d(nullptr),
578 vertexAttribL4dv(nullptr),
579 vertexAttribLPointer(nullptr),
580 viewportArrayv(nullptr),
581 viewportIndexedf(nullptr),
582 viewportIndexedfv(nullptr),
583
584 bindImageTexture(nullptr),
585 drawArraysInstancedBaseInstance(nullptr),
586 drawElementsInstancedBaseInstance(nullptr),
587 drawElementsInstancedBaseVertexBaseInstance(nullptr),
588 drawTransformFeedbackInstanced(nullptr),
589 drawTransformFeedbackStreamInstanced(nullptr),
590 getActiveAtomicCounterBufferiv(nullptr),
591 getInternalformativ(nullptr),
592 memoryBarrier(nullptr),
593 texStorage1D(nullptr),
594 texStorage2D(nullptr),
595 texStorage3D(nullptr),
596
597 bindVertexBuffer(nullptr),
598 clearBufferData(nullptr),
599 clearBufferSubData(nullptr),
600 copyImageSubData(nullptr),
601 debugMessageCallback(nullptr),
602 debugMessageControl(nullptr),
603 debugMessageInsert(nullptr),
604 dispatchCompute(nullptr),
605 dispatchComputeIndirect(nullptr),
606 framebufferParameteri(nullptr),
607 getDebugMessageLog(nullptr),
608 getFramebufferParameteriv(nullptr),
609 getInternalformati64v(nullptr),
610 getObjectLabel(nullptr),
611 getObjectPtrLabel(nullptr),
612 getProgramInterfaceiv(nullptr),
613 getProgramResourceIndex(nullptr),
614 getProgramResourceLocation(nullptr),
615 getProgramResourceLocationIndex(nullptr),
616 getProgramResourceName(nullptr),
617 getProgramResourceiv(nullptr),
618 invalidateBufferData(nullptr),
619 invalidateBufferSubData(nullptr),
620 invalidateFramebuffer(nullptr),
621 invalidateSubFramebuffer(nullptr),
622 invalidateTexImage(nullptr),
623 invalidateTexSubImage(nullptr),
624 multiDrawArraysIndirect(nullptr),
625 multiDrawElementsIndirect(nullptr),
626 objectLabel(nullptr),
627 objectPtrLabel(nullptr),
628 popDebugGroup(nullptr),
629 pushDebugGroup(nullptr),
630 shaderStorageBlockBinding(nullptr),
631 texBufferRange(nullptr),
632 texStorage2DMultisample(nullptr),
633 texStorage3DMultisample(nullptr),
634 textureView(nullptr),
635 vertexAttribBinding(nullptr),
636 vertexAttribFormat(nullptr),
637 vertexAttribIFormat(nullptr),
638 vertexAttribLFormat(nullptr),
639 vertexBindingDivisor(nullptr),
640
641 bindBuffersBase(nullptr),
642 bindBuffersRange(nullptr),
643 bindImageTextures(nullptr),
644 bindSamplers(nullptr),
645 bindTextures(nullptr),
646 bindVertexBuffers(nullptr),
647 bufferStorage(nullptr),
648 clearTexImage(nullptr),
649 clearTexSubImage(nullptr),
650
651 bindTextureUnit(nullptr),
652 blitNamedFramebuffer(nullptr),
653 checkNamedFramebufferStatus(nullptr),
654 clearNamedBufferData(nullptr),
655 clearNamedBufferSubData(nullptr),
656 clearNamedFramebufferfi(nullptr),
657 clearNamedFramebufferfv(nullptr),
658 clearNamedFramebufferiv(nullptr),
659 clearNamedFramebufferuiv(nullptr),
660 clipControl(nullptr),
661 compressedTextureSubImage1D(nullptr),
662 compressedTextureSubImage2D(nullptr),
663 compressedTextureSubImage3D(nullptr),
664 copyNamedBufferSubData(nullptr),
665 copyTextureSubImage1D(nullptr),
666 copyTextureSubImage2D(nullptr),
667 copyTextureSubImage3D(nullptr),
668 createBuffers(nullptr),
669 createFramebuffers(nullptr),
670 createProgramPipelines(nullptr),
671 createQueries(nullptr),
672 createRenderbuffers(nullptr),
673 createSamplers(nullptr),
674 createTextures(nullptr),
675 createTransformFeedbacks(nullptr),
676 createVertexArrays(nullptr),
677 disableVertexArrayAttrib(nullptr),
678 enableVertexArrayAttrib(nullptr),
679 flushMappedNamedBufferRange(nullptr),
680 generateTextureMipmap(nullptr),
681 getCompressedTextureImage(nullptr),
682 getCompressedTextureSubImage(nullptr),
683 getGraphicsResetStatus(nullptr),
684 getNamedBufferParameteri64v(nullptr),
685 getNamedBufferParameteriv(nullptr),
686 getNamedBufferPointerv(nullptr),
687 getNamedBufferSubData(nullptr),
688 getNamedFramebufferAttachmentParameteriv(nullptr),
689 getNamedFramebufferParameteriv(nullptr),
690 getNamedRenderbufferParameteriv(nullptr),
691 getQueryBufferObjecti64v(nullptr),
692 getQueryBufferObjectiv(nullptr),
693 getQueryBufferObjectui64v(nullptr),
694 getQueryBufferObjectuiv(nullptr),
695 getTextureImage(nullptr),
696 getTextureLevelParameterfv(nullptr),
697 getTextureLevelParameteriv(nullptr),
698 getTextureParameterIiv(nullptr),
699 getTextureParameterIuiv(nullptr),
700 getTextureParameterfv(nullptr),
701 getTextureParameteriv(nullptr),
702 getTextureSubImage(nullptr),
703 getTransformFeedbacki64_v(nullptr),
704 getTransformFeedbacki_v(nullptr),
705 getTransformFeedbackiv(nullptr),
706 getVertexArrayIndexed64iv(nullptr),
707 getVertexArrayIndexediv(nullptr),
708 getVertexArrayiv(nullptr),
709 getnCompressedTexImage(nullptr),
710 getnTexImage(nullptr),
711 getnUniformdv(nullptr),
712 getnUniformfv(nullptr),
713 getnUniformiv(nullptr),
714 getnUniformuiv(nullptr),
715 invalidateNamedFramebufferData(nullptr),
716 invalidateNamedFramebufferSubData(nullptr),
717 mapNamedBuffer(nullptr),
718 mapNamedBufferRange(nullptr),
719 memoryBarrierByRegion(nullptr),
720 namedBufferData(nullptr),
721 namedBufferStorage(nullptr),
722 namedBufferSubData(nullptr),
723 namedFramebufferDrawBuffer(nullptr),
724 namedFramebufferDrawBuffers(nullptr),
725 namedFramebufferParameteri(nullptr),
726 namedFramebufferReadBuffer(nullptr),
727 namedFramebufferRenderbuffer(nullptr),
728 namedFramebufferTexture(nullptr),
729 namedFramebufferTextureLayer(nullptr),
730 namedRenderbufferStorage(nullptr),
731 namedRenderbufferStorageMultisample(nullptr),
732 readnPixels(nullptr),
733 textureBarrier(nullptr),
734 textureBuffer(nullptr),
735 textureBufferRange(nullptr),
736 textureParameterIiv(nullptr),
737 textureParameterIuiv(nullptr),
738 textureParameterf(nullptr),
739 textureParameterfv(nullptr),
740 textureParameteri(nullptr),
741 textureParameteriv(nullptr),
742 textureStorage1D(nullptr),
743 textureStorage2D(nullptr),
744 textureStorage2DMultisample(nullptr),
745 textureStorage3D(nullptr),
746 textureStorage3DMultisample(nullptr),
747 textureSubImage1D(nullptr),
748 textureSubImage2D(nullptr),
749 textureSubImage3D(nullptr),
750 transformFeedbackBufferBase(nullptr),
751 transformFeedbackBufferRange(nullptr),
752 unmapNamedBuffer(nullptr),
753 vertexArrayAttribBinding(nullptr),
754 vertexArrayAttribFormat(nullptr),
755 vertexArrayAttribIFormat(nullptr),
756 vertexArrayAttribLFormat(nullptr),
757 vertexArrayBindingDivisor(nullptr),
758 vertexArrayElementBuffer(nullptr),
759 vertexArrayVertexBuffer(nullptr),
760 vertexArrayVertexBuffers(nullptr)
761{
762}
763
764FunctionsGL::~FunctionsGL()
765{
766}
767
Geoff Langa4903b72015-03-02 16:02:48 -0800768void FunctionsGL::initialize()
Geoff Lang56cf9af2015-02-17 10:16:49 -0500769{
Geoff Langa4903b72015-03-02 16:02:48 -0800770 // Grab the version number
771 AssignGLEntryPoint(loadProcAddress("glGetString"), &getString);
772 GetGLVersion(getString, &majorVersion, &minorVersion, &openGLES);
773
774 // Grab the GL extensions
775 if (majorVersion > 3 || majorVersion == 3 && minorVersion >= 0)
776 {
777 AssignGLEntryPoint(loadProcAddress("glGetIntegerv"), &getIntegerv);
778 AssignGLEntryPoint(loadProcAddress("glGetStringi"), &getStringi);
779 extensions = GetIndexedExtensions(getIntegerv, getStringi);
780 }
781 else
782 {
783 extensions = GetNonIndexedExtensions(getString);
784 }
785
Geoff Lang56cf9af2015-02-17 10:16:49 -0500786 // 1.0
787 if (majorVersion > 1 || majorVersion == 1 && minorVersion >= 0)
788 {
789 AssignGLEntryPoint(loadProcAddress("glBlendFunc"), &blendFunc);
790 AssignGLEntryPoint(loadProcAddress("glClear"), &clear);
791 AssignGLEntryPoint(loadProcAddress("glClearColor"), &clearColor);
792 AssignGLEntryPoint(loadProcAddress("glClearDepth"), &clearDepth);
793 AssignGLEntryPoint(loadProcAddress("glClearStencil"), &clearStencil);
794 AssignGLEntryPoint(loadProcAddress("glColorMask"), &colorMask);
795 AssignGLEntryPoint(loadProcAddress("glCullFace"), &cullFace);
796 AssignGLEntryPoint(loadProcAddress("glDepthFunc"), &depthFunc);
797 AssignGLEntryPoint(loadProcAddress("glDepthMask"), &depthMask);
798 AssignGLEntryPoint(loadProcAddress("glDepthRange"), &depthRange);
799 AssignGLEntryPoint(loadProcAddress("glDisable"), &disable);
800 AssignGLEntryPoint(loadProcAddress("glDrawBuffer"), &drawBuffer);
801 AssignGLEntryPoint(loadProcAddress("glEnable"), &enable);
802 AssignGLEntryPoint(loadProcAddress("glFinish"), &finish);
803 AssignGLEntryPoint(loadProcAddress("glFlush"), &flush);
804 AssignGLEntryPoint(loadProcAddress("glFrontFace"), &frontFace);
805 AssignGLEntryPoint(loadProcAddress("glGetBooleanv"), &getBooleanv);
806 AssignGLEntryPoint(loadProcAddress("glGetDoublev"), &getDoublev);
807 AssignGLEntryPoint(loadProcAddress("glGetError"), &getError);
808 AssignGLEntryPoint(loadProcAddress("glGetFloatv"), &getFloatv);
809 AssignGLEntryPoint(loadProcAddress("glGetIntegerv"), &getIntegerv);
810 AssignGLEntryPoint(loadProcAddress("glGetString"), &getString);
811 AssignGLEntryPoint(loadProcAddress("glGetTexImage"), &getTexImage);
812 AssignGLEntryPoint(loadProcAddress("glGetTexLevelParameterfv"), &getTexLevelParameterfv);
813 AssignGLEntryPoint(loadProcAddress("glGetTexLevelParameteriv"), &getTexLevelParameteriv);
814 AssignGLEntryPoint(loadProcAddress("glGetTexParameterfv"), &getTexParameterfv);
815 AssignGLEntryPoint(loadProcAddress("glGetTexParameteriv"), &getTexParameteriv);
816 AssignGLEntryPoint(loadProcAddress("glHint"), &hint);
817 AssignGLEntryPoint(loadProcAddress("glIsEnabled"), &isEnabled);
818 AssignGLEntryPoint(loadProcAddress("glLineWidth"), &lineWidth);
819 AssignGLEntryPoint(loadProcAddress("glLogicOp"), &logicOp);
820 AssignGLEntryPoint(loadProcAddress("glPixelStoref"), &pixelStoref);
821 AssignGLEntryPoint(loadProcAddress("glPixelStorei"), &pixelStorei);
822 AssignGLEntryPoint(loadProcAddress("glPointSize"), &pointSize);
823 AssignGLEntryPoint(loadProcAddress("glPolygonMode"), &polygonMode);
824 AssignGLEntryPoint(loadProcAddress("glReadBuffer"), &readBuffer);
825 AssignGLEntryPoint(loadProcAddress("glReadPixels"), &readPixels);
826 AssignGLEntryPoint(loadProcAddress("glScissor"), &scissor);
827 AssignGLEntryPoint(loadProcAddress("glStencilFunc"), &stencilFunc);
828 AssignGLEntryPoint(loadProcAddress("glStencilMask"), &stencilMask);
829 AssignGLEntryPoint(loadProcAddress("glStencilOp"), &stencilOp);
830 AssignGLEntryPoint(loadProcAddress("glTexImage1D"), &texImage1D);
831 AssignGLEntryPoint(loadProcAddress("glTexImage2D"), &texImage2D);
832 AssignGLEntryPoint(loadProcAddress("glTexParameterf"), &texParameterf);
833 AssignGLEntryPoint(loadProcAddress("glTexParameterfv"), &texParameterfv);
834 AssignGLEntryPoint(loadProcAddress("glTexParameteri"), &texParameteri);
835 AssignGLEntryPoint(loadProcAddress("glTexParameteriv"), &texParameteriv);
836 AssignGLEntryPoint(loadProcAddress("glViewport"), &viewport);
837 }
838
839 // 1.1
840 if (majorVersion > 1 || majorVersion == 1 && minorVersion >= 1)
841 {
842 AssignGLEntryPoint(loadProcAddress("glBindTexture"), &bindTexture);
843 AssignGLEntryPoint(loadProcAddress("glCopyTexImage1D"), &copyTexImage1D);
844 AssignGLEntryPoint(loadProcAddress("glCopyTexImage2D"), &copyTexImage2D);
845 AssignGLEntryPoint(loadProcAddress("glCopyTexSubImage1D"), &copyTexSubImage1D);
846 AssignGLEntryPoint(loadProcAddress("glCopyTexSubImage2D"), &copyTexSubImage2D);
847 AssignGLEntryPoint(loadProcAddress("glDeleteTextures"), &deleteTextures);
848 AssignGLEntryPoint(loadProcAddress("glDrawArrays"), &drawArrays);
849 AssignGLEntryPoint(loadProcAddress("glDrawElements"), &drawElements);
850 AssignGLEntryPoint(loadProcAddress("glGenTextures"), &genTextures);
851 AssignGLEntryPoint(loadProcAddress("glIsTexture"), &isTexture);
852 AssignGLEntryPoint(loadProcAddress("glPolygonOffset"), &polygonOffset);
853 AssignGLEntryPoint(loadProcAddress("glTexSubImage1D"), &texSubImage1D);
854 AssignGLEntryPoint(loadProcAddress("glTexSubImage2D"), &texSubImage2D);
855 }
856
857 // 1.2
858 if (majorVersion > 1 || majorVersion == 1 && minorVersion >= 2)
859 {
860 AssignGLEntryPoint(loadProcAddress("glBlendColor"), &blendColor);
861 AssignGLEntryPoint(loadProcAddress("glBlendEquation"), &blendEquation);
862 AssignGLEntryPoint(loadProcAddress("glCopyTexSubImage3D"), &copyTexSubImage3D);
863 AssignGLEntryPoint(loadProcAddress("glDrawRangeElements"), &drawRangeElements);
864 AssignGLEntryPoint(loadProcAddress("glTexImage3D"), &texImage3D);
865 AssignGLEntryPoint(loadProcAddress("glTexSubImage3D"), &texSubImage3D);
866 }
867
868 // 1.3
869 if (majorVersion > 1 || majorVersion == 1 && minorVersion >= 3)
870 {
871 AssignGLEntryPoint(loadProcAddress("glActiveTexture"), &activeTexture);
872 AssignGLEntryPoint(loadProcAddress("glCompressedTexImage1D"), &compressedTexImage1D);
873 AssignGLEntryPoint(loadProcAddress("glCompressedTexImage2D"), &compressedTexImage2D);
874 AssignGLEntryPoint(loadProcAddress("glCompressedTexImage3D"), &compressedTexImage3D);
875 AssignGLEntryPoint(loadProcAddress("glCompressedTexSubImage1D"), &compressedTexSubImage1D);
876 AssignGLEntryPoint(loadProcAddress("glCompressedTexSubImage2D"), &compressedTexSubImage2D);
877 AssignGLEntryPoint(loadProcAddress("glCompressedTexSubImage3D"), &compressedTexSubImage3D);
878 AssignGLEntryPoint(loadProcAddress("glGetCompressedTexImage"), &getCompressedTexImage);
879 AssignGLEntryPoint(loadProcAddress("glSampleCoverage"), &sampleCoverage);
880 }
881
882 // 1.4
883 if (majorVersion > 1 || majorVersion == 1 && minorVersion >= 4)
884 {
885 AssignGLEntryPoint(loadProcAddress("glBlendFuncSeparate"), &blendFuncSeparate);
886 AssignGLEntryPoint(loadProcAddress("glMultiDrawArrays"), &multiDrawArrays);
887 AssignGLEntryPoint(loadProcAddress("glMultiDrawElements"), &multiDrawElements);
888 AssignGLEntryPoint(loadProcAddress("glPointParameterf"), &pointParameterf);
889 AssignGLEntryPoint(loadProcAddress("glPointParameterfv"), &pointParameterfv);
890 AssignGLEntryPoint(loadProcAddress("glPointParameteri"), &pointParameteri);
891 AssignGLEntryPoint(loadProcAddress("glPointParameteriv"), &pointParameteriv);
892 }
893
894 // 1.5
895 if (majorVersion > 1 || majorVersion == 1 && minorVersion >= 5)
896 {
897 AssignGLEntryPoint(loadProcAddress("glBeginQuery"), &beginQuery);
898 AssignGLEntryPoint(loadProcAddress("glBindBuffer"), &bindBuffer);
899 AssignGLEntryPoint(loadProcAddress("glBufferData"), &bufferData);
900 AssignGLEntryPoint(loadProcAddress("glBufferSubData"), &bufferSubData);
901 AssignGLEntryPoint(loadProcAddress("glDeleteBuffers"), &deleteBuffers);
902 AssignGLEntryPoint(loadProcAddress("glDeleteQueries"), &deleteQueries);
903 AssignGLEntryPoint(loadProcAddress("glEndQuery"), &endQuery);
904 AssignGLEntryPoint(loadProcAddress("glGenBuffers"), &genBuffers);
905 AssignGLEntryPoint(loadProcAddress("glGenQueries"), &genQueries);
906 AssignGLEntryPoint(loadProcAddress("glGetBufferParameteriv"), &getBufferParameteriv);
907 AssignGLEntryPoint(loadProcAddress("glGetBufferPointerv"), &getBufferPointerv);
908 AssignGLEntryPoint(loadProcAddress("glGetBufferSubData"), &getBufferSubData);
909 AssignGLEntryPoint(loadProcAddress("glGetQueryObjectiv"), &getQueryObjectiv);
910 AssignGLEntryPoint(loadProcAddress("glGetQueryObjectuiv"), &getQueryObjectuiv);
911 AssignGLEntryPoint(loadProcAddress("glGetQueryiv"), &getQueryiv);
912 AssignGLEntryPoint(loadProcAddress("glIsBuffer"), &isBuffer);
913 AssignGLEntryPoint(loadProcAddress("glIsQuery"), &isQuery);
914 AssignGLEntryPoint(loadProcAddress("glMapBuffer"), &mapBuffer);
915 AssignGLEntryPoint(loadProcAddress("glUnmapBuffer"), &unmapBuffer);
916 }
917
918 // 2.0
919 if (majorVersion > 2 || majorVersion == 2 && minorVersion >= 0)
920 {
921 AssignGLEntryPoint(loadProcAddress("glAttachShader"), &attachShader);
922 AssignGLEntryPoint(loadProcAddress("glBindAttribLocation"), &bindAttribLocation);
923 AssignGLEntryPoint(loadProcAddress("glBlendEquationSeparate"), &blendEquationSeparate);
924 AssignGLEntryPoint(loadProcAddress("glCompileShader"), &compileShader);
925 AssignGLEntryPoint(loadProcAddress("glCreateProgram"), &createProgram);
926 AssignGLEntryPoint(loadProcAddress("glCreateShader"), &createShader);
927 AssignGLEntryPoint(loadProcAddress("glDeleteProgram"), &deleteProgram);
928 AssignGLEntryPoint(loadProcAddress("glDeleteShader"), &deleteShader);
929 AssignGLEntryPoint(loadProcAddress("glDetachShader"), &detachShader);
930 AssignGLEntryPoint(loadProcAddress("glDisableVertexAttribArray"), &disableVertexAttribArray);
931 AssignGLEntryPoint(loadProcAddress("glDrawBuffers"), &drawBuffers);
932 AssignGLEntryPoint(loadProcAddress("glEnableVertexAttribArray"), &enableVertexAttribArray);
933 AssignGLEntryPoint(loadProcAddress("glGetActiveAttrib"), &getActiveAttrib);
934 AssignGLEntryPoint(loadProcAddress("glGetActiveUniform"), &getActiveUniform);
935 AssignGLEntryPoint(loadProcAddress("glGetAttachedShaders"), &getAttachedShaders);
936 AssignGLEntryPoint(loadProcAddress("glGetAttribLocation"), &getAttribLocation);
937 AssignGLEntryPoint(loadProcAddress("glGetProgramInfoLog"), &getProgramInfoLog);
938 AssignGLEntryPoint(loadProcAddress("glGetProgramiv"), &getProgramiv);
939 AssignGLEntryPoint(loadProcAddress("glGetShaderInfoLog"), &getShaderInfoLog);
940 AssignGLEntryPoint(loadProcAddress("glGetShaderSource"), &getShaderSource);
941 AssignGLEntryPoint(loadProcAddress("glGetShaderiv"), &getShaderiv);
942 AssignGLEntryPoint(loadProcAddress("glGetUniformLocation"), &getUniformLocation);
943 AssignGLEntryPoint(loadProcAddress("glGetUniformfv"), &getUniformfv);
944 AssignGLEntryPoint(loadProcAddress("glGetUniformiv"), &getUniformiv);
945 AssignGLEntryPoint(loadProcAddress("glGetVertexAttribPointerv"), &getVertexAttribPointerv);
946 AssignGLEntryPoint(loadProcAddress("glGetVertexAttribdv"), &getVertexAttribdv);
947 AssignGLEntryPoint(loadProcAddress("glGetVertexAttribfv"), &getVertexAttribfv);
948 AssignGLEntryPoint(loadProcAddress("glGetVertexAttribiv"), &getVertexAttribiv);
949 AssignGLEntryPoint(loadProcAddress("glIsProgram"), &isProgram);
950 AssignGLEntryPoint(loadProcAddress("glIsShader"), &isShader);
951 AssignGLEntryPoint(loadProcAddress("glLinkProgram"), &linkProgram);
952 AssignGLEntryPoint(loadProcAddress("glShaderSource"), &shaderSource);
953 AssignGLEntryPoint(loadProcAddress("glStencilFuncSeparate"), &stencilFuncSeparate);
954 AssignGLEntryPoint(loadProcAddress("glStencilMaskSeparate"), &stencilMaskSeparate);
955 AssignGLEntryPoint(loadProcAddress("glStencilOpSeparate"), &stencilOpSeparate);
956 AssignGLEntryPoint(loadProcAddress("glUniform1f"), &uniform1f);
957 AssignGLEntryPoint(loadProcAddress("glUniform1fv"), &uniform1fv);
958 AssignGLEntryPoint(loadProcAddress("glUniform1i"), &uniform1i);
959 AssignGLEntryPoint(loadProcAddress("glUniform1iv"), &uniform1iv);
960 AssignGLEntryPoint(loadProcAddress("glUniform2f"), &uniform2f);
961 AssignGLEntryPoint(loadProcAddress("glUniform2fv"), &uniform2fv);
962 AssignGLEntryPoint(loadProcAddress("glUniform2i"), &uniform2i);
963 AssignGLEntryPoint(loadProcAddress("glUniform2iv"), &uniform2iv);
964 AssignGLEntryPoint(loadProcAddress("glUniform3f"), &uniform3f);
965 AssignGLEntryPoint(loadProcAddress("glUniform3fv"), &uniform3fv);
966 AssignGLEntryPoint(loadProcAddress("glUniform3i"), &uniform3i);
967 AssignGLEntryPoint(loadProcAddress("glUniform3iv"), &uniform3iv);
968 AssignGLEntryPoint(loadProcAddress("glUniform4f"), &uniform4f);
969 AssignGLEntryPoint(loadProcAddress("glUniform4fv"), &uniform4fv);
970 AssignGLEntryPoint(loadProcAddress("glUniform4i"), &uniform4i);
971 AssignGLEntryPoint(loadProcAddress("glUniform4iv"), &uniform4iv);
972 AssignGLEntryPoint(loadProcAddress("glUniformMatrix2fv"), &uniformMatrix2fv);
973 AssignGLEntryPoint(loadProcAddress("glUniformMatrix3fv"), &uniformMatrix3fv);
974 AssignGLEntryPoint(loadProcAddress("glUniformMatrix4fv"), &uniformMatrix4fv);
975 AssignGLEntryPoint(loadProcAddress("glUseProgram"), &useProgram);
976 AssignGLEntryPoint(loadProcAddress("glValidateProgram"), &validateProgram);
977 AssignGLEntryPoint(loadProcAddress("glVertexAttrib1d"), &vertexAttrib1d);
978 AssignGLEntryPoint(loadProcAddress("glVertexAttrib1dv"), &vertexAttrib1dv);
979 AssignGLEntryPoint(loadProcAddress("glVertexAttrib1f"), &vertexAttrib1f);
980 AssignGLEntryPoint(loadProcAddress("glVertexAttrib1fv"), &vertexAttrib1fv);
981 AssignGLEntryPoint(loadProcAddress("glVertexAttrib1s"), &vertexAttrib1s);
982 AssignGLEntryPoint(loadProcAddress("glVertexAttrib1sv"), &vertexAttrib1sv);
983 AssignGLEntryPoint(loadProcAddress("glVertexAttrib2d"), &vertexAttrib2d);
984 AssignGLEntryPoint(loadProcAddress("glVertexAttrib2dv"), &vertexAttrib2dv);
985 AssignGLEntryPoint(loadProcAddress("glVertexAttrib2f"), &vertexAttrib2f);
986 AssignGLEntryPoint(loadProcAddress("glVertexAttrib2fv"), &vertexAttrib2fv);
987 AssignGLEntryPoint(loadProcAddress("glVertexAttrib2s"), &vertexAttrib2s);
988 AssignGLEntryPoint(loadProcAddress("glVertexAttrib2sv"), &vertexAttrib2sv);
989 AssignGLEntryPoint(loadProcAddress("glVertexAttrib3d"), &vertexAttrib3d);
990 AssignGLEntryPoint(loadProcAddress("glVertexAttrib3dv"), &vertexAttrib3dv);
991 AssignGLEntryPoint(loadProcAddress("glVertexAttrib3f"), &vertexAttrib3f);
992 AssignGLEntryPoint(loadProcAddress("glVertexAttrib3fv"), &vertexAttrib3fv);
993 AssignGLEntryPoint(loadProcAddress("glVertexAttrib3s"), &vertexAttrib3s);
994 AssignGLEntryPoint(loadProcAddress("glVertexAttrib3sv"), &vertexAttrib3sv);
995 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4Nbv"), &vertexAttrib4Nbv);
996 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4Niv"), &vertexAttrib4Niv);
997 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4Nsv"), &vertexAttrib4Nsv);
998 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4Nub"), &vertexAttrib4Nub);
999 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4Nubv"), &vertexAttrib4Nubv);
1000 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4Nuiv"), &vertexAttrib4Nuiv);
1001 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4Nusv"), &vertexAttrib4Nusv);
1002 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4bv"), &vertexAttrib4bv);
1003 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4d"), &vertexAttrib4d);
1004 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4dv"), &vertexAttrib4dv);
1005 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4f"), &vertexAttrib4f);
1006 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4fv"), &vertexAttrib4fv);
1007 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4iv"), &vertexAttrib4iv);
1008 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4s"), &vertexAttrib4s);
1009 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4sv"), &vertexAttrib4sv);
1010 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4ubv"), &vertexAttrib4ubv);
1011 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4uiv"), &vertexAttrib4uiv);
1012 AssignGLEntryPoint(loadProcAddress("glVertexAttrib4usv"), &vertexAttrib4usv);
1013 AssignGLEntryPoint(loadProcAddress("glVertexAttribPointer"), &vertexAttribPointer);
1014 }
1015
1016 // 2.1
1017 if (majorVersion > 2 || majorVersion == 2 && minorVersion >= 1)
1018 {
1019 AssignGLEntryPoint(loadProcAddress("glUniformMatrix2x3fv"), &uniformMatrix2x3fv);
1020 AssignGLEntryPoint(loadProcAddress("glUniformMatrix2x4fv"), &uniformMatrix2x4fv);
1021 AssignGLEntryPoint(loadProcAddress("glUniformMatrix3x2fv"), &uniformMatrix3x2fv);
1022 AssignGLEntryPoint(loadProcAddress("glUniformMatrix3x4fv"), &uniformMatrix3x4fv);
1023 AssignGLEntryPoint(loadProcAddress("glUniformMatrix4x2fv"), &uniformMatrix4x2fv);
1024 AssignGLEntryPoint(loadProcAddress("glUniformMatrix4x3fv"), &uniformMatrix4x3fv);
1025 }
1026
1027 // 3.0
1028 if (majorVersion > 3 || majorVersion == 3 && minorVersion >= 0)
1029 {
1030 AssignGLEntryPoint(loadProcAddress("glBeginConditionalRender"), &beginConditionalRender);
1031 AssignGLEntryPoint(loadProcAddress("glBeginTransformFeedback"), &beginTransformFeedback);
1032 AssignGLEntryPoint(loadProcAddress("glBindBufferBase"), &bindBufferBase);
1033 AssignGLEntryPoint(loadProcAddress("glBindBufferRange"), &bindBufferRange);
1034 AssignGLEntryPoint(loadProcAddress("glBindFragDataLocation"), &bindFragDataLocation);
1035 AssignGLEntryPoint(loadProcAddress("glBindFramebuffer"), &bindFramebuffer);
1036 AssignGLEntryPoint(loadProcAddress("glBindRenderbuffer"), &bindRenderbuffer);
1037 AssignGLEntryPoint(loadProcAddress("glBindVertexArray"), &bindVertexArray);
1038 AssignGLEntryPoint(loadProcAddress("glBlitFramebuffer"), &blitFramebuffer);
1039 AssignGLEntryPoint(loadProcAddress("glCheckFramebufferStatus"), &checkFramebufferStatus);
1040 AssignGLEntryPoint(loadProcAddress("glClampColor"), &clampColor);
1041 AssignGLEntryPoint(loadProcAddress("glClearBufferfi"), &clearBufferfi);
1042 AssignGLEntryPoint(loadProcAddress("glClearBufferfv"), &clearBufferfv);
1043 AssignGLEntryPoint(loadProcAddress("glClearBufferiv"), &clearBufferiv);
1044 AssignGLEntryPoint(loadProcAddress("glClearBufferuiv"), &clearBufferuiv);
1045 AssignGLEntryPoint(loadProcAddress("glColorMaski"), &colorMaski);
1046 AssignGLEntryPoint(loadProcAddress("glDeleteFramebuffers"), &deleteFramebuffers);
1047 AssignGLEntryPoint(loadProcAddress("glDeleteRenderbuffers"), &deleteRenderbuffers);
1048 AssignGLEntryPoint(loadProcAddress("glDeleteVertexArrays"), &deleteVertexArrays);
1049 AssignGLEntryPoint(loadProcAddress("glDisablei"), &disablei);
1050 AssignGLEntryPoint(loadProcAddress("glEnablei"), &enablei);
1051 AssignGLEntryPoint(loadProcAddress("glEndConditionalRender"), &endConditionalRender);
1052 AssignGLEntryPoint(loadProcAddress("glEndTransformFeedback"), &endTransformFeedback);
1053 AssignGLEntryPoint(loadProcAddress("glFlushMappedBufferRange"), &flushMappedBufferRange);
1054 AssignGLEntryPoint(loadProcAddress("glFramebufferRenderbuffer"), &framebufferRenderbuffer);
1055 AssignGLEntryPoint(loadProcAddress("glFramebufferTexture1D"), &framebufferTexture1D);
1056 AssignGLEntryPoint(loadProcAddress("glFramebufferTexture2D"), &framebufferTexture2D);
1057 AssignGLEntryPoint(loadProcAddress("glFramebufferTexture3D"), &framebufferTexture3D);
1058 AssignGLEntryPoint(loadProcAddress("glFramebufferTextureLayer"), &framebufferTextureLayer);
1059 AssignGLEntryPoint(loadProcAddress("glGenFramebuffers"), &genFramebuffers);
1060 AssignGLEntryPoint(loadProcAddress("glGenRenderbuffers"), &genRenderbuffers);
1061 AssignGLEntryPoint(loadProcAddress("glGenVertexArrays"), &genVertexArrays);
1062 AssignGLEntryPoint(loadProcAddress("glGenerateMipmap"), &generateMipmap);
1063 AssignGLEntryPoint(loadProcAddress("glGetBooleani_v"), &getBooleani_v);
1064 AssignGLEntryPoint(loadProcAddress("glGetFragDataLocation"), &getFragDataLocation);
1065 AssignGLEntryPoint(loadProcAddress("glGetFramebufferAttachmentParameteriv"), &getFramebufferAttachmentParameteriv);
1066 AssignGLEntryPoint(loadProcAddress("glGetIntegeri_v"), &getIntegeri_v);
1067 AssignGLEntryPoint(loadProcAddress("glGetRenderbufferParameteriv"), &getRenderbufferParameteriv);
1068 AssignGLEntryPoint(loadProcAddress("glGetStringi"), &getStringi);
1069 AssignGLEntryPoint(loadProcAddress("glGetTexParameterIiv"), &getTexParameterIiv);
1070 AssignGLEntryPoint(loadProcAddress("glGetTexParameterIuiv"), &getTexParameterIuiv);
1071 AssignGLEntryPoint(loadProcAddress("glGetTransformFeedbackVarying"), &getTransformFeedbackVarying);
1072 AssignGLEntryPoint(loadProcAddress("glGetUniformuiv"), &getUniformuiv);
1073 AssignGLEntryPoint(loadProcAddress("glGetVertexAttribIiv"), &getVertexAttribIiv);
1074 AssignGLEntryPoint(loadProcAddress("glGetVertexAttribIuiv"), &getVertexAttribIuiv);
1075 AssignGLEntryPoint(loadProcAddress("glIsEnabledi"), &isEnabledi);
1076 AssignGLEntryPoint(loadProcAddress("glIsFramebuffer"), &isFramebuffer);
1077 AssignGLEntryPoint(loadProcAddress("glIsRenderbuffer"), &isRenderbuffer);
1078 AssignGLEntryPoint(loadProcAddress("glIsVertexArray"), &isVertexArray);
1079 AssignGLEntryPoint(loadProcAddress("glMapBufferRange"), &mapBufferRange);
1080 AssignGLEntryPoint(loadProcAddress("glRenderbufferStorage"), &renderbufferStorage);
1081 AssignGLEntryPoint(loadProcAddress("glRenderbufferStorageMultisample"), &renderbufferStorageMultisample);
1082 AssignGLEntryPoint(loadProcAddress("glTexParameterIiv"), &texParameterIiv);
1083 AssignGLEntryPoint(loadProcAddress("glTexParameterIuiv"), &texParameterIuiv);
1084 AssignGLEntryPoint(loadProcAddress("glTransformFeedbackVaryings"), &transformFeedbackVaryings);
1085 AssignGLEntryPoint(loadProcAddress("glUniform1ui"), &uniform1ui);
1086 AssignGLEntryPoint(loadProcAddress("glUniform1uiv"), &uniform1uiv);
1087 AssignGLEntryPoint(loadProcAddress("glUniform2ui"), &uniform2ui);
1088 AssignGLEntryPoint(loadProcAddress("glUniform2uiv"), &uniform2uiv);
1089 AssignGLEntryPoint(loadProcAddress("glUniform3ui"), &uniform3ui);
1090 AssignGLEntryPoint(loadProcAddress("glUniform3uiv"), &uniform3uiv);
1091 AssignGLEntryPoint(loadProcAddress("glUniform4ui"), &uniform4ui);
1092 AssignGLEntryPoint(loadProcAddress("glUniform4uiv"), &uniform4uiv);
1093 AssignGLEntryPoint(loadProcAddress("glVertexAttribI1i"), &vertexAttribI1i);
1094 AssignGLEntryPoint(loadProcAddress("glVertexAttribI1iv"), &vertexAttribI1iv);
1095 AssignGLEntryPoint(loadProcAddress("glVertexAttribI1ui"), &vertexAttribI1ui);
1096 AssignGLEntryPoint(loadProcAddress("glVertexAttribI1uiv"), &vertexAttribI1uiv);
1097 AssignGLEntryPoint(loadProcAddress("glVertexAttribI2i"), &vertexAttribI2i);
1098 AssignGLEntryPoint(loadProcAddress("glVertexAttribI2iv"), &vertexAttribI2iv);
1099 AssignGLEntryPoint(loadProcAddress("glVertexAttribI2ui"), &vertexAttribI2ui);
1100 AssignGLEntryPoint(loadProcAddress("glVertexAttribI2uiv"), &vertexAttribI2uiv);
1101 AssignGLEntryPoint(loadProcAddress("glVertexAttribI3i"), &vertexAttribI3i);
1102 AssignGLEntryPoint(loadProcAddress("glVertexAttribI3iv"), &vertexAttribI3iv);
1103 AssignGLEntryPoint(loadProcAddress("glVertexAttribI3ui"), &vertexAttribI3ui);
1104 AssignGLEntryPoint(loadProcAddress("glVertexAttribI3uiv"), &vertexAttribI3uiv);
1105 AssignGLEntryPoint(loadProcAddress("glVertexAttribI4bv"), &vertexAttribI4bv);
1106 AssignGLEntryPoint(loadProcAddress("glVertexAttribI4i"), &vertexAttribI4i);
1107 AssignGLEntryPoint(loadProcAddress("glVertexAttribI4iv"), &vertexAttribI4iv);
1108 AssignGLEntryPoint(loadProcAddress("glVertexAttribI4sv"), &vertexAttribI4sv);
1109 AssignGLEntryPoint(loadProcAddress("glVertexAttribI4ubv"), &vertexAttribI4ubv);
1110 AssignGLEntryPoint(loadProcAddress("glVertexAttribI4ui"), &vertexAttribI4ui);
1111 AssignGLEntryPoint(loadProcAddress("glVertexAttribI4uiv"), &vertexAttribI4uiv);
1112 AssignGLEntryPoint(loadProcAddress("glVertexAttribI4usv"), &vertexAttribI4usv);
1113 AssignGLEntryPoint(loadProcAddress("glVertexAttribIPointer"), &vertexAttribIPointer);
Geoff Langa4903b72015-03-02 16:02:48 -08001114
1115 // Extensions
1116 AssignGLExtensionEntryPoint(extensions, "GL_ARB_internalformat_query", loadProcAddress("glGetInternalformativ"), &getInternalformativ);
Geoff Lang56cf9af2015-02-17 10:16:49 -05001117 }
1118
1119 // 3.1
1120 if (majorVersion > 3 || majorVersion == 3 && minorVersion >= 1)
1121 {
1122 AssignGLEntryPoint(loadProcAddress("glCopyBufferSubData"), &copyBufferSubData);
1123 AssignGLEntryPoint(loadProcAddress("glDrawArraysInstanced"), &drawArraysInstanced);
1124 AssignGLEntryPoint(loadProcAddress("glDrawElementsInstanced"), &drawElementsInstanced);
1125 AssignGLEntryPoint(loadProcAddress("glGetActiveUniformBlockName"), &getActiveUniformBlockName);
1126 AssignGLEntryPoint(loadProcAddress("glGetActiveUniformBlockiv"), &getActiveUniformBlockiv);
1127 AssignGLEntryPoint(loadProcAddress("glGetActiveUniformName"), &getActiveUniformName);
1128 AssignGLEntryPoint(loadProcAddress("glGetActiveUniformsiv"), &getActiveUniformsiv);
1129 AssignGLEntryPoint(loadProcAddress("glGetUniformBlockIndex"), &getUniformBlockIndex);
1130 AssignGLEntryPoint(loadProcAddress("glGetUniformIndices"), &getUniformIndices);
1131 AssignGLEntryPoint(loadProcAddress("glPrimitiveRestartIndex"), &primitiveRestartIndex);
1132 AssignGLEntryPoint(loadProcAddress("glTexBuffer"), &texBuffer);
1133 AssignGLEntryPoint(loadProcAddress("glUniformBlockBinding"), &uniformBlockBinding);
Geoff Lang7d433dd2015-04-02 11:21:20 -04001134
1135 // Extensions
1136 AssignGLExtensionEntryPoint(extensions, "GL_ARB_sync", loadProcAddress("glClientWaitSync"), &clientWaitSync);
1137 AssignGLExtensionEntryPoint(extensions, "GL_ARB_sync", loadProcAddress("glDeleteSync"), &deleteSync);
1138 AssignGLExtensionEntryPoint(extensions, "GL_ARB_sync", loadProcAddress("glFenceSync"), &fenceSync);
1139 AssignGLExtensionEntryPoint(extensions, "GL_ARB_sync", loadProcAddress("glGetInteger64i_v"), &getInteger64i_v);
1140 AssignGLExtensionEntryPoint(extensions, "GL_ARB_sync", loadProcAddress("glGetInteger64v"), &getInteger64v);
1141 AssignGLExtensionEntryPoint(extensions, "GL_ARB_sync", loadProcAddress("glGetSynciv"), &getSynciv);
1142 AssignGLExtensionEntryPoint(extensions, "GL_ARB_sync", loadProcAddress("glIsSync"), &isSync);
1143 AssignGLExtensionEntryPoint(extensions, "GL_ARB_sync", loadProcAddress("glWaitSync"), &waitSync);
Geoff Lang56cf9af2015-02-17 10:16:49 -05001144 }
1145
1146 // 3.2
1147 if (majorVersion > 3 || majorVersion == 3 && minorVersion >= 2)
1148 {
1149 AssignGLEntryPoint(loadProcAddress("glClientWaitSync"), &clientWaitSync);
1150 AssignGLEntryPoint(loadProcAddress("glDeleteSync"), &deleteSync);
1151 AssignGLEntryPoint(loadProcAddress("glDrawElementsBaseVertex"), &drawElementsBaseVertex);
1152 AssignGLEntryPoint(loadProcAddress("glDrawElementsInstancedBaseVertex"), &drawElementsInstancedBaseVertex);
1153 AssignGLEntryPoint(loadProcAddress("glDrawRangeElementsBaseVertex"), &drawRangeElementsBaseVertex);
1154 AssignGLEntryPoint(loadProcAddress("glFenceSync"), &fenceSync);
1155 AssignGLEntryPoint(loadProcAddress("glFramebufferTexture"), &framebufferTexture);
1156 AssignGLEntryPoint(loadProcAddress("glGetBufferParameteri64v"), &getBufferParameteri64v);
1157 AssignGLEntryPoint(loadProcAddress("glGetInteger64i_v"), &getInteger64i_v);
1158 AssignGLEntryPoint(loadProcAddress("glGetInteger64v"), &getInteger64v);
1159 AssignGLEntryPoint(loadProcAddress("glGetMultisamplefv"), &getMultisamplefv);
1160 AssignGLEntryPoint(loadProcAddress("glGetSynciv"), &getSynciv);
1161 AssignGLEntryPoint(loadProcAddress("glIsSync"), &isSync);
1162 AssignGLEntryPoint(loadProcAddress("glMultiDrawElementsBaseVertex"), &multiDrawElementsBaseVertex);
1163 AssignGLEntryPoint(loadProcAddress("glProvokingVertex"), &provokingVertex);
1164 AssignGLEntryPoint(loadProcAddress("glSampleMaski"), &sampleMaski);
1165 AssignGLEntryPoint(loadProcAddress("glTexImage2DMultisample"), &texImage2DMultisample);
1166 AssignGLEntryPoint(loadProcAddress("glTexImage3DMultisample"), &texImage3DMultisample);
1167 AssignGLEntryPoint(loadProcAddress("glWaitSync"), &waitSync);
1168 }
1169
1170 // 3.3
1171 if (majorVersion > 3 || majorVersion == 3 && minorVersion >= 3)
1172 {
1173 AssignGLEntryPoint(loadProcAddress("glBindFragDataLocationIndexed"), &bindFragDataLocationIndexed);
1174 AssignGLEntryPoint(loadProcAddress("glBindSampler"), &bindSampler);
1175 AssignGLEntryPoint(loadProcAddress("glDeleteSamplers"), &deleteSamplers);
1176 AssignGLEntryPoint(loadProcAddress("glGenSamplers"), &genSamplers);
1177 AssignGLEntryPoint(loadProcAddress("glGetFragDataIndex"), &getFragDataIndex);
1178 AssignGLEntryPoint(loadProcAddress("glGetQueryObjecti64v"), &getQueryObjecti64v);
1179 AssignGLEntryPoint(loadProcAddress("glGetQueryObjectui64v"), &getQueryObjectui64v);
1180 AssignGLEntryPoint(loadProcAddress("glGetSamplerParameterIiv"), &getSamplerParameterIiv);
1181 AssignGLEntryPoint(loadProcAddress("glGetSamplerParameterIuiv"), &getSamplerParameterIuiv);
1182 AssignGLEntryPoint(loadProcAddress("glGetSamplerParameterfv"), &getSamplerParameterfv);
1183 AssignGLEntryPoint(loadProcAddress("glGetSamplerParameteriv"), &getSamplerParameteriv);
1184 AssignGLEntryPoint(loadProcAddress("glIsSampler"), &isSampler);
1185 AssignGLEntryPoint(loadProcAddress("glQueryCounter"), &queryCounter);
1186 AssignGLEntryPoint(loadProcAddress("glSamplerParameterIiv"), &samplerParameterIiv);
1187 AssignGLEntryPoint(loadProcAddress("glSamplerParameterIuiv"), &samplerParameterIuiv);
1188 AssignGLEntryPoint(loadProcAddress("glSamplerParameterf"), &samplerParameterf);
1189 AssignGLEntryPoint(loadProcAddress("glSamplerParameterfv"), &samplerParameterfv);
1190 AssignGLEntryPoint(loadProcAddress("glSamplerParameteri"), &samplerParameteri);
1191 AssignGLEntryPoint(loadProcAddress("glSamplerParameteriv"), &samplerParameteriv);
1192 AssignGLEntryPoint(loadProcAddress("glVertexAttribDivisor"), &vertexAttribDivisor);
1193 AssignGLEntryPoint(loadProcAddress("glVertexAttribP1ui"), &vertexAttribP1ui);
1194 AssignGLEntryPoint(loadProcAddress("glVertexAttribP1uiv"), &vertexAttribP1uiv);
1195 AssignGLEntryPoint(loadProcAddress("glVertexAttribP2ui"), &vertexAttribP2ui);
1196 AssignGLEntryPoint(loadProcAddress("glVertexAttribP2uiv"), &vertexAttribP2uiv);
1197 AssignGLEntryPoint(loadProcAddress("glVertexAttribP3ui"), &vertexAttribP3ui);
1198 AssignGLEntryPoint(loadProcAddress("glVertexAttribP3uiv"), &vertexAttribP3uiv);
1199 AssignGLEntryPoint(loadProcAddress("glVertexAttribP4ui"), &vertexAttribP4ui);
1200 AssignGLEntryPoint(loadProcAddress("glVertexAttribP4uiv"), &vertexAttribP4uiv);
1201 }
1202
1203 // 4.0
1204 if (majorVersion > 4 || majorVersion == 4 && minorVersion >= 0)
1205 {
1206 AssignGLEntryPoint(loadProcAddress("glBeginQueryIndexed"), &beginQueryIndexed);
1207 AssignGLEntryPoint(loadProcAddress("glBindTransformFeedback"), &bindTransformFeedback);
1208 AssignGLEntryPoint(loadProcAddress("glBlendEquationSeparatei"), &blendEquationSeparatei);
1209 AssignGLEntryPoint(loadProcAddress("glBlendEquationi"), &blendEquationi);
1210 AssignGLEntryPoint(loadProcAddress("glBlendFuncSeparatei"), &blendFuncSeparatei);
1211 AssignGLEntryPoint(loadProcAddress("glBlendFunci"), &blendFunci);
1212 AssignGLEntryPoint(loadProcAddress("glDeleteTransformFeedbacks"), &deleteTransformFeedbacks);
1213 AssignGLEntryPoint(loadProcAddress("glDrawArraysIndirect"), &drawArraysIndirect);
1214 AssignGLEntryPoint(loadProcAddress("glDrawElementsIndirect"), &drawElementsIndirect);
1215 AssignGLEntryPoint(loadProcAddress("glDrawTransformFeedback"), &drawTransformFeedback);
1216 AssignGLEntryPoint(loadProcAddress("glDrawTransformFeedbackStream"), &drawTransformFeedbackStream);
1217 AssignGLEntryPoint(loadProcAddress("glEndQueryIndexed"), &endQueryIndexed);
1218 AssignGLEntryPoint(loadProcAddress("glGenTransformFeedbacks"), &genTransformFeedbacks);
1219 AssignGLEntryPoint(loadProcAddress("glGetActiveSubroutineName"), &getActiveSubroutineName);
1220 AssignGLEntryPoint(loadProcAddress("glGetActiveSubroutineUniformName"), &getActiveSubroutineUniformName);
1221 AssignGLEntryPoint(loadProcAddress("glGetActiveSubroutineUniformiv"), &getActiveSubroutineUniformiv);
1222 AssignGLEntryPoint(loadProcAddress("glGetProgramStageiv"), &getProgramStageiv);
1223 AssignGLEntryPoint(loadProcAddress("glGetQueryIndexediv"), &getQueryIndexediv);
1224 AssignGLEntryPoint(loadProcAddress("glGetSubroutineIndex"), &getSubroutineIndex);
1225 AssignGLEntryPoint(loadProcAddress("glGetSubroutineUniformLocation"), &getSubroutineUniformLocation);
1226 AssignGLEntryPoint(loadProcAddress("glGetUniformSubroutineuiv"), &getUniformSubroutineuiv);
1227 AssignGLEntryPoint(loadProcAddress("glGetUniformdv"), &getUniformdv);
1228 AssignGLEntryPoint(loadProcAddress("glIsTransformFeedback"), &isTransformFeedback);
1229 AssignGLEntryPoint(loadProcAddress("glMinSampleShading"), &minSampleShading);
1230 AssignGLEntryPoint(loadProcAddress("glPatchParameterfv"), &patchParameterfv);
1231 AssignGLEntryPoint(loadProcAddress("glPatchParameteri"), &patchParameteri);
1232 AssignGLEntryPoint(loadProcAddress("glPauseTransformFeedback"), &pauseTransformFeedback);
1233 AssignGLEntryPoint(loadProcAddress("glResumeTransformFeedback"), &resumeTransformFeedback);
1234 AssignGLEntryPoint(loadProcAddress("glUniform1d"), &uniform1d);
1235 AssignGLEntryPoint(loadProcAddress("glUniform1dv"), &uniform1dv);
1236 AssignGLEntryPoint(loadProcAddress("glUniform2d"), &uniform2d);
1237 AssignGLEntryPoint(loadProcAddress("glUniform2dv"), &uniform2dv);
1238 AssignGLEntryPoint(loadProcAddress("glUniform3d"), &uniform3d);
1239 AssignGLEntryPoint(loadProcAddress("glUniform3dv"), &uniform3dv);
1240 AssignGLEntryPoint(loadProcAddress("glUniform4d"), &uniform4d);
1241 AssignGLEntryPoint(loadProcAddress("glUniform4dv"), &uniform4dv);
1242 AssignGLEntryPoint(loadProcAddress("glUniformMatrix2dv"), &uniformMatrix2dv);
1243 AssignGLEntryPoint(loadProcAddress("glUniformMatrix2x3dv"), &uniformMatrix2x3dv);
1244 AssignGLEntryPoint(loadProcAddress("glUniformMatrix2x4dv"), &uniformMatrix2x4dv);
1245 AssignGLEntryPoint(loadProcAddress("glUniformMatrix3dv"), &uniformMatrix3dv);
1246 AssignGLEntryPoint(loadProcAddress("glUniformMatrix3x2dv"), &uniformMatrix3x2dv);
1247 AssignGLEntryPoint(loadProcAddress("glUniformMatrix3x4dv"), &uniformMatrix3x4dv);
1248 AssignGLEntryPoint(loadProcAddress("glUniformMatrix4dv"), &uniformMatrix4dv);
1249 AssignGLEntryPoint(loadProcAddress("glUniformMatrix4x2dv"), &uniformMatrix4x2dv);
1250 AssignGLEntryPoint(loadProcAddress("glUniformMatrix4x3dv"), &uniformMatrix4x3dv);
1251 AssignGLEntryPoint(loadProcAddress("glUniformSubroutinesuiv"), &uniformSubroutinesuiv);
1252 }
1253
1254 // 4.0
1255 if (majorVersion > 4 || majorVersion == 4 && minorVersion >= 1)
1256 {
1257 AssignGLEntryPoint(loadProcAddress("glActiveShaderProgram"), &activeShaderProgram);
1258 AssignGLEntryPoint(loadProcAddress("glBindProgramPipeline"), &bindProgramPipeline);
1259 AssignGLEntryPoint(loadProcAddress("glClearDepthf"), &clearDepthf);
1260 AssignGLEntryPoint(loadProcAddress("glCreateShaderProgramv"), &createShaderProgramv);
1261 AssignGLEntryPoint(loadProcAddress("glDeleteProgramPipelines"), &deleteProgramPipelines);
1262 AssignGLEntryPoint(loadProcAddress("glDepthRangeArrayv"), &depthRangeArrayv);
1263 AssignGLEntryPoint(loadProcAddress("glDepthRangeIndexed"), &depthRangeIndexed);
1264 AssignGLEntryPoint(loadProcAddress("glDepthRangef"), &depthRangef);
1265 AssignGLEntryPoint(loadProcAddress("glGenProgramPipelines"), &genProgramPipelines);
1266 AssignGLEntryPoint(loadProcAddress("glGetDoublei_v"), &getDoublei_v);
1267 AssignGLEntryPoint(loadProcAddress("glGetFloati_v"), &getFloati_v);
1268 AssignGLEntryPoint(loadProcAddress("glGetProgramBinary"), &getProgramBinary);
1269 AssignGLEntryPoint(loadProcAddress("glGetProgramPipelineInfoLog"), &getProgramPipelineInfoLog);
1270 AssignGLEntryPoint(loadProcAddress("glGetProgramPipelineiv"), &getProgramPipelineiv);
1271 AssignGLEntryPoint(loadProcAddress("glGetShaderPrecisionFormat"), &getShaderPrecisionFormat);
1272 AssignGLEntryPoint(loadProcAddress("glGetVertexAttribLdv"), &getVertexAttribLdv);
1273 AssignGLEntryPoint(loadProcAddress("glIsProgramPipeline"), &isProgramPipeline);
1274 AssignGLEntryPoint(loadProcAddress("glProgramBinary"), &programBinary);
1275 AssignGLEntryPoint(loadProcAddress("glProgramParameteri"), &programParameteri);
1276 AssignGLEntryPoint(loadProcAddress("glProgramUniform1d"), &programUniform1d);
1277 AssignGLEntryPoint(loadProcAddress("glProgramUniform1dv"), &programUniform1dv);
1278 AssignGLEntryPoint(loadProcAddress("glProgramUniform1f"), &programUniform1f);
1279 AssignGLEntryPoint(loadProcAddress("glProgramUniform1fv"), &programUniform1fv);
1280 AssignGLEntryPoint(loadProcAddress("glProgramUniform1i"), &programUniform1i);
1281 AssignGLEntryPoint(loadProcAddress("glProgramUniform1iv"), &programUniform1iv);
1282 AssignGLEntryPoint(loadProcAddress("glProgramUniform1ui"), &programUniform1ui);
1283 AssignGLEntryPoint(loadProcAddress("glProgramUniform1uiv"), &programUniform1uiv);
1284 AssignGLEntryPoint(loadProcAddress("glProgramUniform2d"), &programUniform2d);
1285 AssignGLEntryPoint(loadProcAddress("glProgramUniform2dv"), &programUniform2dv);
1286 AssignGLEntryPoint(loadProcAddress("glProgramUniform2f"), &programUniform2f);
1287 AssignGLEntryPoint(loadProcAddress("glProgramUniform2fv"), &programUniform2fv);
1288 AssignGLEntryPoint(loadProcAddress("glProgramUniform2i"), &programUniform2i);
1289 AssignGLEntryPoint(loadProcAddress("glProgramUniform2iv"), &programUniform2iv);
1290 AssignGLEntryPoint(loadProcAddress("glProgramUniform2ui"), &programUniform2ui);
1291 AssignGLEntryPoint(loadProcAddress("glProgramUniform2uiv"), &programUniform2uiv);
1292 AssignGLEntryPoint(loadProcAddress("glProgramUniform3d"), &programUniform3d);
1293 AssignGLEntryPoint(loadProcAddress("glProgramUniform3dv"), &programUniform3dv);
1294 AssignGLEntryPoint(loadProcAddress("glProgramUniform3f"), &programUniform3f);
1295 AssignGLEntryPoint(loadProcAddress("glProgramUniform3fv"), &programUniform3fv);
1296 AssignGLEntryPoint(loadProcAddress("glProgramUniform3i"), &programUniform3i);
1297 AssignGLEntryPoint(loadProcAddress("glProgramUniform3iv"), &programUniform3iv);
1298 AssignGLEntryPoint(loadProcAddress("glProgramUniform3ui"), &programUniform3ui);
1299 AssignGLEntryPoint(loadProcAddress("glProgramUniform3uiv"), &programUniform3uiv);
1300 AssignGLEntryPoint(loadProcAddress("glProgramUniform4d"), &programUniform4d);
1301 AssignGLEntryPoint(loadProcAddress("glProgramUniform4dv"), &programUniform4dv);
1302 AssignGLEntryPoint(loadProcAddress("glProgramUniform4f"), &programUniform4f);
1303 AssignGLEntryPoint(loadProcAddress("glProgramUniform4fv"), &programUniform4fv);
1304 AssignGLEntryPoint(loadProcAddress("glProgramUniform4i"), &programUniform4i);
1305 AssignGLEntryPoint(loadProcAddress("glProgramUniform4iv"), &programUniform4iv);
1306 AssignGLEntryPoint(loadProcAddress("glProgramUniform4ui"), &programUniform4ui);
1307 AssignGLEntryPoint(loadProcAddress("glProgramUniform4uiv"), &programUniform4uiv);
1308 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix2dv"), &programUniformMatrix2dv);
1309 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix2fv"), &programUniformMatrix2fv);
1310 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix2x3dv"), &programUniformMatrix2x3dv);
1311 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix2x3fv"), &programUniformMatrix2x3fv);
1312 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix2x4dv"), &programUniformMatrix2x4dv);
1313 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix2x4fv"), &programUniformMatrix2x4fv);
1314 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix3dv"), &programUniformMatrix3dv);
1315 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix3fv"), &programUniformMatrix3fv);
1316 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix3x2dv"), &programUniformMatrix3x2dv);
1317 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix3x2fv"), &programUniformMatrix3x2fv);
1318 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix3x4dv"), &programUniformMatrix3x4dv);
1319 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix3x4fv"), &programUniformMatrix3x4fv);
1320 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix4dv"), &programUniformMatrix4dv);
1321 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix4fv"), &programUniformMatrix4fv);
1322 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix4x2dv"), &programUniformMatrix4x2dv);
1323 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix4x2fv"), &programUniformMatrix4x2fv);
1324 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix4x3dv"), &programUniformMatrix4x3dv);
1325 AssignGLEntryPoint(loadProcAddress("glProgramUniformMatrix4x3fv"), &programUniformMatrix4x3fv);
1326 AssignGLEntryPoint(loadProcAddress("glReleaseShaderCompiler"), &releaseShaderCompiler);
1327 AssignGLEntryPoint(loadProcAddress("glScissorArrayv"), &scissorArrayv);
1328 AssignGLEntryPoint(loadProcAddress("glScissorIndexed"), &scissorIndexed);
1329 AssignGLEntryPoint(loadProcAddress("glScissorIndexedv"), &scissorIndexedv);
1330 AssignGLEntryPoint(loadProcAddress("glShaderBinary"), &shaderBinary);
1331 AssignGLEntryPoint(loadProcAddress("glUseProgramStages"), &useProgramStages);
1332 AssignGLEntryPoint(loadProcAddress("glValidateProgramPipeline"), &validateProgramPipeline);
1333 AssignGLEntryPoint(loadProcAddress("glVertexAttribL1d"), &vertexAttribL1d);
1334 AssignGLEntryPoint(loadProcAddress("glVertexAttribL1dv"), &vertexAttribL1dv);
1335 AssignGLEntryPoint(loadProcAddress("glVertexAttribL2d"), &vertexAttribL2d);
1336 AssignGLEntryPoint(loadProcAddress("glVertexAttribL2dv"), &vertexAttribL2dv);
1337 AssignGLEntryPoint(loadProcAddress("glVertexAttribL3d"), &vertexAttribL3d);
1338 AssignGLEntryPoint(loadProcAddress("glVertexAttribL3dv"), &vertexAttribL3dv);
1339 AssignGLEntryPoint(loadProcAddress("glVertexAttribL4d"), &vertexAttribL4d);
1340 AssignGLEntryPoint(loadProcAddress("glVertexAttribL4dv"), &vertexAttribL4dv);
1341 AssignGLEntryPoint(loadProcAddress("glVertexAttribLPointer"), &vertexAttribLPointer);
1342 AssignGLEntryPoint(loadProcAddress("glViewportArrayv"), &viewportArrayv);
1343 AssignGLEntryPoint(loadProcAddress("glViewportIndexedf"), &viewportIndexedf);
1344 AssignGLEntryPoint(loadProcAddress("glViewportIndexedfv"), &viewportIndexedfv);
1345 }
1346
1347 // 4.2
1348 if (majorVersion > 4 || majorVersion == 4 && minorVersion >= 2)
1349 {
1350 AssignGLEntryPoint(loadProcAddress("glBindImageTexture"), &bindImageTexture);
1351 AssignGLEntryPoint(loadProcAddress("glDrawArraysInstancedBaseInstance"), &drawArraysInstancedBaseInstance);
1352 AssignGLEntryPoint(loadProcAddress("glDrawElementsInstancedBaseInstance"), &drawElementsInstancedBaseInstance);
1353 AssignGLEntryPoint(loadProcAddress("glDrawElementsInstancedBaseVertexBaseInstance"), &drawElementsInstancedBaseVertexBaseInstance);
1354 AssignGLEntryPoint(loadProcAddress("glDrawTransformFeedbackInstanced"), &drawTransformFeedbackInstanced);
1355 AssignGLEntryPoint(loadProcAddress("glDrawTransformFeedbackStreamInstanced"), &drawTransformFeedbackStreamInstanced);
1356 AssignGLEntryPoint(loadProcAddress("glGetActiveAtomicCounterBufferiv"), &getActiveAtomicCounterBufferiv);
1357 AssignGLEntryPoint(loadProcAddress("glGetInternalformativ"), &getInternalformativ);
1358 AssignGLEntryPoint(loadProcAddress("glMemoryBarrier"), &memoryBarrier);
1359 AssignGLEntryPoint(loadProcAddress("glTexStorage1D"), &texStorage1D);
1360 AssignGLEntryPoint(loadProcAddress("glTexStorage2D"), &texStorage2D);
1361 AssignGLEntryPoint(loadProcAddress("glTexStorage3D"), &texStorage3D);
1362 }
1363
1364 // 4.3
1365 if (majorVersion > 4 || majorVersion == 4 && minorVersion >= 3)
1366 {
1367 AssignGLEntryPoint(loadProcAddress("glBindVertexBuffer"), &bindVertexBuffer);
1368 AssignGLEntryPoint(loadProcAddress("glClearBufferData"), &clearBufferData);
1369 AssignGLEntryPoint(loadProcAddress("glClearBufferSubData"), &clearBufferSubData);
1370 AssignGLEntryPoint(loadProcAddress("glCopyImageSubData"), &copyImageSubData);
1371 AssignGLEntryPoint(loadProcAddress("glDebugMessageCallback"), &debugMessageCallback);
1372 AssignGLEntryPoint(loadProcAddress("glDebugMessageControl"), &debugMessageControl);
1373 AssignGLEntryPoint(loadProcAddress("glDebugMessageInsert"), &debugMessageInsert);
1374 AssignGLEntryPoint(loadProcAddress("glDispatchCompute"), &dispatchCompute);
1375 AssignGLEntryPoint(loadProcAddress("glDispatchComputeIndirect"), &dispatchComputeIndirect);
1376 AssignGLEntryPoint(loadProcAddress("glFramebufferParameteri"), &framebufferParameteri);
1377 AssignGLEntryPoint(loadProcAddress("glGetDebugMessageLog"), &getDebugMessageLog);
1378 AssignGLEntryPoint(loadProcAddress("glGetFramebufferParameteriv"), &getFramebufferParameteriv);
1379 AssignGLEntryPoint(loadProcAddress("glGetInternalformati64v"), &getInternalformati64v);
1380 AssignGLEntryPoint(loadProcAddress("glGetObjectLabel"), &getObjectLabel);
1381 AssignGLEntryPoint(loadProcAddress("glGetObjectPtrLabel"), &getObjectPtrLabel);
1382 AssignGLEntryPoint(loadProcAddress("glGetProgramInterfaceiv"), &getProgramInterfaceiv);
1383 AssignGLEntryPoint(loadProcAddress("glGetProgramResourceIndex"), &getProgramResourceIndex);
1384 AssignGLEntryPoint(loadProcAddress("glGetProgramResourceLocation"), &getProgramResourceLocation);
1385 AssignGLEntryPoint(loadProcAddress("glGetProgramResourceLocationIndex"), &getProgramResourceLocationIndex);
1386 AssignGLEntryPoint(loadProcAddress("glGetProgramResourceName"), &getProgramResourceName);
1387 AssignGLEntryPoint(loadProcAddress("glGetProgramResourceiv"), &getProgramResourceiv);
1388 AssignGLEntryPoint(loadProcAddress("glInvalidateBufferData"), &invalidateBufferData);
1389 AssignGLEntryPoint(loadProcAddress("glInvalidateBufferSubData"), &invalidateBufferSubData);
1390 AssignGLEntryPoint(loadProcAddress("glInvalidateFramebuffer"), &invalidateFramebuffer);
1391 AssignGLEntryPoint(loadProcAddress("glInvalidateSubFramebuffer"), &invalidateSubFramebuffer);
1392 AssignGLEntryPoint(loadProcAddress("glInvalidateTexImage"), &invalidateTexImage);
1393 AssignGLEntryPoint(loadProcAddress("glInvalidateTexSubImage"), &invalidateTexSubImage);
1394 AssignGLEntryPoint(loadProcAddress("glMultiDrawArraysIndirect"), &multiDrawArraysIndirect);
1395 AssignGLEntryPoint(loadProcAddress("glMultiDrawElementsIndirect"), &multiDrawElementsIndirect);
1396 AssignGLEntryPoint(loadProcAddress("glObjectLabel"), &objectLabel);
1397 AssignGLEntryPoint(loadProcAddress("glObjectPtrLabel"), &objectPtrLabel);
1398 AssignGLEntryPoint(loadProcAddress("glPopDebugGroup"), &popDebugGroup);
1399 AssignGLEntryPoint(loadProcAddress("glPushDebugGroup"), &pushDebugGroup);
1400 AssignGLEntryPoint(loadProcAddress("glShaderStorageBlockBinding"), &shaderStorageBlockBinding);
1401 AssignGLEntryPoint(loadProcAddress("glTexBufferRange"), &texBufferRange);
1402 AssignGLEntryPoint(loadProcAddress("glTexStorage2DMultisample"), &texStorage2DMultisample);
1403 AssignGLEntryPoint(loadProcAddress("glTexStorage3DMultisample"), &texStorage3DMultisample);
1404 AssignGLEntryPoint(loadProcAddress("glTextureView"), &textureView);
1405 AssignGLEntryPoint(loadProcAddress("glVertexAttribBinding"), &vertexAttribBinding);
1406 AssignGLEntryPoint(loadProcAddress("glVertexAttribFormat"), &vertexAttribFormat);
1407 AssignGLEntryPoint(loadProcAddress("glVertexAttribIFormat"), &vertexAttribIFormat);
1408 AssignGLEntryPoint(loadProcAddress("glVertexAttribLFormat"), &vertexAttribLFormat);
1409 AssignGLEntryPoint(loadProcAddress("glVertexBindingDivisor"), &vertexBindingDivisor);
1410 }
1411
1412 // 4.4
1413 if (majorVersion > 4 || majorVersion == 4 && minorVersion >= 4)
1414 {
1415 AssignGLEntryPoint(loadProcAddress("glBindBuffersBase"), &bindBuffersBase);
1416 AssignGLEntryPoint(loadProcAddress("glBindBuffersRange"), &bindBuffersRange);
1417 AssignGLEntryPoint(loadProcAddress("glBindImageTextures"), &bindImageTextures);
1418 AssignGLEntryPoint(loadProcAddress("glBindSamplers"), &bindSamplers);
1419 AssignGLEntryPoint(loadProcAddress("glBindTextures"), &bindTextures);
1420 AssignGLEntryPoint(loadProcAddress("glBindVertexBuffers"), &bindVertexBuffers);
1421 AssignGLEntryPoint(loadProcAddress("glBufferStorage"), &bufferStorage);
1422 AssignGLEntryPoint(loadProcAddress("glClearTexImage"), &clearTexImage);
1423 AssignGLEntryPoint(loadProcAddress("glClearTexSubImage"), &clearTexSubImage);
1424 }
1425
1426 // 4.5
1427 if (majorVersion > 4 || majorVersion == 4 && minorVersion >= 5)
1428 {
1429 AssignGLEntryPoint(loadProcAddress("glBindTextureUnit"), &bindTextureUnit);
1430 AssignGLEntryPoint(loadProcAddress("glBlitNamedFramebuffer"), &blitNamedFramebuffer);
1431 AssignGLEntryPoint(loadProcAddress("glCheckNamedFramebufferStatus"), &checkNamedFramebufferStatus);
1432 AssignGLEntryPoint(loadProcAddress("glClearNamedBufferData"), &clearNamedBufferData);
1433 AssignGLEntryPoint(loadProcAddress("glClearNamedBufferSubData"), &clearNamedBufferSubData);
1434 AssignGLEntryPoint(loadProcAddress("glClearNamedFramebufferfi"), &clearNamedFramebufferfi);
1435 AssignGLEntryPoint(loadProcAddress("glClearNamedFramebufferfv"), &clearNamedFramebufferfv);
1436 AssignGLEntryPoint(loadProcAddress("glClearNamedFramebufferiv"), &clearNamedFramebufferiv);
1437 AssignGLEntryPoint(loadProcAddress("glClearNamedFramebufferuiv"), &clearNamedFramebufferuiv);
1438 AssignGLEntryPoint(loadProcAddress("glClipControl"), &clipControl);
1439 AssignGLEntryPoint(loadProcAddress("glCompressedTextureSubImage1D"), &compressedTextureSubImage1D);
1440 AssignGLEntryPoint(loadProcAddress("glCompressedTextureSubImage2D"), &compressedTextureSubImage2D);
1441 AssignGLEntryPoint(loadProcAddress("glCompressedTextureSubImage3D"), &compressedTextureSubImage3D);
1442 AssignGLEntryPoint(loadProcAddress("glCopyNamedBufferSubData"), &copyNamedBufferSubData);
1443 AssignGLEntryPoint(loadProcAddress("glCopyTextureSubImage1D"), &copyTextureSubImage1D);
1444 AssignGLEntryPoint(loadProcAddress("glCopyTextureSubImage2D"), &copyTextureSubImage2D);
1445 AssignGLEntryPoint(loadProcAddress("glCopyTextureSubImage3D"), &copyTextureSubImage3D);
1446 AssignGLEntryPoint(loadProcAddress("glCreateBuffers"), &createBuffers);
1447 AssignGLEntryPoint(loadProcAddress("glCreateFramebuffers"), &createFramebuffers);
1448 AssignGLEntryPoint(loadProcAddress("glCreateProgramPipelines"), &createProgramPipelines);
1449 AssignGLEntryPoint(loadProcAddress("glCreateQueries"), &createQueries);
1450 AssignGLEntryPoint(loadProcAddress("glCreateRenderbuffers"), &createRenderbuffers);
1451 AssignGLEntryPoint(loadProcAddress("glCreateSamplers"), &createSamplers);
1452 AssignGLEntryPoint(loadProcAddress("glCreateTextures"), &createTextures);
1453 AssignGLEntryPoint(loadProcAddress("glCreateTransformFeedbacks"), &createTransformFeedbacks);
1454 AssignGLEntryPoint(loadProcAddress("glCreateVertexArrays"), &createVertexArrays);
1455 AssignGLEntryPoint(loadProcAddress("glDisableVertexArrayAttrib"), &disableVertexArrayAttrib);
1456 AssignGLEntryPoint(loadProcAddress("glEnableVertexArrayAttrib"), &enableVertexArrayAttrib);
1457 AssignGLEntryPoint(loadProcAddress("glFlushMappedNamedBufferRange"), &flushMappedNamedBufferRange);
1458 AssignGLEntryPoint(loadProcAddress("glGenerateTextureMipmap"), &generateTextureMipmap);
1459 AssignGLEntryPoint(loadProcAddress("glGetCompressedTextureImage"), &getCompressedTextureImage);
1460 AssignGLEntryPoint(loadProcAddress("glGetCompressedTextureSubImage"), &getCompressedTextureSubImage);
1461 AssignGLEntryPoint(loadProcAddress("glGetGraphicsResetStatus"), &getGraphicsResetStatus);
1462 AssignGLEntryPoint(loadProcAddress("glGetNamedBufferParameteri64v"), &getNamedBufferParameteri64v);
1463 AssignGLEntryPoint(loadProcAddress("glGetNamedBufferParameteriv"), &getNamedBufferParameteriv);
1464 AssignGLEntryPoint(loadProcAddress("glGetNamedBufferPointerv"), &getNamedBufferPointerv);
1465 AssignGLEntryPoint(loadProcAddress("glGetNamedBufferSubData"), &getNamedBufferSubData);
1466 AssignGLEntryPoint(loadProcAddress("glGetNamedFramebufferAttachmentParameteriv"), &getNamedFramebufferAttachmentParameteriv);
1467 AssignGLEntryPoint(loadProcAddress("glGetNamedFramebufferParameteriv"), &getNamedFramebufferParameteriv);
1468 AssignGLEntryPoint(loadProcAddress("glGetNamedRenderbufferParameteriv"), &getNamedRenderbufferParameteriv);
1469 AssignGLEntryPoint(loadProcAddress("glGetQueryBufferObjecti64v"), &getQueryBufferObjecti64v);
1470 AssignGLEntryPoint(loadProcAddress("glGetQueryBufferObjectiv"), &getQueryBufferObjectiv);
1471 AssignGLEntryPoint(loadProcAddress("glGetQueryBufferObjectui64v"), &getQueryBufferObjectui64v);
1472 AssignGLEntryPoint(loadProcAddress("glGetQueryBufferObjectuiv"), &getQueryBufferObjectuiv);
1473 AssignGLEntryPoint(loadProcAddress("glGetTextureImage"), &getTextureImage);
1474 AssignGLEntryPoint(loadProcAddress("glGetTextureLevelParameterfv"), &getTextureLevelParameterfv);
1475 AssignGLEntryPoint(loadProcAddress("glGetTextureLevelParameteriv"), &getTextureLevelParameteriv);
1476 AssignGLEntryPoint(loadProcAddress("glGetTextureParameterIiv"), &getTextureParameterIiv);
1477 AssignGLEntryPoint(loadProcAddress("glGetTextureParameterIuiv"), &getTextureParameterIuiv);
1478 AssignGLEntryPoint(loadProcAddress("glGetTextureParameterfv"), &getTextureParameterfv);
1479 AssignGLEntryPoint(loadProcAddress("glGetTextureParameteriv"), &getTextureParameteriv);
1480 AssignGLEntryPoint(loadProcAddress("glGetTextureSubImage"), &getTextureSubImage);
1481 AssignGLEntryPoint(loadProcAddress("glGetTransformFeedbacki64_v"), &getTransformFeedbacki64_v);
1482 AssignGLEntryPoint(loadProcAddress("glGetTransformFeedbacki_v"), &getTransformFeedbacki_v);
1483 AssignGLEntryPoint(loadProcAddress("glGetTransformFeedbackiv"), &getTransformFeedbackiv);
1484 AssignGLEntryPoint(loadProcAddress("glGetVertexArrayIndexed64iv"), &getVertexArrayIndexed64iv);
1485 AssignGLEntryPoint(loadProcAddress("glGetVertexArrayIndexediv"), &getVertexArrayIndexediv);
1486 AssignGLEntryPoint(loadProcAddress("glGetVertexArrayiv"), &getVertexArrayiv);
1487 AssignGLEntryPoint(loadProcAddress("glGetnCompressedTexImage"), &getnCompressedTexImage);
1488 AssignGLEntryPoint(loadProcAddress("glGetnTexImage"), &getnTexImage);
1489 AssignGLEntryPoint(loadProcAddress("glGetnUniformdv"), &getnUniformdv);
1490 AssignGLEntryPoint(loadProcAddress("glGetnUniformfv"), &getnUniformfv);
1491 AssignGLEntryPoint(loadProcAddress("glGetnUniformiv"), &getnUniformiv);
1492 AssignGLEntryPoint(loadProcAddress("glGetnUniformuiv"), &getnUniformuiv);
1493 AssignGLEntryPoint(loadProcAddress("glInvalidateNamedFramebufferData"), &invalidateNamedFramebufferData);
1494 AssignGLEntryPoint(loadProcAddress("glInvalidateNamedFramebufferSubData"), &invalidateNamedFramebufferSubData);
1495 AssignGLEntryPoint(loadProcAddress("glMapNamedBuffer"), &mapNamedBuffer);
1496 AssignGLEntryPoint(loadProcAddress("glMapNamedBufferRange"), &mapNamedBufferRange);
1497 AssignGLEntryPoint(loadProcAddress("glMemoryBarrierByRegion"), &memoryBarrierByRegion);
1498 AssignGLEntryPoint(loadProcAddress("glNamedBufferData"), &namedBufferData);
1499 AssignGLEntryPoint(loadProcAddress("glNamedBufferStorage"), &namedBufferStorage);
1500 AssignGLEntryPoint(loadProcAddress("glNamedBufferSubData"), &namedBufferSubData);
1501 AssignGLEntryPoint(loadProcAddress("glNamedFramebufferDrawBuffer"), &namedFramebufferDrawBuffer);
1502 AssignGLEntryPoint(loadProcAddress("glNamedFramebufferDrawBuffers"), &namedFramebufferDrawBuffers);
1503 AssignGLEntryPoint(loadProcAddress("glNamedFramebufferParameteri"), &namedFramebufferParameteri);
1504 AssignGLEntryPoint(loadProcAddress("glNamedFramebufferReadBuffer"), &namedFramebufferReadBuffer);
1505 AssignGLEntryPoint(loadProcAddress("glNamedFramebufferRenderbuffer"), &namedFramebufferRenderbuffer);
1506 AssignGLEntryPoint(loadProcAddress("glNamedFramebufferTexture"), &namedFramebufferTexture);
1507 AssignGLEntryPoint(loadProcAddress("glNamedFramebufferTextureLayer"), &namedFramebufferTextureLayer);
1508 AssignGLEntryPoint(loadProcAddress("glNamedRenderbufferStorage"), &namedRenderbufferStorage);
1509 AssignGLEntryPoint(loadProcAddress("glNamedRenderbufferStorageMultisample"), &namedRenderbufferStorageMultisample);
1510 AssignGLEntryPoint(loadProcAddress("glReadnPixels"), &readnPixels);
1511 AssignGLEntryPoint(loadProcAddress("glTextureBarrier"), &textureBarrier);
1512 AssignGLEntryPoint(loadProcAddress("glTextureBuffer"), &textureBuffer);
1513 AssignGLEntryPoint(loadProcAddress("glTextureBufferRange"), &textureBufferRange);
1514 AssignGLEntryPoint(loadProcAddress("glTextureParameterIiv"), &textureParameterIiv);
1515 AssignGLEntryPoint(loadProcAddress("glTextureParameterIuiv"), &textureParameterIuiv);
1516 AssignGLEntryPoint(loadProcAddress("glTextureParameterf"), &textureParameterf);
1517 AssignGLEntryPoint(loadProcAddress("glTextureParameterfv"), &textureParameterfv);
1518 AssignGLEntryPoint(loadProcAddress("glTextureParameteri"), &textureParameteri);
1519 AssignGLEntryPoint(loadProcAddress("glTextureParameteriv"), &textureParameteriv);
1520 AssignGLEntryPoint(loadProcAddress("glTextureStorage1D"), &textureStorage1D);
1521 AssignGLEntryPoint(loadProcAddress("glTextureStorage2D"), &textureStorage2D);
1522 AssignGLEntryPoint(loadProcAddress("glTextureStorage2DMultisample"), &textureStorage2DMultisample);
1523 AssignGLEntryPoint(loadProcAddress("glTextureStorage3D"), &textureStorage3D);
1524 AssignGLEntryPoint(loadProcAddress("glTextureStorage3DMultisample"), &textureStorage3DMultisample);
1525 AssignGLEntryPoint(loadProcAddress("glTextureSubImage1D"), &textureSubImage1D);
1526 AssignGLEntryPoint(loadProcAddress("glTextureSubImage2D"), &textureSubImage2D);
1527 AssignGLEntryPoint(loadProcAddress("glTextureSubImage3D"), &textureSubImage3D);
1528 AssignGLEntryPoint(loadProcAddress("glTransformFeedbackBufferBase"), &transformFeedbackBufferBase);
1529 AssignGLEntryPoint(loadProcAddress("glTransformFeedbackBufferRange"), &transformFeedbackBufferRange);
1530 AssignGLEntryPoint(loadProcAddress("glUnmapNamedBuffer"), &unmapNamedBuffer);
1531 AssignGLEntryPoint(loadProcAddress("glVertexArrayAttribBinding"), &vertexArrayAttribBinding);
1532 AssignGLEntryPoint(loadProcAddress("glVertexArrayAttribFormat"), &vertexArrayAttribFormat);
1533 AssignGLEntryPoint(loadProcAddress("glVertexArrayAttribIFormat"), &vertexArrayAttribIFormat);
1534 AssignGLEntryPoint(loadProcAddress("glVertexArrayAttribLFormat"), &vertexArrayAttribLFormat);
1535 AssignGLEntryPoint(loadProcAddress("glVertexArrayBindingDivisor"), &vertexArrayBindingDivisor);
1536 AssignGLEntryPoint(loadProcAddress("glVertexArrayElementBuffer"), &vertexArrayElementBuffer);
1537 AssignGLEntryPoint(loadProcAddress("glVertexArrayVertexBuffer"), &vertexArrayVertexBuffer);
1538 AssignGLEntryPoint(loadProcAddress("glVertexArrayVertexBuffers"), &vertexArrayVertexBuffers);
1539 }
1540}
1541
1542}