Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(904)

Unified Diff: ui/gl/gl_bindings_autogen_gl0.cc

Issue 2629633003: Refactor GL bindings so there is no global GLApi or DriverGL. (Closed)
Patch Set: rebase Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gl/gl_bindings_autogen_egl.cc ('k') | ui/gl/gl_bindings_autogen_gl1.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gl/gl_bindings_autogen_gl0.cc
diff --git a/ui/gl/gl_bindings_autogen_gl0.cc b/ui/gl/gl_bindings_autogen_gl0.cc
new file mode 100644
index 0000000000000000000000000000000000000000..cf5df3e83d9095e01fea6c18381d8ebc2ecc28ee
--- /dev/null
+++ b/ui/gl/gl_bindings_autogen_gl0.cc
@@ -0,0 +1,2453 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// This file is auto-generated from
+// ui/gl/generate_bindings.py
+// It's formatted by clang-format using chromium coding style:
+// clang-format -i -style=chromium filename
+// DO NOT EDIT!
+
+#include <string>
+
+#include "base/trace_event/trace_event.h"
+#include "ui/gl/gl_bindings.h"
+#include "ui/gl/gl_context.h"
+#include "ui/gl/gl_enums.h"
+#include "ui/gl/gl_gl_api_implementation.h"
+#include "ui/gl/gl_implementation.h"
+#include "ui/gl/gl_version_info.h"
+
+namespace gl {
+
+void DriverGL::InitializeStaticBindings() {
+ fn.glActiveTextureFn = reinterpret_cast<glActiveTextureProc>(
+ GetGLProcAddress("glActiveTexture"));
+ fn.glApplyFramebufferAttachmentCMAAINTELFn = 0;
+ fn.glAttachShaderFn =
+ reinterpret_cast<glAttachShaderProc>(GetGLProcAddress("glAttachShader"));
+ fn.glBeginQueryFn = 0;
+ fn.glBeginTransformFeedbackFn = 0;
+ fn.glBindAttribLocationFn = reinterpret_cast<glBindAttribLocationProc>(
+ GetGLProcAddress("glBindAttribLocation"));
+ fn.glBindBufferFn =
+ reinterpret_cast<glBindBufferProc>(GetGLProcAddress("glBindBuffer"));
+ fn.glBindBufferBaseFn = 0;
+ fn.glBindBufferRangeFn = 0;
+ fn.glBindFragDataLocationFn = 0;
+ fn.glBindFragDataLocationIndexedFn = 0;
+ fn.glBindFramebufferEXTFn = 0;
+ fn.glBindImageTextureEXTFn = 0;
+ fn.glBindRenderbufferEXTFn = 0;
+ fn.glBindSamplerFn = 0;
+ fn.glBindTextureFn =
+ reinterpret_cast<glBindTextureProc>(GetGLProcAddress("glBindTexture"));
+ fn.glBindTransformFeedbackFn = 0;
+ fn.glBindUniformLocationCHROMIUMFn = 0;
+ fn.glBindVertexArrayOESFn = 0;
+ fn.glBlendBarrierKHRFn = 0;
+ fn.glBlendColorFn =
+ reinterpret_cast<glBlendColorProc>(GetGLProcAddress("glBlendColor"));
+ fn.glBlendEquationFn = reinterpret_cast<glBlendEquationProc>(
+ GetGLProcAddress("glBlendEquation"));
+ fn.glBlendEquationSeparateFn = reinterpret_cast<glBlendEquationSeparateProc>(
+ GetGLProcAddress("glBlendEquationSeparate"));
+ fn.glBlendFuncFn =
+ reinterpret_cast<glBlendFuncProc>(GetGLProcAddress("glBlendFunc"));
+ fn.glBlendFuncSeparateFn = reinterpret_cast<glBlendFuncSeparateProc>(
+ GetGLProcAddress("glBlendFuncSeparate"));
+ fn.glBlitFramebufferFn = 0;
+ fn.glBlitFramebufferANGLEFn = 0;
+ fn.glBlitFramebufferEXTFn = 0;
+ fn.glBufferDataFn =
+ reinterpret_cast<glBufferDataProc>(GetGLProcAddress("glBufferData"));
+ fn.glBufferSubDataFn = reinterpret_cast<glBufferSubDataProc>(
+ GetGLProcAddress("glBufferSubData"));
+ fn.glCheckFramebufferStatusEXTFn = 0;
+ fn.glClearFn = reinterpret_cast<glClearProc>(GetGLProcAddress("glClear"));
+ fn.glClearBufferfiFn = 0;
+ fn.glClearBufferfvFn = 0;
+ fn.glClearBufferivFn = 0;
+ fn.glClearBufferuivFn = 0;
+ fn.glClearColorFn =
+ reinterpret_cast<glClearColorProc>(GetGLProcAddress("glClearColor"));
+ fn.glClearDepthFn =
+ reinterpret_cast<glClearDepthProc>(GetGLProcAddress("glClearDepth"));
+ fn.glClearDepthfFn = 0;
+ fn.glClearStencilFn =
+ reinterpret_cast<glClearStencilProc>(GetGLProcAddress("glClearStencil"));
+ fn.glClientWaitSyncFn = 0;
+ fn.glColorMaskFn =
+ reinterpret_cast<glColorMaskProc>(GetGLProcAddress("glColorMask"));
+ fn.glCompileShaderFn = reinterpret_cast<glCompileShaderProc>(
+ GetGLProcAddress("glCompileShader"));
+ fn.glCompressedCopyTextureCHROMIUMFn = 0;
+ fn.glCompressedTexImage2DFn = reinterpret_cast<glCompressedTexImage2DProc>(
+ GetGLProcAddress("glCompressedTexImage2D"));
+ fn.glCompressedTexImage3DFn = 0;
+ fn.glCompressedTexSubImage2DFn =
+ reinterpret_cast<glCompressedTexSubImage2DProc>(
+ GetGLProcAddress("glCompressedTexSubImage2D"));
+ fn.glCompressedTexSubImage3DFn = 0;
+ fn.glCopyBufferSubDataFn = 0;
+ fn.glCopySubTextureCHROMIUMFn = 0;
+ fn.glCopyTexImage2DFn = reinterpret_cast<glCopyTexImage2DProc>(
+ GetGLProcAddress("glCopyTexImage2D"));
+ fn.glCopyTexSubImage2DFn = reinterpret_cast<glCopyTexSubImage2DProc>(
+ GetGLProcAddress("glCopyTexSubImage2D"));
+ fn.glCopyTexSubImage3DFn = 0;
+ fn.glCopyTextureCHROMIUMFn = 0;
+ fn.glCoverageModulationNVFn = 0;
+ fn.glCoverFillPathInstancedNVFn = 0;
+ fn.glCoverFillPathNVFn = 0;
+ fn.glCoverStrokePathInstancedNVFn = 0;
+ fn.glCoverStrokePathNVFn = 0;
+ fn.glCreateProgramFn = reinterpret_cast<glCreateProgramProc>(
+ GetGLProcAddress("glCreateProgram"));
+ fn.glCreateShaderFn =
+ reinterpret_cast<glCreateShaderProc>(GetGLProcAddress("glCreateShader"));
+ fn.glCullFaceFn =
+ reinterpret_cast<glCullFaceProc>(GetGLProcAddress("glCullFace"));
+ fn.glDebugMessageCallbackFn = 0;
+ fn.glDebugMessageControlFn = 0;
+ fn.glDebugMessageInsertFn = 0;
+ fn.glDeleteBuffersARBFn = reinterpret_cast<glDeleteBuffersARBProc>(
+ GetGLProcAddress("glDeleteBuffers"));
+ fn.glDeleteFencesAPPLEFn = 0;
+ fn.glDeleteFencesNVFn = 0;
+ fn.glDeleteFramebuffersEXTFn = 0;
+ fn.glDeletePathsNVFn = 0;
+ fn.glDeleteProgramFn = reinterpret_cast<glDeleteProgramProc>(
+ GetGLProcAddress("glDeleteProgram"));
+ fn.glDeleteQueriesFn = 0;
+ fn.glDeleteRenderbuffersEXTFn = 0;
+ fn.glDeleteSamplersFn = 0;
+ fn.glDeleteShaderFn =
+ reinterpret_cast<glDeleteShaderProc>(GetGLProcAddress("glDeleteShader"));
+ fn.glDeleteSyncFn = 0;
+ fn.glDeleteTexturesFn = reinterpret_cast<glDeleteTexturesProc>(
+ GetGLProcAddress("glDeleteTextures"));
+ fn.glDeleteTransformFeedbacksFn = 0;
+ fn.glDeleteVertexArraysOESFn = 0;
+ fn.glDepthFuncFn =
+ reinterpret_cast<glDepthFuncProc>(GetGLProcAddress("glDepthFunc"));
+ fn.glDepthMaskFn =
+ reinterpret_cast<glDepthMaskProc>(GetGLProcAddress("glDepthMask"));
+ fn.glDepthRangeFn =
+ reinterpret_cast<glDepthRangeProc>(GetGLProcAddress("glDepthRange"));
+ fn.glDepthRangefFn = 0;
+ fn.glDetachShaderFn =
+ reinterpret_cast<glDetachShaderProc>(GetGLProcAddress("glDetachShader"));
+ fn.glDisableFn =
+ reinterpret_cast<glDisableProc>(GetGLProcAddress("glDisable"));
+ fn.glDisableVertexAttribArrayFn =
+ reinterpret_cast<glDisableVertexAttribArrayProc>(
+ GetGLProcAddress("glDisableVertexAttribArray"));
+ fn.glDiscardFramebufferEXTFn = 0;
+ fn.glDrawArraysFn =
+ reinterpret_cast<glDrawArraysProc>(GetGLProcAddress("glDrawArrays"));
+ fn.glDrawArraysInstancedANGLEFn = 0;
+ fn.glDrawBufferFn = 0;
+ fn.glDrawBuffersARBFn = 0;
+ fn.glDrawElementsFn =
+ reinterpret_cast<glDrawElementsProc>(GetGLProcAddress("glDrawElements"));
+ fn.glDrawElementsInstancedANGLEFn = 0;
+ fn.glDrawRangeElementsFn = 0;
+ fn.glEGLImageTargetRenderbufferStorageOESFn = 0;
+ fn.glEGLImageTargetTexture2DOESFn = 0;
+ fn.glEnableFn = reinterpret_cast<glEnableProc>(GetGLProcAddress("glEnable"));
+ fn.glEnableVertexAttribArrayFn =
+ reinterpret_cast<glEnableVertexAttribArrayProc>(
+ GetGLProcAddress("glEnableVertexAttribArray"));
+ fn.glEndQueryFn = 0;
+ fn.glEndTransformFeedbackFn = 0;
+ fn.glFenceSyncFn = 0;
+ fn.glFinishFn = reinterpret_cast<glFinishProc>(GetGLProcAddress("glFinish"));
+ fn.glFinishFenceAPPLEFn = 0;
+ fn.glFinishFenceNVFn = 0;
+ fn.glFlushFn = reinterpret_cast<glFlushProc>(GetGLProcAddress("glFlush"));
+ fn.glFlushMappedBufferRangeFn = 0;
+ fn.glFramebufferRenderbufferEXTFn = 0;
+ fn.glFramebufferTexture2DEXTFn = 0;
+ fn.glFramebufferTexture2DMultisampleEXTFn = 0;
+ fn.glFramebufferTexture2DMultisampleIMGFn = 0;
+ fn.glFramebufferTextureLayerFn = 0;
+ fn.glFrontFaceFn =
+ reinterpret_cast<glFrontFaceProc>(GetGLProcAddress("glFrontFace"));
+ fn.glGenBuffersARBFn =
+ reinterpret_cast<glGenBuffersARBProc>(GetGLProcAddress("glGenBuffers"));
+ fn.glGenerateMipmapEXTFn = 0;
+ fn.glGenFencesAPPLEFn = 0;
+ fn.glGenFencesNVFn = 0;
+ fn.glGenFramebuffersEXTFn = 0;
+ fn.glGenPathsNVFn = 0;
+ fn.glGenQueriesFn = 0;
+ fn.glGenRenderbuffersEXTFn = 0;
+ fn.glGenSamplersFn = 0;
+ fn.glGenTexturesFn =
+ reinterpret_cast<glGenTexturesProc>(GetGLProcAddress("glGenTextures"));
+ fn.glGenTransformFeedbacksFn = 0;
+ fn.glGenVertexArraysOESFn = 0;
+ fn.glGetActiveAttribFn = reinterpret_cast<glGetActiveAttribProc>(
+ GetGLProcAddress("glGetActiveAttrib"));
+ fn.glGetActiveUniformFn = reinterpret_cast<glGetActiveUniformProc>(
+ GetGLProcAddress("glGetActiveUniform"));
+ fn.glGetActiveUniformBlockivFn = 0;
+ fn.glGetActiveUniformBlockivRobustANGLEFn = 0;
+ fn.glGetActiveUniformBlockNameFn = 0;
+ fn.glGetActiveUniformsivFn = 0;
+ fn.glGetAttachedShadersFn = reinterpret_cast<glGetAttachedShadersProc>(
+ GetGLProcAddress("glGetAttachedShaders"));
+ fn.glGetAttribLocationFn = reinterpret_cast<glGetAttribLocationProc>(
+ GetGLProcAddress("glGetAttribLocation"));
+ fn.glGetBooleani_vRobustANGLEFn = 0;
+ fn.glGetBooleanvFn =
+ reinterpret_cast<glGetBooleanvProc>(GetGLProcAddress("glGetBooleanv"));
+ fn.glGetBooleanvRobustANGLEFn = 0;
+ fn.glGetBufferParameteri64vRobustANGLEFn = 0;
+ fn.glGetBufferParameterivFn = reinterpret_cast<glGetBufferParameterivProc>(
+ GetGLProcAddress("glGetBufferParameteriv"));
+ fn.glGetBufferParameterivRobustANGLEFn = 0;
+ fn.glGetBufferPointervRobustANGLEFn = 0;
+ fn.glGetDebugMessageLogFn = 0;
+ fn.glGetErrorFn =
+ reinterpret_cast<glGetErrorProc>(GetGLProcAddress("glGetError"));
+ fn.glGetFenceivNVFn = 0;
+ fn.glGetFloatvFn =
+ reinterpret_cast<glGetFloatvProc>(GetGLProcAddress("glGetFloatv"));
+ fn.glGetFloatvRobustANGLEFn = 0;
+ fn.glGetFragDataIndexFn = 0;
+ fn.glGetFragDataLocationFn = 0;
+ fn.glGetFramebufferAttachmentParameterivEXTFn = 0;
+ fn.glGetFramebufferAttachmentParameterivRobustANGLEFn = 0;
+ fn.glGetFramebufferParameterivRobustANGLEFn = 0;
+ fn.glGetGraphicsResetStatusARBFn = 0;
+ fn.glGetInteger64i_vFn = 0;
+ fn.glGetInteger64i_vRobustANGLEFn = 0;
+ fn.glGetInteger64vFn = 0;
+ fn.glGetInteger64vRobustANGLEFn = 0;
+ fn.glGetIntegeri_vFn = 0;
+ fn.glGetIntegeri_vRobustANGLEFn = 0;
+ fn.glGetIntegervFn =
+ reinterpret_cast<glGetIntegervProc>(GetGLProcAddress("glGetIntegerv"));
+ fn.glGetIntegervRobustANGLEFn = 0;
+ fn.glGetInternalformativFn = 0;
+ fn.glGetInternalformativRobustANGLEFn = 0;
+ fn.glGetMultisamplefvRobustANGLEFn = 0;
+ fn.glGetnUniformfvRobustANGLEFn = 0;
+ fn.glGetnUniformivRobustANGLEFn = 0;
+ fn.glGetnUniformuivRobustANGLEFn = 0;
+ fn.glGetObjectLabelFn = 0;
+ fn.glGetObjectPtrLabelFn = 0;
+ fn.glGetPointervFn = 0;
+ fn.glGetPointervRobustANGLERobustANGLEFn = 0;
+ fn.glGetProgramBinaryFn = 0;
+ fn.glGetProgramInfoLogFn = reinterpret_cast<glGetProgramInfoLogProc>(
+ GetGLProcAddress("glGetProgramInfoLog"));
+ fn.glGetProgramInterfaceivFn = 0;
+ fn.glGetProgramInterfaceivRobustANGLEFn = 0;
+ fn.glGetProgramivFn =
+ reinterpret_cast<glGetProgramivProc>(GetGLProcAddress("glGetProgramiv"));
+ fn.glGetProgramivRobustANGLEFn = 0;
+ fn.glGetProgramResourceivFn = 0;
+ fn.glGetProgramResourceLocationFn = 0;
+ fn.glGetProgramResourceNameFn = 0;
+ fn.glGetQueryivFn = 0;
+ fn.glGetQueryivRobustANGLEFn = 0;
+ fn.glGetQueryObjecti64vFn = 0;
+ fn.glGetQueryObjecti64vRobustANGLEFn = 0;
+ fn.glGetQueryObjectivFn = 0;
+ fn.glGetQueryObjectivRobustANGLEFn = 0;
+ fn.glGetQueryObjectui64vFn = 0;
+ fn.glGetQueryObjectui64vRobustANGLEFn = 0;
+ fn.glGetQueryObjectuivFn = 0;
+ fn.glGetQueryObjectuivRobustANGLEFn = 0;
+ fn.glGetRenderbufferParameterivEXTFn = 0;
+ fn.glGetRenderbufferParameterivRobustANGLEFn = 0;
+ fn.glGetSamplerParameterfvFn = 0;
+ fn.glGetSamplerParameterfvRobustANGLEFn = 0;
+ fn.glGetSamplerParameterIivRobustANGLEFn = 0;
+ fn.glGetSamplerParameterIuivRobustANGLEFn = 0;
+ fn.glGetSamplerParameterivFn = 0;
+ fn.glGetSamplerParameterivRobustANGLEFn = 0;
+ fn.glGetShaderInfoLogFn = reinterpret_cast<glGetShaderInfoLogProc>(
+ GetGLProcAddress("glGetShaderInfoLog"));
+ fn.glGetShaderivFn =
+ reinterpret_cast<glGetShaderivProc>(GetGLProcAddress("glGetShaderiv"));
+ fn.glGetShaderivRobustANGLEFn = 0;
+ fn.glGetShaderPrecisionFormatFn = 0;
+ fn.glGetShaderSourceFn = reinterpret_cast<glGetShaderSourceProc>(
+ GetGLProcAddress("glGetShaderSource"));
+ fn.glGetStringFn =
+ reinterpret_cast<glGetStringProc>(GetGLProcAddress("glGetString"));
+ fn.glGetStringiFn =
+ reinterpret_cast<glGetStringiProc>(GetGLProcAddress("glGetStringi"));
+ fn.glGetSyncivFn = 0;
+ fn.glGetTexLevelParameterfvFn = 0;
+ fn.glGetTexLevelParameterfvRobustANGLEFn = 0;
+ fn.glGetTexLevelParameterivFn = 0;
+ fn.glGetTexLevelParameterivRobustANGLEFn = 0;
+ fn.glGetTexParameterfvFn = reinterpret_cast<glGetTexParameterfvProc>(
+ GetGLProcAddress("glGetTexParameterfv"));
+ fn.glGetTexParameterfvRobustANGLEFn = 0;
+ fn.glGetTexParameterIivRobustANGLEFn = 0;
+ fn.glGetTexParameterIuivRobustANGLEFn = 0;
+ fn.glGetTexParameterivFn = reinterpret_cast<glGetTexParameterivProc>(
+ GetGLProcAddress("glGetTexParameteriv"));
+ fn.glGetTexParameterivRobustANGLEFn = 0;
+ fn.glGetTransformFeedbackVaryingFn = 0;
+ fn.glGetTranslatedShaderSourceANGLEFn = 0;
+ fn.glGetUniformBlockIndexFn = 0;
+ fn.glGetUniformfvFn =
+ reinterpret_cast<glGetUniformfvProc>(GetGLProcAddress("glGetUniformfv"));
+ fn.glGetUniformfvRobustANGLEFn = 0;
+ fn.glGetUniformIndicesFn = 0;
+ fn.glGetUniformivFn =
+ reinterpret_cast<glGetUniformivProc>(GetGLProcAddress("glGetUniformiv"));
+ fn.glGetUniformivRobustANGLEFn = 0;
+ fn.glGetUniformLocationFn = reinterpret_cast<glGetUniformLocationProc>(
+ GetGLProcAddress("glGetUniformLocation"));
+ fn.glGetUniformuivFn = 0;
+ fn.glGetUniformuivRobustANGLEFn = 0;
+ fn.glGetVertexAttribfvFn = reinterpret_cast<glGetVertexAttribfvProc>(
+ GetGLProcAddress("glGetVertexAttribfv"));
+ fn.glGetVertexAttribfvRobustANGLEFn = 0;
+ fn.glGetVertexAttribIivRobustANGLEFn = 0;
+ fn.glGetVertexAttribIuivRobustANGLEFn = 0;
+ fn.glGetVertexAttribivFn = reinterpret_cast<glGetVertexAttribivProc>(
+ GetGLProcAddress("glGetVertexAttribiv"));
+ fn.glGetVertexAttribivRobustANGLEFn = 0;
+ fn.glGetVertexAttribPointervFn =
+ reinterpret_cast<glGetVertexAttribPointervProc>(
+ GetGLProcAddress("glGetVertexAttribPointerv"));
+ fn.glGetVertexAttribPointervRobustANGLEFn = 0;
+ fn.glHintFn = reinterpret_cast<glHintProc>(GetGLProcAddress("glHint"));
+ fn.glInsertEventMarkerEXTFn = 0;
+ fn.glInvalidateFramebufferFn = 0;
+ fn.glInvalidateSubFramebufferFn = 0;
+ fn.glIsBufferFn =
+ reinterpret_cast<glIsBufferProc>(GetGLProcAddress("glIsBuffer"));
+ fn.glIsEnabledFn =
+ reinterpret_cast<glIsEnabledProc>(GetGLProcAddress("glIsEnabled"));
+ fn.glIsFenceAPPLEFn = 0;
+ fn.glIsFenceNVFn = 0;
+ fn.glIsFramebufferEXTFn = 0;
+ fn.glIsPathNVFn = 0;
+ fn.glIsProgramFn =
+ reinterpret_cast<glIsProgramProc>(GetGLProcAddress("glIsProgram"));
+ fn.glIsQueryFn = 0;
+ fn.glIsRenderbufferEXTFn = 0;
+ fn.glIsSamplerFn = 0;
+ fn.glIsShaderFn =
+ reinterpret_cast<glIsShaderProc>(GetGLProcAddress("glIsShader"));
+ fn.glIsSyncFn = 0;
+ fn.glIsTextureFn =
+ reinterpret_cast<glIsTextureProc>(GetGLProcAddress("glIsTexture"));
+ fn.glIsTransformFeedbackFn = 0;
+ fn.glIsVertexArrayOESFn = 0;
+ fn.glLineWidthFn =
+ reinterpret_cast<glLineWidthProc>(GetGLProcAddress("glLineWidth"));
+ fn.glLinkProgramFn =
+ reinterpret_cast<glLinkProgramProc>(GetGLProcAddress("glLinkProgram"));
+ fn.glMapBufferFn = 0;
+ fn.glMapBufferRangeFn = 0;
+ fn.glMatrixLoadfEXTFn = 0;
+ fn.glMatrixLoadIdentityEXTFn = 0;
+ fn.glMemoryBarrierEXTFn = 0;
+ fn.glObjectLabelFn = 0;
+ fn.glObjectPtrLabelFn = 0;
+ fn.glPathCommandsNVFn = 0;
+ fn.glPathParameterfNVFn = 0;
+ fn.glPathParameteriNVFn = 0;
+ fn.glPathStencilFuncNVFn = 0;
+ fn.glPauseTransformFeedbackFn = 0;
+ fn.glPixelStoreiFn =
+ reinterpret_cast<glPixelStoreiProc>(GetGLProcAddress("glPixelStorei"));
+ fn.glPointParameteriFn = 0;
+ fn.glPolygonOffsetFn = reinterpret_cast<glPolygonOffsetProc>(
+ GetGLProcAddress("glPolygonOffset"));
+ fn.glPopDebugGroupFn = 0;
+ fn.glPopGroupMarkerEXTFn = 0;
+ fn.glPrimitiveRestartIndexFn = 0;
+ fn.glProgramBinaryFn = 0;
+ fn.glProgramParameteriFn = 0;
+ fn.glProgramPathFragmentInputGenNVFn = 0;
+ fn.glPushDebugGroupFn = 0;
+ fn.glPushGroupMarkerEXTFn = 0;
+ fn.glQueryCounterFn = 0;
+ fn.glReadBufferFn = 0;
+ fn.glReadnPixelsRobustANGLEFn = 0;
+ fn.glReadPixelsFn =
+ reinterpret_cast<glReadPixelsProc>(GetGLProcAddress("glReadPixels"));
+ fn.glReadPixelsRobustANGLEFn = 0;
+ fn.glReleaseShaderCompilerFn = 0;
+ fn.glRenderbufferStorageEXTFn = 0;
+ fn.glRenderbufferStorageMultisampleFn = 0;
+ fn.glRenderbufferStorageMultisampleANGLEFn = 0;
+ fn.glRenderbufferStorageMultisampleEXTFn = 0;
+ fn.glRenderbufferStorageMultisampleIMGFn = 0;
+ fn.glResumeTransformFeedbackFn = 0;
+ fn.glSampleCoverageFn = reinterpret_cast<glSampleCoverageProc>(
+ GetGLProcAddress("glSampleCoverage"));
+ fn.glSamplerParameterfFn = 0;
+ fn.glSamplerParameterfvFn = 0;
+ fn.glSamplerParameterfvRobustANGLEFn = 0;
+ fn.glSamplerParameteriFn = 0;
+ fn.glSamplerParameterIivRobustANGLEFn = 0;
+ fn.glSamplerParameterIuivRobustANGLEFn = 0;
+ fn.glSamplerParameterivFn = 0;
+ fn.glSamplerParameterivRobustANGLEFn = 0;
+ fn.glScissorFn =
+ reinterpret_cast<glScissorProc>(GetGLProcAddress("glScissor"));
+ fn.glSetFenceAPPLEFn = 0;
+ fn.glSetFenceNVFn = 0;
+ fn.glShaderBinaryFn = 0;
+ fn.glShaderSourceFn =
+ reinterpret_cast<glShaderSourceProc>(GetGLProcAddress("glShaderSource"));
+ fn.glStencilFillPathInstancedNVFn = 0;
+ fn.glStencilFillPathNVFn = 0;
+ fn.glStencilFuncFn =
+ reinterpret_cast<glStencilFuncProc>(GetGLProcAddress("glStencilFunc"));
+ fn.glStencilFuncSeparateFn = reinterpret_cast<glStencilFuncSeparateProc>(
+ GetGLProcAddress("glStencilFuncSeparate"));
+ fn.glStencilMaskFn =
+ reinterpret_cast<glStencilMaskProc>(GetGLProcAddress("glStencilMask"));
+ fn.glStencilMaskSeparateFn = reinterpret_cast<glStencilMaskSeparateProc>(
+ GetGLProcAddress("glStencilMaskSeparate"));
+ fn.glStencilOpFn =
+ reinterpret_cast<glStencilOpProc>(GetGLProcAddress("glStencilOp"));
+ fn.glStencilOpSeparateFn = reinterpret_cast<glStencilOpSeparateProc>(
+ GetGLProcAddress("glStencilOpSeparate"));
+ fn.glStencilStrokePathInstancedNVFn = 0;
+ fn.glStencilStrokePathNVFn = 0;
+ fn.glStencilThenCoverFillPathInstancedNVFn = 0;
+ fn.glStencilThenCoverFillPathNVFn = 0;
+ fn.glStencilThenCoverStrokePathInstancedNVFn = 0;
+ fn.glStencilThenCoverStrokePathNVFn = 0;
+ fn.glTestFenceAPPLEFn = 0;
+ fn.glTestFenceNVFn = 0;
+ fn.glTexImage2DFn =
+ reinterpret_cast<glTexImage2DProc>(GetGLProcAddress("glTexImage2D"));
+ fn.glTexImage2DRobustANGLEFn = 0;
+ fn.glTexImage3DFn = 0;
+ fn.glTexImage3DRobustANGLEFn = 0;
+ fn.glTexParameterfFn = reinterpret_cast<glTexParameterfProc>(
+ GetGLProcAddress("glTexParameterf"));
+ fn.glTexParameterfvFn = reinterpret_cast<glTexParameterfvProc>(
+ GetGLProcAddress("glTexParameterfv"));
+ fn.glTexParameterfvRobustANGLEFn = 0;
+ fn.glTexParameteriFn = reinterpret_cast<glTexParameteriProc>(
+ GetGLProcAddress("glTexParameteri"));
+ fn.glTexParameterIivRobustANGLEFn = 0;
+ fn.glTexParameterIuivRobustANGLEFn = 0;
+ fn.glTexParameterivFn = reinterpret_cast<glTexParameterivProc>(
+ GetGLProcAddress("glTexParameteriv"));
+ fn.glTexParameterivRobustANGLEFn = 0;
+ fn.glTexStorage2DEXTFn = 0;
+ fn.glTexStorage3DFn = 0;
+ fn.glTexSubImage2DFn = reinterpret_cast<glTexSubImage2DProc>(
+ GetGLProcAddress("glTexSubImage2D"));
+ fn.glTexSubImage2DRobustANGLEFn = 0;
+ fn.glTexSubImage3DFn = 0;
+ fn.glTexSubImage3DRobustANGLEFn = 0;
+ fn.glTransformFeedbackVaryingsFn = 0;
+ fn.glUniform1fFn =
+ reinterpret_cast<glUniform1fProc>(GetGLProcAddress("glUniform1f"));
+ fn.glUniform1fvFn =
+ reinterpret_cast<glUniform1fvProc>(GetGLProcAddress("glUniform1fv"));
+ fn.glUniform1iFn =
+ reinterpret_cast<glUniform1iProc>(GetGLProcAddress("glUniform1i"));
+ fn.glUniform1ivFn =
+ reinterpret_cast<glUniform1ivProc>(GetGLProcAddress("glUniform1iv"));
+ fn.glUniform1uiFn = 0;
+ fn.glUniform1uivFn = 0;
+ fn.glUniform2fFn =
+ reinterpret_cast<glUniform2fProc>(GetGLProcAddress("glUniform2f"));
+ fn.glUniform2fvFn =
+ reinterpret_cast<glUniform2fvProc>(GetGLProcAddress("glUniform2fv"));
+ fn.glUniform2iFn =
+ reinterpret_cast<glUniform2iProc>(GetGLProcAddress("glUniform2i"));
+ fn.glUniform2ivFn =
+ reinterpret_cast<glUniform2ivProc>(GetGLProcAddress("glUniform2iv"));
+ fn.glUniform2uiFn = 0;
+ fn.glUniform2uivFn = 0;
+ fn.glUniform3fFn =
+ reinterpret_cast<glUniform3fProc>(GetGLProcAddress("glUniform3f"));
+ fn.glUniform3fvFn =
+ reinterpret_cast<glUniform3fvProc>(GetGLProcAddress("glUniform3fv"));
+ fn.glUniform3iFn =
+ reinterpret_cast<glUniform3iProc>(GetGLProcAddress("glUniform3i"));
+ fn.glUniform3ivFn =
+ reinterpret_cast<glUniform3ivProc>(GetGLProcAddress("glUniform3iv"));
+ fn.glUniform3uiFn = 0;
+ fn.glUniform3uivFn = 0;
+ fn.glUniform4fFn =
+ reinterpret_cast<glUniform4fProc>(GetGLProcAddress("glUniform4f"));
+ fn.glUniform4fvFn =
+ reinterpret_cast<glUniform4fvProc>(GetGLProcAddress("glUniform4fv"));
+ fn.glUniform4iFn =
+ reinterpret_cast<glUniform4iProc>(GetGLProcAddress("glUniform4i"));
+ fn.glUniform4ivFn =
+ reinterpret_cast<glUniform4ivProc>(GetGLProcAddress("glUniform4iv"));
+ fn.glUniform4uiFn = 0;
+ fn.glUniform4uivFn = 0;
+ fn.glUniformBlockBindingFn = 0;
+ fn.glUniformMatrix2fvFn = reinterpret_cast<glUniformMatrix2fvProc>(
+ GetGLProcAddress("glUniformMatrix2fv"));
+ fn.glUniformMatrix2x3fvFn = 0;
+ fn.glUniformMatrix2x4fvFn = 0;
+ fn.glUniformMatrix3fvFn = reinterpret_cast<glUniformMatrix3fvProc>(
+ GetGLProcAddress("glUniformMatrix3fv"));
+ fn.glUniformMatrix3x2fvFn = 0;
+ fn.glUniformMatrix3x4fvFn = 0;
+ fn.glUniformMatrix4fvFn = reinterpret_cast<glUniformMatrix4fvProc>(
+ GetGLProcAddress("glUniformMatrix4fv"));
+ fn.glUniformMatrix4x2fvFn = 0;
+ fn.glUniformMatrix4x3fvFn = 0;
+ fn.glUnmapBufferFn = 0;
+ fn.glUseProgramFn =
+ reinterpret_cast<glUseProgramProc>(GetGLProcAddress("glUseProgram"));
+ fn.glValidateProgramFn = reinterpret_cast<glValidateProgramProc>(
+ GetGLProcAddress("glValidateProgram"));
+ fn.glVertexAttrib1fFn = reinterpret_cast<glVertexAttrib1fProc>(
+ GetGLProcAddress("glVertexAttrib1f"));
+ fn.glVertexAttrib1fvFn = reinterpret_cast<glVertexAttrib1fvProc>(
+ GetGLProcAddress("glVertexAttrib1fv"));
+ fn.glVertexAttrib2fFn = reinterpret_cast<glVertexAttrib2fProc>(
+ GetGLProcAddress("glVertexAttrib2f"));
+ fn.glVertexAttrib2fvFn = reinterpret_cast<glVertexAttrib2fvProc>(
+ GetGLProcAddress("glVertexAttrib2fv"));
+ fn.glVertexAttrib3fFn = reinterpret_cast<glVertexAttrib3fProc>(
+ GetGLProcAddress("glVertexAttrib3f"));
+ fn.glVertexAttrib3fvFn = reinterpret_cast<glVertexAttrib3fvProc>(
+ GetGLProcAddress("glVertexAttrib3fv"));
+ fn.glVertexAttrib4fFn = reinterpret_cast<glVertexAttrib4fProc>(
+ GetGLProcAddress("glVertexAttrib4f"));
+ fn.glVertexAttrib4fvFn = reinterpret_cast<glVertexAttrib4fvProc>(
+ GetGLProcAddress("glVertexAttrib4fv"));
+ fn.glVertexAttribDivisorANGLEFn = 0;
+ fn.glVertexAttribI4iFn = 0;
+ fn.glVertexAttribI4ivFn = 0;
+ fn.glVertexAttribI4uiFn = 0;
+ fn.glVertexAttribI4uivFn = 0;
+ fn.glVertexAttribIPointerFn = 0;
+ fn.glVertexAttribPointerFn = reinterpret_cast<glVertexAttribPointerProc>(
+ GetGLProcAddress("glVertexAttribPointer"));
+ fn.glViewportFn =
+ reinterpret_cast<glViewportProc>(GetGLProcAddress("glViewport"));
+ fn.glWaitSyncFn = 0;
+}
+
+void DriverGL::InitializeDynamicBindings(
+ const GLVersionInfo* ver,
+ const std::string& context_extensions) {
+ std::string extensions = context_extensions + " ";
+ ALLOW_UNUSED_LOCAL(extensions);
+
+ ext.b_GL_ANGLE_framebuffer_blit =
+ extensions.find("GL_ANGLE_framebuffer_blit ") != std::string::npos;
+ ext.b_GL_ANGLE_framebuffer_multisample =
+ extensions.find("GL_ANGLE_framebuffer_multisample ") != std::string::npos;
+ ext.b_GL_ANGLE_instanced_arrays =
+ extensions.find("GL_ANGLE_instanced_arrays ") != std::string::npos;
+ ext.b_GL_ANGLE_robust_client_memory =
+ extensions.find("GL_ANGLE_robust_client_memory ") != std::string::npos;
+ ext.b_GL_ANGLE_translated_shader_source =
+ extensions.find("GL_ANGLE_translated_shader_source ") !=
+ std::string::npos;
+ ext.b_GL_APPLE_fence =
+ extensions.find("GL_APPLE_fence ") != std::string::npos;
+ ext.b_GL_APPLE_vertex_array_object =
+ extensions.find("GL_APPLE_vertex_array_object ") != std::string::npos;
+ ext.b_GL_ARB_blend_func_extended =
+ extensions.find("GL_ARB_blend_func_extended ") != std::string::npos;
+ ext.b_GL_ARB_draw_buffers =
+ extensions.find("GL_ARB_draw_buffers ") != std::string::npos;
+ ext.b_GL_ARB_draw_instanced =
+ extensions.find("GL_ARB_draw_instanced ") != std::string::npos;
+ ext.b_GL_ARB_get_program_binary =
+ extensions.find("GL_ARB_get_program_binary ") != std::string::npos;
+ ext.b_GL_ARB_instanced_arrays =
+ extensions.find("GL_ARB_instanced_arrays ") != std::string::npos;
+ ext.b_GL_ARB_map_buffer_range =
+ extensions.find("GL_ARB_map_buffer_range ") != std::string::npos;
+ ext.b_GL_ARB_occlusion_query =
+ extensions.find("GL_ARB_occlusion_query ") != std::string::npos;
+ ext.b_GL_ARB_program_interface_query =
+ extensions.find("GL_ARB_program_interface_query ") != std::string::npos;
+ ext.b_GL_ARB_robustness =
+ extensions.find("GL_ARB_robustness ") != std::string::npos;
+ ext.b_GL_ARB_sampler_objects =
+ extensions.find("GL_ARB_sampler_objects ") != std::string::npos;
+ ext.b_GL_ARB_shader_image_load_store =
+ extensions.find("GL_ARB_shader_image_load_store ") != std::string::npos;
+ ext.b_GL_ARB_sync = extensions.find("GL_ARB_sync ") != std::string::npos;
+ ext.b_GL_ARB_texture_storage =
+ extensions.find("GL_ARB_texture_storage ") != std::string::npos;
+ ext.b_GL_ARB_timer_query =
+ extensions.find("GL_ARB_timer_query ") != std::string::npos;
+ ext.b_GL_ARB_transform_feedback2 =
+ extensions.find("GL_ARB_transform_feedback2 ") != std::string::npos;
+ ext.b_GL_ARB_vertex_array_object =
+ extensions.find("GL_ARB_vertex_array_object ") != std::string::npos;
+ ext.b_GL_CHROMIUM_bind_uniform_location =
+ extensions.find("GL_CHROMIUM_bind_uniform_location ") !=
+ std::string::npos;
+ ext.b_GL_CHROMIUM_compressed_copy_texture =
+ extensions.find("GL_CHROMIUM_compressed_copy_texture ") !=
+ std::string::npos;
+ ext.b_GL_CHROMIUM_copy_compressed_texture =
+ extensions.find("GL_CHROMIUM_copy_compressed_texture ") !=
+ std::string::npos;
+ ext.b_GL_CHROMIUM_copy_texture =
+ extensions.find("GL_CHROMIUM_copy_texture ") != std::string::npos;
+ ext.b_GL_CHROMIUM_gles_depth_binding_hack =
+ extensions.find("GL_CHROMIUM_gles_depth_binding_hack ") !=
+ std::string::npos;
+ ext.b_GL_CHROMIUM_glgetstringi_hack =
+ extensions.find("GL_CHROMIUM_glgetstringi_hack ") != std::string::npos;
+ ext.b_GL_EXT_blend_func_extended =
+ extensions.find("GL_EXT_blend_func_extended ") != std::string::npos;
+ ext.b_GL_EXT_debug_marker =
+ extensions.find("GL_EXT_debug_marker ") != std::string::npos;
+ ext.b_GL_EXT_direct_state_access =
+ extensions.find("GL_EXT_direct_state_access ") != std::string::npos;
+ ext.b_GL_EXT_discard_framebuffer =
+ extensions.find("GL_EXT_discard_framebuffer ") != std::string::npos;
+ ext.b_GL_EXT_disjoint_timer_query =
+ extensions.find("GL_EXT_disjoint_timer_query ") != std::string::npos;
+ ext.b_GL_EXT_draw_buffers =
+ extensions.find("GL_EXT_draw_buffers ") != std::string::npos;
+ ext.b_GL_EXT_framebuffer_blit =
+ extensions.find("GL_EXT_framebuffer_blit ") != std::string::npos;
+ ext.b_GL_EXT_framebuffer_multisample =
+ extensions.find("GL_EXT_framebuffer_multisample ") != std::string::npos;
+ ext.b_GL_EXT_framebuffer_object =
+ extensions.find("GL_EXT_framebuffer_object ") != std::string::npos;
+ ext.b_GL_EXT_gpu_shader4 =
+ extensions.find("GL_EXT_gpu_shader4 ") != std::string::npos;
+ ext.b_GL_EXT_map_buffer_range =
+ extensions.find("GL_EXT_map_buffer_range ") != std::string::npos;
+ ext.b_GL_EXT_multisampled_render_to_texture =
+ extensions.find("GL_EXT_multisampled_render_to_texture ") !=
+ std::string::npos;
+ ext.b_GL_EXT_occlusion_query_boolean =
+ extensions.find("GL_EXT_occlusion_query_boolean ") != std::string::npos;
+ ext.b_GL_EXT_robustness =
+ extensions.find("GL_EXT_robustness ") != std::string::npos;
+ ext.b_GL_EXT_shader_image_load_store =
+ extensions.find("GL_EXT_shader_image_load_store ") != std::string::npos;
+ ext.b_GL_EXT_texture_storage =
+ extensions.find("GL_EXT_texture_storage ") != std::string::npos;
+ ext.b_GL_EXT_timer_query =
+ extensions.find("GL_EXT_timer_query ") != std::string::npos;
+ ext.b_GL_EXT_transform_feedback =
+ extensions.find("GL_EXT_transform_feedback ") != std::string::npos;
+ ext.b_GL_EXT_unpack_subimage =
+ extensions.find("GL_EXT_unpack_subimage ") != std::string::npos;
+ ext.b_GL_IMG_multisampled_render_to_texture =
+ extensions.find("GL_IMG_multisampled_render_to_texture ") !=
+ std::string::npos;
+ ext.b_GL_INTEL_framebuffer_CMAA =
+ extensions.find("GL_INTEL_framebuffer_CMAA ") != std::string::npos;
+ ext.b_GL_KHR_blend_equation_advanced =
+ extensions.find("GL_KHR_blend_equation_advanced ") != std::string::npos;
+ ext.b_GL_KHR_debug = extensions.find("GL_KHR_debug ") != std::string::npos;
+ ext.b_GL_KHR_robustness =
+ extensions.find("GL_KHR_robustness ") != std::string::npos;
+ ext.b_GL_NV_blend_equation_advanced =
+ extensions.find("GL_NV_blend_equation_advanced ") != std::string::npos;
+ ext.b_GL_NV_fence = extensions.find("GL_NV_fence ") != std::string::npos;
+ ext.b_GL_NV_framebuffer_mixed_samples =
+ extensions.find("GL_NV_framebuffer_mixed_samples ") != std::string::npos;
+ ext.b_GL_NV_path_rendering =
+ extensions.find("GL_NV_path_rendering ") != std::string::npos;
+ ext.b_GL_OES_EGL_image =
+ extensions.find("GL_OES_EGL_image ") != std::string::npos;
+ ext.b_GL_OES_get_program_binary =
+ extensions.find("GL_OES_get_program_binary ") != std::string::npos;
+ ext.b_GL_OES_mapbuffer =
+ extensions.find("GL_OES_mapbuffer ") != std::string::npos;
+ ext.b_GL_OES_vertex_array_object =
+ extensions.find("GL_OES_vertex_array_object ") != std::string::npos;
+
+ if (ext.b_GL_INTEL_framebuffer_CMAA) {
+ fn.glApplyFramebufferAttachmentCMAAINTELFn =
+ reinterpret_cast<glApplyFramebufferAttachmentCMAAINTELProc>(
+ GetGLProcAddress("glApplyFramebufferAttachmentCMAAINTEL"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glBeginQueryFn =
+ reinterpret_cast<glBeginQueryProc>(GetGLProcAddress("glBeginQuery"));
+ } else if (ext.b_GL_ARB_occlusion_query) {
+ fn.glBeginQueryFn =
+ reinterpret_cast<glBeginQueryProc>(GetGLProcAddress("glBeginQueryARB"));
+ } else if (ext.b_GL_EXT_disjoint_timer_query ||
+ ext.b_GL_EXT_occlusion_query_boolean) {
+ fn.glBeginQueryFn =
+ reinterpret_cast<glBeginQueryProc>(GetGLProcAddress("glBeginQueryEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glBeginTransformFeedbackFn =
+ reinterpret_cast<glBeginTransformFeedbackProc>(
+ GetGLProcAddress("glBeginTransformFeedback"));
+ } else if (ext.b_GL_EXT_transform_feedback) {
+ fn.glBeginTransformFeedbackFn =
+ reinterpret_cast<glBeginTransformFeedbackProc>(
+ GetGLProcAddress("glBeginTransformFeedbackEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glBindBufferBaseFn = reinterpret_cast<glBindBufferBaseProc>(
+ GetGLProcAddress("glBindBufferBase"));
+ } else if (ext.b_GL_EXT_transform_feedback) {
+ fn.glBindBufferBaseFn = reinterpret_cast<glBindBufferBaseProc>(
+ GetGLProcAddress("glBindBufferBaseEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glBindBufferRangeFn = reinterpret_cast<glBindBufferRangeProc>(
+ GetGLProcAddress("glBindBufferRange"));
+ } else if (ext.b_GL_EXT_transform_feedback) {
+ fn.glBindBufferRangeFn = reinterpret_cast<glBindBufferRangeProc>(
+ GetGLProcAddress("glBindBufferRangeEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ext.b_GL_ARB_blend_func_extended) {
+ fn.glBindFragDataLocationFn = reinterpret_cast<glBindFragDataLocationProc>(
+ GetGLProcAddress("glBindFragDataLocation"));
+ } else if (ext.b_GL_EXT_gpu_shader4 || ext.b_GL_EXT_blend_func_extended) {
+ fn.glBindFragDataLocationFn = reinterpret_cast<glBindFragDataLocationProc>(
+ GetGLProcAddress("glBindFragDataLocationEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_blend_func_extended) {
+ fn.glBindFragDataLocationIndexedFn =
+ reinterpret_cast<glBindFragDataLocationIndexedProc>(
+ GetGLProcAddress("glBindFragDataLocationIndexed"));
+ } else if (ext.b_GL_EXT_blend_func_extended) {
+ fn.glBindFragDataLocationIndexedFn =
+ reinterpret_cast<glBindFragDataLocationIndexedProc>(
+ GetGLProcAddress("glBindFragDataLocationIndexedEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glBindFramebufferEXTFn = reinterpret_cast<glBindFramebufferEXTProc>(
+ GetGLProcAddress("glBindFramebuffer"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glBindFramebufferEXTFn = reinterpret_cast<glBindFramebufferEXTProc>(
+ GetGLProcAddress("glBindFramebufferEXT"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 1u) ||
+ ext.b_GL_ARB_shader_image_load_store) {
+ fn.glBindImageTextureEXTFn = reinterpret_cast<glBindImageTextureEXTProc>(
+ GetGLProcAddress("glBindImageTexture"));
+ } else if (ext.b_GL_EXT_shader_image_load_store) {
+ fn.glBindImageTextureEXTFn = reinterpret_cast<glBindImageTextureEXTProc>(
+ GetGLProcAddress("glBindImageTextureEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>(
+ GetGLProcAddress("glBindRenderbuffer"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glBindRenderbufferEXTFn = reinterpret_cast<glBindRenderbufferEXTProc>(
+ GetGLProcAddress("glBindRenderbufferEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sampler_objects) {
+ fn.glBindSamplerFn =
+ reinterpret_cast<glBindSamplerProc>(GetGLProcAddress("glBindSampler"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u) ||
+ ext.b_GL_ARB_transform_feedback2) {
+ fn.glBindTransformFeedbackFn =
+ reinterpret_cast<glBindTransformFeedbackProc>(
+ GetGLProcAddress("glBindTransformFeedback"));
+ }
+
+ if (ext.b_GL_CHROMIUM_bind_uniform_location) {
+ fn.glBindUniformLocationCHROMIUMFn =
+ reinterpret_cast<glBindUniformLocationCHROMIUMProc>(
+ GetGLProcAddress("glBindUniformLocationCHROMIUM"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_vertex_array_object) {
+ fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>(
+ GetGLProcAddress("glBindVertexArray"));
+ } else if (ext.b_GL_OES_vertex_array_object) {
+ fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>(
+ GetGLProcAddress("glBindVertexArrayOES"));
+ } else if (ext.b_GL_APPLE_vertex_array_object) {
+ fn.glBindVertexArrayOESFn = reinterpret_cast<glBindVertexArrayOESProc>(
+ GetGLProcAddress("glBindVertexArrayAPPLE"));
+ }
+
+ if (ext.b_GL_NV_blend_equation_advanced) {
+ fn.glBlendBarrierKHRFn = reinterpret_cast<glBlendBarrierKHRProc>(
+ GetGLProcAddress("glBlendBarrierNV"));
+ } else if (ext.b_GL_KHR_blend_equation_advanced) {
+ fn.glBlendBarrierKHRFn = reinterpret_cast<glBlendBarrierKHRProc>(
+ GetGLProcAddress("glBlendBarrierKHR"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glBlitFramebufferFn = reinterpret_cast<glBlitFramebufferProc>(
+ GetGLProcAddress("glBlitFramebuffer"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>(
+ GetGLProcAddress("glBlitFramebuffer"));
+ } else if (ext.b_GL_ANGLE_framebuffer_blit) {
+ fn.glBlitFramebufferANGLEFn = reinterpret_cast<glBlitFramebufferANGLEProc>(
+ GetGLProcAddress("glBlitFramebufferANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glBlitFramebufferEXTFn = reinterpret_cast<glBlitFramebufferEXTProc>(
+ GetGLProcAddress("glBlitFramebuffer"));
+ } else if (ext.b_GL_EXT_framebuffer_blit) {
+ fn.glBlitFramebufferEXTFn = reinterpret_cast<glBlitFramebufferEXTProc>(
+ GetGLProcAddress("glBlitFramebufferEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glCheckFramebufferStatusEXTFn =
+ reinterpret_cast<glCheckFramebufferStatusEXTProc>(
+ GetGLProcAddress("glCheckFramebufferStatus"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glCheckFramebufferStatusEXTFn =
+ reinterpret_cast<glCheckFramebufferStatusEXTProc>(
+ GetGLProcAddress("glCheckFramebufferStatusEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glClearBufferfiFn = reinterpret_cast<glClearBufferfiProc>(
+ GetGLProcAddress("glClearBufferfi"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glClearBufferfvFn = reinterpret_cast<glClearBufferfvProc>(
+ GetGLProcAddress("glClearBufferfv"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glClearBufferivFn = reinterpret_cast<glClearBufferivProc>(
+ GetGLProcAddress("glClearBufferiv"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glClearBufferuivFn = reinterpret_cast<glClearBufferuivProc>(
+ GetGLProcAddress("glClearBufferuiv"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
+ fn.glClearDepthfFn =
+ reinterpret_cast<glClearDepthfProc>(GetGLProcAddress("glClearDepthf"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sync) {
+ fn.glClientWaitSyncFn = reinterpret_cast<glClientWaitSyncProc>(
+ GetGLProcAddress("glClientWaitSync"));
+ }
+
+ if (ext.b_GL_CHROMIUM_copy_compressed_texture ||
+ ext.b_GL_CHROMIUM_compressed_copy_texture) {
+ fn.glCompressedCopyTextureCHROMIUMFn =
+ reinterpret_cast<glCompressedCopyTextureCHROMIUMProc>(
+ GetGLProcAddress("glCompressedCopyTextureCHROMIUM"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glCompressedTexImage3DFn = reinterpret_cast<glCompressedTexImage3DProc>(
+ GetGLProcAddress("glCompressedTexImage3D"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glCompressedTexSubImage3DFn =
+ reinterpret_cast<glCompressedTexSubImage3DProc>(
+ GetGLProcAddress("glCompressedTexSubImage3D"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
+ fn.glCopyBufferSubDataFn = reinterpret_cast<glCopyBufferSubDataProc>(
+ GetGLProcAddress("glCopyBufferSubData"));
+ }
+
+ if (ext.b_GL_CHROMIUM_copy_texture) {
+ fn.glCopySubTextureCHROMIUMFn =
+ reinterpret_cast<glCopySubTextureCHROMIUMProc>(
+ GetGLProcAddress("glCopySubTextureCHROMIUM"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glCopyTexSubImage3DFn = reinterpret_cast<glCopyTexSubImage3DProc>(
+ GetGLProcAddress("glCopyTexSubImage3D"));
+ }
+
+ if (ext.b_GL_CHROMIUM_copy_texture) {
+ fn.glCopyTextureCHROMIUMFn = reinterpret_cast<glCopyTextureCHROMIUMProc>(
+ GetGLProcAddress("glCopyTextureCHROMIUM"));
+ }
+
+ if (ext.b_GL_NV_framebuffer_mixed_samples) {
+ fn.glCoverageModulationNVFn = reinterpret_cast<glCoverageModulationNVProc>(
+ GetGLProcAddress("glCoverageModulationNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glCoverFillPathInstancedNVFn =
+ reinterpret_cast<glCoverFillPathInstancedNVProc>(
+ GetGLProcAddress("glCoverFillPathInstancedNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glCoverFillPathNVFn = reinterpret_cast<glCoverFillPathNVProc>(
+ GetGLProcAddress("glCoverFillPathNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glCoverStrokePathInstancedNVFn =
+ reinterpret_cast<glCoverStrokePathInstancedNVProc>(
+ GetGLProcAddress("glCoverStrokePathInstancedNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glCoverStrokePathNVFn = reinterpret_cast<glCoverStrokePathNVProc>(
+ GetGLProcAddress("glCoverStrokePathNV"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
+ fn.glDebugMessageCallbackFn = reinterpret_cast<glDebugMessageCallbackProc>(
+ GetGLProcAddress("glDebugMessageCallback"));
+ } else if (ext.b_GL_KHR_debug) {
+ fn.glDebugMessageCallbackFn = reinterpret_cast<glDebugMessageCallbackProc>(
+ GetGLProcAddress("glDebugMessageCallbackKHR"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
+ fn.glDebugMessageControlFn = reinterpret_cast<glDebugMessageControlProc>(
+ GetGLProcAddress("glDebugMessageControl"));
+ } else if (ext.b_GL_KHR_debug) {
+ fn.glDebugMessageControlFn = reinterpret_cast<glDebugMessageControlProc>(
+ GetGLProcAddress("glDebugMessageControlKHR"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
+ fn.glDebugMessageInsertFn = reinterpret_cast<glDebugMessageInsertProc>(
+ GetGLProcAddress("glDebugMessageInsert"));
+ } else if (ext.b_GL_KHR_debug) {
+ fn.glDebugMessageInsertFn = reinterpret_cast<glDebugMessageInsertProc>(
+ GetGLProcAddress("glDebugMessageInsertKHR"));
+ }
+
+ if (ext.b_GL_APPLE_fence) {
+ fn.glDeleteFencesAPPLEFn = reinterpret_cast<glDeleteFencesAPPLEProc>(
+ GetGLProcAddress("glDeleteFencesAPPLE"));
+ }
+
+ if (ext.b_GL_NV_fence) {
+ fn.glDeleteFencesNVFn = reinterpret_cast<glDeleteFencesNVProc>(
+ GetGLProcAddress("glDeleteFencesNV"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glDeleteFramebuffersEXTFn =
+ reinterpret_cast<glDeleteFramebuffersEXTProc>(
+ GetGLProcAddress("glDeleteFramebuffers"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glDeleteFramebuffersEXTFn =
+ reinterpret_cast<glDeleteFramebuffersEXTProc>(
+ GetGLProcAddress("glDeleteFramebuffersEXT"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glDeletePathsNVFn = reinterpret_cast<glDeletePathsNVProc>(
+ GetGLProcAddress("glDeletePathsNV"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glDeleteQueriesFn = reinterpret_cast<glDeleteQueriesProc>(
+ GetGLProcAddress("glDeleteQueries"));
+ } else if (ext.b_GL_ARB_occlusion_query) {
+ fn.glDeleteQueriesFn = reinterpret_cast<glDeleteQueriesProc>(
+ GetGLProcAddress("glDeleteQueriesARB"));
+ } else if (ext.b_GL_EXT_disjoint_timer_query ||
+ ext.b_GL_EXT_occlusion_query_boolean) {
+ fn.glDeleteQueriesFn = reinterpret_cast<glDeleteQueriesProc>(
+ GetGLProcAddress("glDeleteQueriesEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glDeleteRenderbuffersEXTFn =
+ reinterpret_cast<glDeleteRenderbuffersEXTProc>(
+ GetGLProcAddress("glDeleteRenderbuffers"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glDeleteRenderbuffersEXTFn =
+ reinterpret_cast<glDeleteRenderbuffersEXTProc>(
+ GetGLProcAddress("glDeleteRenderbuffersEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sampler_objects) {
+ fn.glDeleteSamplersFn = reinterpret_cast<glDeleteSamplersProc>(
+ GetGLProcAddress("glDeleteSamplers"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sync) {
+ fn.glDeleteSyncFn =
+ reinterpret_cast<glDeleteSyncProc>(GetGLProcAddress("glDeleteSync"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u) ||
+ ext.b_GL_ARB_transform_feedback2) {
+ fn.glDeleteTransformFeedbacksFn =
+ reinterpret_cast<glDeleteTransformFeedbacksProc>(
+ GetGLProcAddress("glDeleteTransformFeedbacks"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_vertex_array_object) {
+ fn.glDeleteVertexArraysOESFn =
+ reinterpret_cast<glDeleteVertexArraysOESProc>(
+ GetGLProcAddress("glDeleteVertexArrays"));
+ } else if (ext.b_GL_OES_vertex_array_object) {
+ fn.glDeleteVertexArraysOESFn =
+ reinterpret_cast<glDeleteVertexArraysOESProc>(
+ GetGLProcAddress("glDeleteVertexArraysOES"));
+ } else if (ext.b_GL_APPLE_vertex_array_object) {
+ fn.glDeleteVertexArraysOESFn =
+ reinterpret_cast<glDeleteVertexArraysOESProc>(
+ GetGLProcAddress("glDeleteVertexArraysAPPLE"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
+ fn.glDepthRangefFn =
+ reinterpret_cast<glDepthRangefProc>(GetGLProcAddress("glDepthRangef"));
+ }
+
+ if (ext.b_GL_EXT_discard_framebuffer) {
+ fn.glDiscardFramebufferEXTFn =
+ reinterpret_cast<glDiscardFramebufferEXTProc>(
+ GetGLProcAddress("glDiscardFramebufferEXT"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
+ fn.glDrawArraysInstancedANGLEFn =
+ reinterpret_cast<glDrawArraysInstancedANGLEProc>(
+ GetGLProcAddress("glDrawArraysInstanced"));
+ } else if (ext.b_GL_ARB_draw_instanced) {
+ fn.glDrawArraysInstancedANGLEFn =
+ reinterpret_cast<glDrawArraysInstancedANGLEProc>(
+ GetGLProcAddress("glDrawArraysInstancedARB"));
+ } else if (ext.b_GL_ANGLE_instanced_arrays) {
+ fn.glDrawArraysInstancedANGLEFn =
+ reinterpret_cast<glDrawArraysInstancedANGLEProc>(
+ GetGLProcAddress("glDrawArraysInstancedANGLE"));
+ }
+
+ if (!ver->is_es) {
+ fn.glDrawBufferFn =
+ reinterpret_cast<glDrawBufferProc>(GetGLProcAddress("glDrawBuffer"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>(
+ GetGLProcAddress("glDrawBuffers"));
+ } else if (ext.b_GL_ARB_draw_buffers) {
+ fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>(
+ GetGLProcAddress("glDrawBuffersARB"));
+ } else if (ext.b_GL_EXT_draw_buffers) {
+ fn.glDrawBuffersARBFn = reinterpret_cast<glDrawBuffersARBProc>(
+ GetGLProcAddress("glDrawBuffersEXT"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
+ fn.glDrawElementsInstancedANGLEFn =
+ reinterpret_cast<glDrawElementsInstancedANGLEProc>(
+ GetGLProcAddress("glDrawElementsInstanced"));
+ } else if (ext.b_GL_ARB_draw_instanced) {
+ fn.glDrawElementsInstancedANGLEFn =
+ reinterpret_cast<glDrawElementsInstancedANGLEProc>(
+ GetGLProcAddress("glDrawElementsInstancedARB"));
+ } else if (ext.b_GL_ANGLE_instanced_arrays) {
+ fn.glDrawElementsInstancedANGLEFn =
+ reinterpret_cast<glDrawElementsInstancedANGLEProc>(
+ GetGLProcAddress("glDrawElementsInstancedANGLE"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glDrawRangeElementsFn = reinterpret_cast<glDrawRangeElementsProc>(
+ GetGLProcAddress("glDrawRangeElements"));
+ }
+
+ if (ext.b_GL_OES_EGL_image) {
+ fn.glEGLImageTargetRenderbufferStorageOESFn =
+ reinterpret_cast<glEGLImageTargetRenderbufferStorageOESProc>(
+ GetGLProcAddress("glEGLImageTargetRenderbufferStorageOES"));
+ }
+
+ if (ext.b_GL_OES_EGL_image) {
+ fn.glEGLImageTargetTexture2DOESFn =
+ reinterpret_cast<glEGLImageTargetTexture2DOESProc>(
+ GetGLProcAddress("glEGLImageTargetTexture2DOES"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glEndQueryFn =
+ reinterpret_cast<glEndQueryProc>(GetGLProcAddress("glEndQuery"));
+ } else if (ext.b_GL_ARB_occlusion_query) {
+ fn.glEndQueryFn =
+ reinterpret_cast<glEndQueryProc>(GetGLProcAddress("glEndQueryARB"));
+ } else if (ext.b_GL_EXT_disjoint_timer_query ||
+ ext.b_GL_EXT_occlusion_query_boolean) {
+ fn.glEndQueryFn =
+ reinterpret_cast<glEndQueryProc>(GetGLProcAddress("glEndQueryEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glEndTransformFeedbackFn = reinterpret_cast<glEndTransformFeedbackProc>(
+ GetGLProcAddress("glEndTransformFeedback"));
+ } else if (ext.b_GL_EXT_transform_feedback) {
+ fn.glEndTransformFeedbackFn = reinterpret_cast<glEndTransformFeedbackProc>(
+ GetGLProcAddress("glEndTransformFeedbackEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sync) {
+ fn.glFenceSyncFn =
+ reinterpret_cast<glFenceSyncProc>(GetGLProcAddress("glFenceSync"));
+ }
+
+ if (ext.b_GL_APPLE_fence) {
+ fn.glFinishFenceAPPLEFn = reinterpret_cast<glFinishFenceAPPLEProc>(
+ GetGLProcAddress("glFinishFenceAPPLE"));
+ }
+
+ if (ext.b_GL_NV_fence) {
+ fn.glFinishFenceNVFn = reinterpret_cast<glFinishFenceNVProc>(
+ GetGLProcAddress("glFinishFenceNV"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glFlushMappedBufferRangeFn =
+ reinterpret_cast<glFlushMappedBufferRangeProc>(
+ GetGLProcAddress("glFlushMappedBufferRange"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glFramebufferRenderbufferEXTFn =
+ reinterpret_cast<glFramebufferRenderbufferEXTProc>(
+ GetGLProcAddress("glFramebufferRenderbuffer"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glFramebufferRenderbufferEXTFn =
+ reinterpret_cast<glFramebufferRenderbufferEXTProc>(
+ GetGLProcAddress("glFramebufferRenderbufferEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glFramebufferTexture2DEXTFn =
+ reinterpret_cast<glFramebufferTexture2DEXTProc>(
+ GetGLProcAddress("glFramebufferTexture2D"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glFramebufferTexture2DEXTFn =
+ reinterpret_cast<glFramebufferTexture2DEXTProc>(
+ GetGLProcAddress("glFramebufferTexture2DEXT"));
+ }
+
+ if (ext.b_GL_EXT_multisampled_render_to_texture) {
+ fn.glFramebufferTexture2DMultisampleEXTFn =
+ reinterpret_cast<glFramebufferTexture2DMultisampleEXTProc>(
+ GetGLProcAddress("glFramebufferTexture2DMultisampleEXT"));
+ }
+
+ if (ext.b_GL_IMG_multisampled_render_to_texture) {
+ fn.glFramebufferTexture2DMultisampleIMGFn =
+ reinterpret_cast<glFramebufferTexture2DMultisampleIMGProc>(
+ GetGLProcAddress("glFramebufferTexture2DMultisampleIMG"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glFramebufferTextureLayerFn =
+ reinterpret_cast<glFramebufferTextureLayerProc>(
+ GetGLProcAddress("glFramebufferTextureLayer"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glGenerateMipmapEXTFn = reinterpret_cast<glGenerateMipmapEXTProc>(
+ GetGLProcAddress("glGenerateMipmap"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glGenerateMipmapEXTFn = reinterpret_cast<glGenerateMipmapEXTProc>(
+ GetGLProcAddress("glGenerateMipmapEXT"));
+ }
+
+ if (ext.b_GL_APPLE_fence) {
+ fn.glGenFencesAPPLEFn = reinterpret_cast<glGenFencesAPPLEProc>(
+ GetGLProcAddress("glGenFencesAPPLE"));
+ }
+
+ if (ext.b_GL_NV_fence) {
+ fn.glGenFencesNVFn =
+ reinterpret_cast<glGenFencesNVProc>(GetGLProcAddress("glGenFencesNV"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glGenFramebuffersEXTFn = reinterpret_cast<glGenFramebuffersEXTProc>(
+ GetGLProcAddress("glGenFramebuffers"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glGenFramebuffersEXTFn = reinterpret_cast<glGenFramebuffersEXTProc>(
+ GetGLProcAddress("glGenFramebuffersEXT"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glGenPathsNVFn =
+ reinterpret_cast<glGenPathsNVProc>(GetGLProcAddress("glGenPathsNV"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glGenQueriesFn =
+ reinterpret_cast<glGenQueriesProc>(GetGLProcAddress("glGenQueries"));
+ } else if (ext.b_GL_ARB_occlusion_query) {
+ fn.glGenQueriesFn =
+ reinterpret_cast<glGenQueriesProc>(GetGLProcAddress("glGenQueriesARB"));
+ } else if (ext.b_GL_EXT_disjoint_timer_query ||
+ ext.b_GL_EXT_occlusion_query_boolean) {
+ fn.glGenQueriesFn =
+ reinterpret_cast<glGenQueriesProc>(GetGLProcAddress("glGenQueriesEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>(
+ GetGLProcAddress("glGenRenderbuffers"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glGenRenderbuffersEXTFn = reinterpret_cast<glGenRenderbuffersEXTProc>(
+ GetGLProcAddress("glGenRenderbuffersEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sampler_objects) {
+ fn.glGenSamplersFn =
+ reinterpret_cast<glGenSamplersProc>(GetGLProcAddress("glGenSamplers"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u) ||
+ ext.b_GL_ARB_transform_feedback2) {
+ fn.glGenTransformFeedbacksFn =
+ reinterpret_cast<glGenTransformFeedbacksProc>(
+ GetGLProcAddress("glGenTransformFeedbacks"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_vertex_array_object) {
+ fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>(
+ GetGLProcAddress("glGenVertexArrays"));
+ } else if (ext.b_GL_OES_vertex_array_object) {
+ fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>(
+ GetGLProcAddress("glGenVertexArraysOES"));
+ } else if (ext.b_GL_APPLE_vertex_array_object) {
+ fn.glGenVertexArraysOESFn = reinterpret_cast<glGenVertexArraysOESProc>(
+ GetGLProcAddress("glGenVertexArraysAPPLE"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
+ fn.glGetActiveUniformBlockivFn =
+ reinterpret_cast<glGetActiveUniformBlockivProc>(
+ GetGLProcAddress("glGetActiveUniformBlockiv"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetActiveUniformBlockivRobustANGLEFn =
+ reinterpret_cast<glGetActiveUniformBlockivRobustANGLEProc>(
+ GetGLProcAddress("glGetActiveUniformBlockivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
+ fn.glGetActiveUniformBlockNameFn =
+ reinterpret_cast<glGetActiveUniformBlockNameProc>(
+ GetGLProcAddress("glGetActiveUniformBlockName"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
+ fn.glGetActiveUniformsivFn = reinterpret_cast<glGetActiveUniformsivProc>(
+ GetGLProcAddress("glGetActiveUniformsiv"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetBooleani_vRobustANGLEFn =
+ reinterpret_cast<glGetBooleani_vRobustANGLEProc>(
+ GetGLProcAddress("glGetBooleani_vRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetBooleanvRobustANGLEFn =
+ reinterpret_cast<glGetBooleanvRobustANGLEProc>(
+ GetGLProcAddress("glGetBooleanvRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetBufferParameteri64vRobustANGLEFn =
+ reinterpret_cast<glGetBufferParameteri64vRobustANGLEProc>(
+ GetGLProcAddress("glGetBufferParameteri64vRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetBufferParameterivRobustANGLEFn =
+ reinterpret_cast<glGetBufferParameterivRobustANGLEProc>(
+ GetGLProcAddress("glGetBufferParameterivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetBufferPointervRobustANGLEFn =
+ reinterpret_cast<glGetBufferPointervRobustANGLEProc>(
+ GetGLProcAddress("glGetBufferPointervRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
+ fn.glGetDebugMessageLogFn = reinterpret_cast<glGetDebugMessageLogProc>(
+ GetGLProcAddress("glGetDebugMessageLog"));
+ } else if (ext.b_GL_KHR_debug) {
+ fn.glGetDebugMessageLogFn = reinterpret_cast<glGetDebugMessageLogProc>(
+ GetGLProcAddress("glGetDebugMessageLogKHR"));
+ }
+
+ if (ext.b_GL_NV_fence) {
+ fn.glGetFenceivNVFn = reinterpret_cast<glGetFenceivNVProc>(
+ GetGLProcAddress("glGetFenceivNV"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetFloatvRobustANGLEFn = reinterpret_cast<glGetFloatvRobustANGLEProc>(
+ GetGLProcAddress("glGetFloatvRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_blend_func_extended) {
+ fn.glGetFragDataIndexFn = reinterpret_cast<glGetFragDataIndexProc>(
+ GetGLProcAddress("glGetFragDataIndex"));
+ } else if (ext.b_GL_EXT_blend_func_extended) {
+ fn.glGetFragDataIndexFn = reinterpret_cast<glGetFragDataIndexProc>(
+ GetGLProcAddress("glGetFragDataIndexEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glGetFragDataLocationFn = reinterpret_cast<glGetFragDataLocationProc>(
+ GetGLProcAddress("glGetFragDataLocation"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glGetFramebufferAttachmentParameterivEXTFn =
+ reinterpret_cast<glGetFramebufferAttachmentParameterivEXTProc>(
+ GetGLProcAddress("glGetFramebufferAttachmentParameteriv"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glGetFramebufferAttachmentParameterivEXTFn =
+ reinterpret_cast<glGetFramebufferAttachmentParameterivEXTProc>(
+ GetGLProcAddress("glGetFramebufferAttachmentParameterivEXT"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetFramebufferAttachmentParameterivRobustANGLEFn =
+ reinterpret_cast<glGetFramebufferAttachmentParameterivRobustANGLEProc>(
+ GetGLProcAddress(
+ "glGetFramebufferAttachmentParameterivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetFramebufferParameterivRobustANGLEFn =
+ reinterpret_cast<glGetFramebufferParameterivRobustANGLEProc>(
+ GetGLProcAddress("glGetFramebufferParameterivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 5u) || ver->IsAtLeastGLES(3u, 2u)) {
+ fn.glGetGraphicsResetStatusARBFn =
+ reinterpret_cast<glGetGraphicsResetStatusARBProc>(
+ GetGLProcAddress("glGetGraphicsResetStatus"));
+ } else if (ext.b_GL_ARB_robustness) {
+ fn.glGetGraphicsResetStatusARBFn =
+ reinterpret_cast<glGetGraphicsResetStatusARBProc>(
+ GetGLProcAddress("glGetGraphicsResetStatusARB"));
+ } else if (ext.b_GL_KHR_robustness) {
+ fn.glGetGraphicsResetStatusARBFn =
+ reinterpret_cast<glGetGraphicsResetStatusARBProc>(
+ GetGLProcAddress("glGetGraphicsResetStatusKHR"));
+ } else if (ext.b_GL_EXT_robustness) {
+ fn.glGetGraphicsResetStatusARBFn =
+ reinterpret_cast<glGetGraphicsResetStatusARBProc>(
+ GetGLProcAddress("glGetGraphicsResetStatusEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glGetInteger64i_vFn = reinterpret_cast<glGetInteger64i_vProc>(
+ GetGLProcAddress("glGetInteger64i_v"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetInteger64i_vRobustANGLEFn =
+ reinterpret_cast<glGetInteger64i_vRobustANGLEProc>(
+ GetGLProcAddress("glGetInteger64i_vRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glGetInteger64vFn = reinterpret_cast<glGetInteger64vProc>(
+ GetGLProcAddress("glGetInteger64v"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetInteger64vRobustANGLEFn =
+ reinterpret_cast<glGetInteger64vRobustANGLEProc>(
+ GetGLProcAddress("glGetInteger64vRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glGetIntegeri_vFn = reinterpret_cast<glGetIntegeri_vProc>(
+ GetGLProcAddress("glGetIntegeri_v"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetIntegeri_vRobustANGLEFn =
+ reinterpret_cast<glGetIntegeri_vRobustANGLEProc>(
+ GetGLProcAddress("glGetIntegeri_vRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetIntegervRobustANGLEFn =
+ reinterpret_cast<glGetIntegervRobustANGLEProc>(
+ GetGLProcAddress("glGetIntegervRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glGetInternalformativFn = reinterpret_cast<glGetInternalformativProc>(
+ GetGLProcAddress("glGetInternalformativ"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetInternalformativRobustANGLEFn =
+ reinterpret_cast<glGetInternalformativRobustANGLEProc>(
+ GetGLProcAddress("glGetInternalformativRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetMultisamplefvRobustANGLEFn =
+ reinterpret_cast<glGetMultisamplefvRobustANGLEProc>(
+ GetGLProcAddress("glGetMultisamplefvRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetnUniformfvRobustANGLEFn =
+ reinterpret_cast<glGetnUniformfvRobustANGLEProc>(
+ GetGLProcAddress("glGetnUniformfvRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetnUniformivRobustANGLEFn =
+ reinterpret_cast<glGetnUniformivRobustANGLEProc>(
+ GetGLProcAddress("glGetnUniformivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetnUniformuivRobustANGLEFn =
+ reinterpret_cast<glGetnUniformuivRobustANGLEProc>(
+ GetGLProcAddress("glGetnUniformuivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
+ fn.glGetObjectLabelFn = reinterpret_cast<glGetObjectLabelProc>(
+ GetGLProcAddress("glGetObjectLabel"));
+ } else if (ext.b_GL_KHR_debug) {
+ fn.glGetObjectLabelFn = reinterpret_cast<glGetObjectLabelProc>(
+ GetGLProcAddress("glGetObjectLabelKHR"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
+ fn.glGetObjectPtrLabelFn = reinterpret_cast<glGetObjectPtrLabelProc>(
+ GetGLProcAddress("glGetObjectPtrLabel"));
+ } else if (ext.b_GL_KHR_debug) {
+ fn.glGetObjectPtrLabelFn = reinterpret_cast<glGetObjectPtrLabelProc>(
+ GetGLProcAddress("glGetObjectPtrLabelKHR"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 2u)) {
+ fn.glGetPointervFn =
+ reinterpret_cast<glGetPointervProc>(GetGLProcAddress("glGetPointerv"));
+ } else if (ext.b_GL_KHR_debug) {
+ fn.glGetPointervFn = reinterpret_cast<glGetPointervProc>(
+ GetGLProcAddress("glGetPointervKHR"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetPointervRobustANGLERobustANGLEFn =
+ reinterpret_cast<glGetPointervRobustANGLERobustANGLEProc>(
+ GetGLProcAddress("glGetPointervRobustANGLERobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 1u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_get_program_binary) {
+ fn.glGetProgramBinaryFn = reinterpret_cast<glGetProgramBinaryProc>(
+ GetGLProcAddress("glGetProgramBinary"));
+ } else if (ext.b_GL_OES_get_program_binary) {
+ fn.glGetProgramBinaryFn = reinterpret_cast<glGetProgramBinaryProc>(
+ GetGLProcAddress("glGetProgramBinaryOES"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 1u) ||
+ ext.b_GL_ARB_program_interface_query) {
+ fn.glGetProgramInterfaceivFn =
+ reinterpret_cast<glGetProgramInterfaceivProc>(
+ GetGLProcAddress("glGetProgramInterfaceiv"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetProgramInterfaceivRobustANGLEFn =
+ reinterpret_cast<glGetProgramInterfaceivRobustANGLEProc>(
+ GetGLProcAddress("glGetProgramInterfaceivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetProgramivRobustANGLEFn =
+ reinterpret_cast<glGetProgramivRobustANGLEProc>(
+ GetGLProcAddress("glGetProgramivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 1u) ||
+ ext.b_GL_ARB_program_interface_query) {
+ fn.glGetProgramResourceivFn = reinterpret_cast<glGetProgramResourceivProc>(
+ GetGLProcAddress("glGetProgramResourceiv"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 1u)) {
+ fn.glGetProgramResourceLocationFn =
+ reinterpret_cast<glGetProgramResourceLocationProc>(
+ GetGLProcAddress("glGetProgramResourceLocation"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 1u) ||
+ ext.b_GL_ARB_program_interface_query) {
+ fn.glGetProgramResourceNameFn =
+ reinterpret_cast<glGetProgramResourceNameProc>(
+ GetGLProcAddress("glGetProgramResourceName"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glGetQueryivFn =
+ reinterpret_cast<glGetQueryivProc>(GetGLProcAddress("glGetQueryiv"));
+ } else if (ext.b_GL_ARB_occlusion_query) {
+ fn.glGetQueryivFn =
+ reinterpret_cast<glGetQueryivProc>(GetGLProcAddress("glGetQueryivARB"));
+ } else if (ext.b_GL_EXT_disjoint_timer_query ||
+ ext.b_GL_EXT_occlusion_query_boolean) {
+ fn.glGetQueryivFn =
+ reinterpret_cast<glGetQueryivProc>(GetGLProcAddress("glGetQueryivEXT"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetQueryivRobustANGLEFn =
+ reinterpret_cast<glGetQueryivRobustANGLEProc>(
+ GetGLProcAddress("glGetQueryivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_timer_query) {
+ fn.glGetQueryObjecti64vFn = reinterpret_cast<glGetQueryObjecti64vProc>(
+ GetGLProcAddress("glGetQueryObjecti64v"));
+ } else if (ext.b_GL_EXT_timer_query || ext.b_GL_EXT_disjoint_timer_query) {
+ fn.glGetQueryObjecti64vFn = reinterpret_cast<glGetQueryObjecti64vProc>(
+ GetGLProcAddress("glGetQueryObjecti64vEXT"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetQueryObjecti64vRobustANGLEFn =
+ reinterpret_cast<glGetQueryObjecti64vRobustANGLEProc>(
+ GetGLProcAddress("glGetQueryObjecti64vRobustANGLE"));
+ }
+
+ if (!ver->is_es) {
+ fn.glGetQueryObjectivFn = reinterpret_cast<glGetQueryObjectivProc>(
+ GetGLProcAddress("glGetQueryObjectiv"));
+ } else if (ext.b_GL_ARB_occlusion_query) {
+ fn.glGetQueryObjectivFn = reinterpret_cast<glGetQueryObjectivProc>(
+ GetGLProcAddress("glGetQueryObjectivARB"));
+ } else if (ext.b_GL_EXT_disjoint_timer_query) {
+ fn.glGetQueryObjectivFn = reinterpret_cast<glGetQueryObjectivProc>(
+ GetGLProcAddress("glGetQueryObjectivEXT"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetQueryObjectivRobustANGLEFn =
+ reinterpret_cast<glGetQueryObjectivRobustANGLEProc>(
+ GetGLProcAddress("glGetQueryObjectivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_timer_query) {
+ fn.glGetQueryObjectui64vFn = reinterpret_cast<glGetQueryObjectui64vProc>(
+ GetGLProcAddress("glGetQueryObjectui64v"));
+ } else if (ext.b_GL_EXT_timer_query || ext.b_GL_EXT_disjoint_timer_query) {
+ fn.glGetQueryObjectui64vFn = reinterpret_cast<glGetQueryObjectui64vProc>(
+ GetGLProcAddress("glGetQueryObjectui64vEXT"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetQueryObjectui64vRobustANGLEFn =
+ reinterpret_cast<glGetQueryObjectui64vRobustANGLEProc>(
+ GetGLProcAddress("glGetQueryObjectui64vRobustANGLE"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glGetQueryObjectuivFn = reinterpret_cast<glGetQueryObjectuivProc>(
+ GetGLProcAddress("glGetQueryObjectuiv"));
+ } else if (ext.b_GL_ARB_occlusion_query) {
+ fn.glGetQueryObjectuivFn = reinterpret_cast<glGetQueryObjectuivProc>(
+ GetGLProcAddress("glGetQueryObjectuivARB"));
+ } else if (ext.b_GL_EXT_disjoint_timer_query ||
+ ext.b_GL_EXT_occlusion_query_boolean) {
+ fn.glGetQueryObjectuivFn = reinterpret_cast<glGetQueryObjectuivProc>(
+ GetGLProcAddress("glGetQueryObjectuivEXT"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetQueryObjectuivRobustANGLEFn =
+ reinterpret_cast<glGetQueryObjectuivRobustANGLEProc>(
+ GetGLProcAddress("glGetQueryObjectuivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glGetRenderbufferParameterivEXTFn =
+ reinterpret_cast<glGetRenderbufferParameterivEXTProc>(
+ GetGLProcAddress("glGetRenderbufferParameteriv"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glGetRenderbufferParameterivEXTFn =
+ reinterpret_cast<glGetRenderbufferParameterivEXTProc>(
+ GetGLProcAddress("glGetRenderbufferParameterivEXT"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetRenderbufferParameterivRobustANGLEFn =
+ reinterpret_cast<glGetRenderbufferParameterivRobustANGLEProc>(
+ GetGLProcAddress("glGetRenderbufferParameterivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sampler_objects) {
+ fn.glGetSamplerParameterfvFn =
+ reinterpret_cast<glGetSamplerParameterfvProc>(
+ GetGLProcAddress("glGetSamplerParameterfv"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetSamplerParameterfvRobustANGLEFn =
+ reinterpret_cast<glGetSamplerParameterfvRobustANGLEProc>(
+ GetGLProcAddress("glGetSamplerParameterfvRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetSamplerParameterIivRobustANGLEFn =
+ reinterpret_cast<glGetSamplerParameterIivRobustANGLEProc>(
+ GetGLProcAddress("glGetSamplerParameterIivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetSamplerParameterIuivRobustANGLEFn =
+ reinterpret_cast<glGetSamplerParameterIuivRobustANGLEProc>(
+ GetGLProcAddress("glGetSamplerParameterIuivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sampler_objects) {
+ fn.glGetSamplerParameterivFn =
+ reinterpret_cast<glGetSamplerParameterivProc>(
+ GetGLProcAddress("glGetSamplerParameteriv"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetSamplerParameterivRobustANGLEFn =
+ reinterpret_cast<glGetSamplerParameterivRobustANGLEProc>(
+ GetGLProcAddress("glGetSamplerParameterivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetShaderivRobustANGLEFn =
+ reinterpret_cast<glGetShaderivRobustANGLEProc>(
+ GetGLProcAddress("glGetShaderivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
+ fn.glGetShaderPrecisionFormatFn =
+ reinterpret_cast<glGetShaderPrecisionFormatProc>(
+ GetGLProcAddress("glGetShaderPrecisionFormat"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sync) {
+ fn.glGetSyncivFn =
+ reinterpret_cast<glGetSyncivProc>(GetGLProcAddress("glGetSynciv"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 1u)) {
+ fn.glGetTexLevelParameterfvFn =
+ reinterpret_cast<glGetTexLevelParameterfvProc>(
+ GetGLProcAddress("glGetTexLevelParameterfv"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetTexLevelParameterfvRobustANGLEFn =
+ reinterpret_cast<glGetTexLevelParameterfvRobustANGLEProc>(
+ GetGLProcAddress("glGetTexLevelParameterfvRobustANGLE"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 1u)) {
+ fn.glGetTexLevelParameterivFn =
+ reinterpret_cast<glGetTexLevelParameterivProc>(
+ GetGLProcAddress("glGetTexLevelParameteriv"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetTexLevelParameterivRobustANGLEFn =
+ reinterpret_cast<glGetTexLevelParameterivRobustANGLEProc>(
+ GetGLProcAddress("glGetTexLevelParameterivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetTexParameterfvRobustANGLEFn =
+ reinterpret_cast<glGetTexParameterfvRobustANGLEProc>(
+ GetGLProcAddress("glGetTexParameterfvRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetTexParameterIivRobustANGLEFn =
+ reinterpret_cast<glGetTexParameterIivRobustANGLEProc>(
+ GetGLProcAddress("glGetTexParameterIivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetTexParameterIuivRobustANGLEFn =
+ reinterpret_cast<glGetTexParameterIuivRobustANGLEProc>(
+ GetGLProcAddress("glGetTexParameterIuivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetTexParameterivRobustANGLEFn =
+ reinterpret_cast<glGetTexParameterivRobustANGLEProc>(
+ GetGLProcAddress("glGetTexParameterivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glGetTransformFeedbackVaryingFn =
+ reinterpret_cast<glGetTransformFeedbackVaryingProc>(
+ GetGLProcAddress("glGetTransformFeedbackVarying"));
+ } else if (ext.b_GL_EXT_transform_feedback) {
+ fn.glGetTransformFeedbackVaryingFn =
+ reinterpret_cast<glGetTransformFeedbackVaryingProc>(
+ GetGLProcAddress("glGetTransformFeedbackVaryingEXT"));
+ }
+
+ if (ext.b_GL_ANGLE_translated_shader_source) {
+ fn.glGetTranslatedShaderSourceANGLEFn =
+ reinterpret_cast<glGetTranslatedShaderSourceANGLEProc>(
+ GetGLProcAddress("glGetTranslatedShaderSourceANGLE"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
+ fn.glGetUniformBlockIndexFn = reinterpret_cast<glGetUniformBlockIndexProc>(
+ GetGLProcAddress("glGetUniformBlockIndex"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetUniformfvRobustANGLEFn =
+ reinterpret_cast<glGetUniformfvRobustANGLEProc>(
+ GetGLProcAddress("glGetUniformfvRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
+ fn.glGetUniformIndicesFn = reinterpret_cast<glGetUniformIndicesProc>(
+ GetGLProcAddress("glGetUniformIndices"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetUniformivRobustANGLEFn =
+ reinterpret_cast<glGetUniformivRobustANGLEProc>(
+ GetGLProcAddress("glGetUniformivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glGetUniformuivFn = reinterpret_cast<glGetUniformuivProc>(
+ GetGLProcAddress("glGetUniformuiv"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetUniformuivRobustANGLEFn =
+ reinterpret_cast<glGetUniformuivRobustANGLEProc>(
+ GetGLProcAddress("glGetUniformuivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetVertexAttribfvRobustANGLEFn =
+ reinterpret_cast<glGetVertexAttribfvRobustANGLEProc>(
+ GetGLProcAddress("glGetVertexAttribfvRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetVertexAttribIivRobustANGLEFn =
+ reinterpret_cast<glGetVertexAttribIivRobustANGLEProc>(
+ GetGLProcAddress("glGetVertexAttribIivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetVertexAttribIuivRobustANGLEFn =
+ reinterpret_cast<glGetVertexAttribIuivRobustANGLEProc>(
+ GetGLProcAddress("glGetVertexAttribIuivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetVertexAttribivRobustANGLEFn =
+ reinterpret_cast<glGetVertexAttribivRobustANGLEProc>(
+ GetGLProcAddress("glGetVertexAttribivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glGetVertexAttribPointervRobustANGLEFn =
+ reinterpret_cast<glGetVertexAttribPointervRobustANGLEProc>(
+ GetGLProcAddress("glGetVertexAttribPointervRobustANGLE"));
+ }
+
+ if (ext.b_GL_EXT_debug_marker) {
+ fn.glInsertEventMarkerEXTFn = reinterpret_cast<glInsertEventMarkerEXTProc>(
+ GetGLProcAddress("glInsertEventMarkerEXT"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glInvalidateFramebufferFn =
+ reinterpret_cast<glInvalidateFramebufferProc>(
+ GetGLProcAddress("glInvalidateFramebuffer"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glInvalidateSubFramebufferFn =
+ reinterpret_cast<glInvalidateSubFramebufferProc>(
+ GetGLProcAddress("glInvalidateSubFramebuffer"));
+ }
+
+ if (ext.b_GL_APPLE_fence) {
+ fn.glIsFenceAPPLEFn = reinterpret_cast<glIsFenceAPPLEProc>(
+ GetGLProcAddress("glIsFenceAPPLE"));
+ }
+
+ if (ext.b_GL_NV_fence) {
+ fn.glIsFenceNVFn =
+ reinterpret_cast<glIsFenceNVProc>(GetGLProcAddress("glIsFenceNV"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glIsFramebufferEXTFn = reinterpret_cast<glIsFramebufferEXTProc>(
+ GetGLProcAddress("glIsFramebuffer"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glIsFramebufferEXTFn = reinterpret_cast<glIsFramebufferEXTProc>(
+ GetGLProcAddress("glIsFramebufferEXT"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glIsPathNVFn =
+ reinterpret_cast<glIsPathNVProc>(GetGLProcAddress("glIsPathNV"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glIsQueryFn =
+ reinterpret_cast<glIsQueryProc>(GetGLProcAddress("glIsQuery"));
+ } else if (ext.b_GL_ARB_occlusion_query) {
+ fn.glIsQueryFn =
+ reinterpret_cast<glIsQueryProc>(GetGLProcAddress("glIsQueryARB"));
+ } else if (ext.b_GL_EXT_disjoint_timer_query ||
+ ext.b_GL_EXT_occlusion_query_boolean) {
+ fn.glIsQueryFn =
+ reinterpret_cast<glIsQueryProc>(GetGLProcAddress("glIsQueryEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glIsRenderbufferEXTFn = reinterpret_cast<glIsRenderbufferEXTProc>(
+ GetGLProcAddress("glIsRenderbuffer"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glIsRenderbufferEXTFn = reinterpret_cast<glIsRenderbufferEXTProc>(
+ GetGLProcAddress("glIsRenderbufferEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sampler_objects) {
+ fn.glIsSamplerFn =
+ reinterpret_cast<glIsSamplerProc>(GetGLProcAddress("glIsSampler"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sync) {
+ fn.glIsSyncFn =
+ reinterpret_cast<glIsSyncProc>(GetGLProcAddress("glIsSync"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u) ||
+ ext.b_GL_ARB_transform_feedback2) {
+ fn.glIsTransformFeedbackFn = reinterpret_cast<glIsTransformFeedbackProc>(
+ GetGLProcAddress("glIsTransformFeedback"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_vertex_array_object) {
+ fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>(
+ GetGLProcAddress("glIsVertexArray"));
+ } else if (ext.b_GL_OES_vertex_array_object) {
+ fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>(
+ GetGLProcAddress("glIsVertexArrayOES"));
+ } else if (ext.b_GL_APPLE_vertex_array_object) {
+ fn.glIsVertexArrayOESFn = reinterpret_cast<glIsVertexArrayOESProc>(
+ GetGLProcAddress("glIsVertexArrayAPPLE"));
+ }
+
+ if (!ver->is_es) {
+ fn.glMapBufferFn =
+ reinterpret_cast<glMapBufferProc>(GetGLProcAddress("glMapBuffer"));
+ } else if (ext.b_GL_OES_mapbuffer) {
+ fn.glMapBufferFn =
+ reinterpret_cast<glMapBufferProc>(GetGLProcAddress("glMapBufferOES"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_map_buffer_range) {
+ fn.glMapBufferRangeFn = reinterpret_cast<glMapBufferRangeProc>(
+ GetGLProcAddress("glMapBufferRange"));
+ } else if (ext.b_GL_EXT_map_buffer_range) {
+ fn.glMapBufferRangeFn = reinterpret_cast<glMapBufferRangeProc>(
+ GetGLProcAddress("glMapBufferRangeEXT"));
+ }
+
+ if (ext.b_GL_EXT_direct_state_access || ext.b_GL_NV_path_rendering) {
+ fn.glMatrixLoadfEXTFn = reinterpret_cast<glMatrixLoadfEXTProc>(
+ GetGLProcAddress("glMatrixLoadfEXT"));
+ }
+
+ if (ext.b_GL_EXT_direct_state_access || ext.b_GL_NV_path_rendering) {
+ fn.glMatrixLoadIdentityEXTFn =
+ reinterpret_cast<glMatrixLoadIdentityEXTProc>(
+ GetGLProcAddress("glMatrixLoadIdentityEXT"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 1u) ||
+ ext.b_GL_ARB_shader_image_load_store) {
+ fn.glMemoryBarrierEXTFn = reinterpret_cast<glMemoryBarrierEXTProc>(
+ GetGLProcAddress("glMemoryBarrier"));
+ } else if (ext.b_GL_EXT_shader_image_load_store) {
+ fn.glMemoryBarrierEXTFn = reinterpret_cast<glMemoryBarrierEXTProc>(
+ GetGLProcAddress("glMemoryBarrierEXT"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
+ fn.glObjectLabelFn =
+ reinterpret_cast<glObjectLabelProc>(GetGLProcAddress("glObjectLabel"));
+ } else if (ext.b_GL_KHR_debug) {
+ fn.glObjectLabelFn = reinterpret_cast<glObjectLabelProc>(
+ GetGLProcAddress("glObjectLabelKHR"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
+ fn.glObjectPtrLabelFn = reinterpret_cast<glObjectPtrLabelProc>(
+ GetGLProcAddress("glObjectPtrLabel"));
+ } else if (ext.b_GL_KHR_debug) {
+ fn.glObjectPtrLabelFn = reinterpret_cast<glObjectPtrLabelProc>(
+ GetGLProcAddress("glObjectPtrLabelKHR"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glPathCommandsNVFn = reinterpret_cast<glPathCommandsNVProc>(
+ GetGLProcAddress("glPathCommandsNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glPathParameterfNVFn = reinterpret_cast<glPathParameterfNVProc>(
+ GetGLProcAddress("glPathParameterfNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glPathParameteriNVFn = reinterpret_cast<glPathParameteriNVProc>(
+ GetGLProcAddress("glPathParameteriNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glPathStencilFuncNVFn = reinterpret_cast<glPathStencilFuncNVProc>(
+ GetGLProcAddress("glPathStencilFuncNV"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u) ||
+ ext.b_GL_ARB_transform_feedback2) {
+ fn.glPauseTransformFeedbackFn =
+ reinterpret_cast<glPauseTransformFeedbackProc>(
+ GetGLProcAddress("glPauseTransformFeedback"));
+ }
+
+ if (!ver->is_es) {
+ fn.glPointParameteriFn = reinterpret_cast<glPointParameteriProc>(
+ GetGLProcAddress("glPointParameteri"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
+ fn.glPopDebugGroupFn = reinterpret_cast<glPopDebugGroupProc>(
+ GetGLProcAddress("glPopDebugGroup"));
+ } else if (ext.b_GL_KHR_debug) {
+ fn.glPopDebugGroupFn = reinterpret_cast<glPopDebugGroupProc>(
+ GetGLProcAddress("glPopDebugGroupKHR"));
+ }
+
+ if (ext.b_GL_EXT_debug_marker) {
+ fn.glPopGroupMarkerEXTFn = reinterpret_cast<glPopGroupMarkerEXTProc>(
+ GetGLProcAddress("glPopGroupMarkerEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 1u)) {
+ fn.glPrimitiveRestartIndexFn =
+ reinterpret_cast<glPrimitiveRestartIndexProc>(
+ GetGLProcAddress("glPrimitiveRestartIndex"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 1u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_get_program_binary) {
+ fn.glProgramBinaryFn = reinterpret_cast<glProgramBinaryProc>(
+ GetGLProcAddress("glProgramBinary"));
+ } else if (ext.b_GL_OES_get_program_binary) {
+ fn.glProgramBinaryFn = reinterpret_cast<glProgramBinaryProc>(
+ GetGLProcAddress("glProgramBinaryOES"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 1u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_get_program_binary) {
+ fn.glProgramParameteriFn = reinterpret_cast<glProgramParameteriProc>(
+ GetGLProcAddress("glProgramParameteri"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glProgramPathFragmentInputGenNVFn =
+ reinterpret_cast<glProgramPathFragmentInputGenNVProc>(
+ GetGLProcAddress("glProgramPathFragmentInputGenNV"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 3u) || ver->IsAtLeastGLES(3u, 2u)) {
+ fn.glPushDebugGroupFn = reinterpret_cast<glPushDebugGroupProc>(
+ GetGLProcAddress("glPushDebugGroup"));
+ } else if (ext.b_GL_KHR_debug) {
+ fn.glPushDebugGroupFn = reinterpret_cast<glPushDebugGroupProc>(
+ GetGLProcAddress("glPushDebugGroupKHR"));
+ }
+
+ if (ext.b_GL_EXT_debug_marker) {
+ fn.glPushGroupMarkerEXTFn = reinterpret_cast<glPushGroupMarkerEXTProc>(
+ GetGLProcAddress("glPushGroupMarkerEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ext.b_GL_ARB_timer_query) {
+ fn.glQueryCounterFn = reinterpret_cast<glQueryCounterProc>(
+ GetGLProcAddress("glQueryCounter"));
+ } else if (ext.b_GL_EXT_disjoint_timer_query) {
+ fn.glQueryCounterFn = reinterpret_cast<glQueryCounterProc>(
+ GetGLProcAddress("glQueryCounterEXT"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glReadBufferFn =
+ reinterpret_cast<glReadBufferProc>(GetGLProcAddress("glReadBuffer"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glReadnPixelsRobustANGLEFn =
+ reinterpret_cast<glReadnPixelsRobustANGLEProc>(
+ GetGLProcAddress("glReadnPixelsRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glReadPixelsRobustANGLEFn =
+ reinterpret_cast<glReadPixelsRobustANGLEProc>(
+ GetGLProcAddress("glReadPixelsRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
+ fn.glReleaseShaderCompilerFn =
+ reinterpret_cast<glReleaseShaderCompilerProc>(
+ GetGLProcAddress("glReleaseShaderCompiler"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
+ fn.glRenderbufferStorageEXTFn =
+ reinterpret_cast<glRenderbufferStorageEXTProc>(
+ GetGLProcAddress("glRenderbufferStorage"));
+ } else if (ext.b_GL_EXT_framebuffer_object) {
+ fn.glRenderbufferStorageEXTFn =
+ reinterpret_cast<glRenderbufferStorageEXTProc>(
+ GetGLProcAddress("glRenderbufferStorageEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glRenderbufferStorageMultisampleFn =
+ reinterpret_cast<glRenderbufferStorageMultisampleProc>(
+ GetGLProcAddress("glRenderbufferStorageMultisample"));
+ }
+
+ if (ext.b_GL_ANGLE_framebuffer_multisample) {
+ fn.glRenderbufferStorageMultisampleANGLEFn =
+ reinterpret_cast<glRenderbufferStorageMultisampleANGLEProc>(
+ GetGLProcAddress("glRenderbufferStorageMultisampleANGLE"));
+ }
+
+ if (ext.b_GL_EXT_multisampled_render_to_texture ||
+ ext.b_GL_EXT_framebuffer_multisample) {
+ fn.glRenderbufferStorageMultisampleEXTFn =
+ reinterpret_cast<glRenderbufferStorageMultisampleEXTProc>(
+ GetGLProcAddress("glRenderbufferStorageMultisampleEXT"));
+ }
+
+ if (ext.b_GL_IMG_multisampled_render_to_texture) {
+ fn.glRenderbufferStorageMultisampleIMGFn =
+ reinterpret_cast<glRenderbufferStorageMultisampleIMGProc>(
+ GetGLProcAddress("glRenderbufferStorageMultisampleIMG"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(4u, 0u) ||
+ ext.b_GL_ARB_transform_feedback2) {
+ fn.glResumeTransformFeedbackFn =
+ reinterpret_cast<glResumeTransformFeedbackProc>(
+ GetGLProcAddress("glResumeTransformFeedback"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sampler_objects) {
+ fn.glSamplerParameterfFn = reinterpret_cast<glSamplerParameterfProc>(
+ GetGLProcAddress("glSamplerParameterf"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sampler_objects) {
+ fn.glSamplerParameterfvFn = reinterpret_cast<glSamplerParameterfvProc>(
+ GetGLProcAddress("glSamplerParameterfv"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glSamplerParameterfvRobustANGLEFn =
+ reinterpret_cast<glSamplerParameterfvRobustANGLEProc>(
+ GetGLProcAddress("glSamplerParameterfvRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sampler_objects) {
+ fn.glSamplerParameteriFn = reinterpret_cast<glSamplerParameteriProc>(
+ GetGLProcAddress("glSamplerParameteri"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glSamplerParameterIivRobustANGLEFn =
+ reinterpret_cast<glSamplerParameterIivRobustANGLEProc>(
+ GetGLProcAddress("glSamplerParameterIivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glSamplerParameterIuivRobustANGLEFn =
+ reinterpret_cast<glSamplerParameterIuivRobustANGLEProc>(
+ GetGLProcAddress("glSamplerParameterIuivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sampler_objects) {
+ fn.glSamplerParameterivFn = reinterpret_cast<glSamplerParameterivProc>(
+ GetGLProcAddress("glSamplerParameteriv"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glSamplerParameterivRobustANGLEFn =
+ reinterpret_cast<glSamplerParameterivRobustANGLEProc>(
+ GetGLProcAddress("glSamplerParameterivRobustANGLE"));
+ }
+
+ if (ext.b_GL_APPLE_fence) {
+ fn.glSetFenceAPPLEFn = reinterpret_cast<glSetFenceAPPLEProc>(
+ GetGLProcAddress("glSetFenceAPPLE"));
+ }
+
+ if (ext.b_GL_NV_fence) {
+ fn.glSetFenceNVFn =
+ reinterpret_cast<glSetFenceNVProc>(GetGLProcAddress("glSetFenceNV"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 1u) || ver->is_es) {
+ fn.glShaderBinaryFn = reinterpret_cast<glShaderBinaryProc>(
+ GetGLProcAddress("glShaderBinary"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glStencilFillPathInstancedNVFn =
+ reinterpret_cast<glStencilFillPathInstancedNVProc>(
+ GetGLProcAddress("glStencilFillPathInstancedNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glStencilFillPathNVFn = reinterpret_cast<glStencilFillPathNVProc>(
+ GetGLProcAddress("glStencilFillPathNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glStencilStrokePathInstancedNVFn =
+ reinterpret_cast<glStencilStrokePathInstancedNVProc>(
+ GetGLProcAddress("glStencilStrokePathInstancedNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glStencilStrokePathNVFn = reinterpret_cast<glStencilStrokePathNVProc>(
+ GetGLProcAddress("glStencilStrokePathNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glStencilThenCoverFillPathInstancedNVFn =
+ reinterpret_cast<glStencilThenCoverFillPathInstancedNVProc>(
+ GetGLProcAddress("glStencilThenCoverFillPathInstancedNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glStencilThenCoverFillPathNVFn =
+ reinterpret_cast<glStencilThenCoverFillPathNVProc>(
+ GetGLProcAddress("glStencilThenCoverFillPathNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glStencilThenCoverStrokePathInstancedNVFn =
+ reinterpret_cast<glStencilThenCoverStrokePathInstancedNVProc>(
+ GetGLProcAddress("glStencilThenCoverStrokePathInstancedNV"));
+ }
+
+ if (ext.b_GL_NV_path_rendering) {
+ fn.glStencilThenCoverStrokePathNVFn =
+ reinterpret_cast<glStencilThenCoverStrokePathNVProc>(
+ GetGLProcAddress("glStencilThenCoverStrokePathNV"));
+ }
+
+ if (ext.b_GL_APPLE_fence) {
+ fn.glTestFenceAPPLEFn = reinterpret_cast<glTestFenceAPPLEProc>(
+ GetGLProcAddress("glTestFenceAPPLE"));
+ }
+
+ if (ext.b_GL_NV_fence) {
+ fn.glTestFenceNVFn =
+ reinterpret_cast<glTestFenceNVProc>(GetGLProcAddress("glTestFenceNV"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glTexImage2DRobustANGLEFn =
+ reinterpret_cast<glTexImage2DRobustANGLEProc>(
+ GetGLProcAddress("glTexImage2DRobustANGLE"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glTexImage3DFn =
+ reinterpret_cast<glTexImage3DProc>(GetGLProcAddress("glTexImage3D"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glTexImage3DRobustANGLEFn =
+ reinterpret_cast<glTexImage3DRobustANGLEProc>(
+ GetGLProcAddress("glTexImage3DRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glTexParameterfvRobustANGLEFn =
+ reinterpret_cast<glTexParameterfvRobustANGLEProc>(
+ GetGLProcAddress("glTexParameterfvRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glTexParameterIivRobustANGLEFn =
+ reinterpret_cast<glTexParameterIivRobustANGLEProc>(
+ GetGLProcAddress("glTexParameterIivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glTexParameterIuivRobustANGLEFn =
+ reinterpret_cast<glTexParameterIuivRobustANGLEProc>(
+ GetGLProcAddress("glTexParameterIuivRobustANGLE"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glTexParameterivRobustANGLEFn =
+ reinterpret_cast<glTexParameterivRobustANGLEProc>(
+ GetGLProcAddress("glTexParameterivRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_texture_storage) {
+ fn.glTexStorage2DEXTFn = reinterpret_cast<glTexStorage2DEXTProc>(
+ GetGLProcAddress("glTexStorage2D"));
+ } else if (ext.b_GL_EXT_texture_storage) {
+ fn.glTexStorage2DEXTFn = reinterpret_cast<glTexStorage2DEXTProc>(
+ GetGLProcAddress("glTexStorage2DEXT"));
+ }
+
+ if (ver->IsAtLeastGL(4u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_texture_storage) {
+ fn.glTexStorage3DFn = reinterpret_cast<glTexStorage3DProc>(
+ GetGLProcAddress("glTexStorage3D"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glTexSubImage2DRobustANGLEFn =
+ reinterpret_cast<glTexSubImage2DRobustANGLEProc>(
+ GetGLProcAddress("glTexSubImage2DRobustANGLE"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glTexSubImage3DFn = reinterpret_cast<glTexSubImage3DProc>(
+ GetGLProcAddress("glTexSubImage3D"));
+ }
+
+ if (ext.b_GL_ANGLE_robust_client_memory) {
+ fn.glTexSubImage3DRobustANGLEFn =
+ reinterpret_cast<glTexSubImage3DRobustANGLEProc>(
+ GetGLProcAddress("glTexSubImage3DRobustANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glTransformFeedbackVaryingsFn =
+ reinterpret_cast<glTransformFeedbackVaryingsProc>(
+ GetGLProcAddress("glTransformFeedbackVaryings"));
+ } else if (ext.b_GL_EXT_transform_feedback) {
+ fn.glTransformFeedbackVaryingsFn =
+ reinterpret_cast<glTransformFeedbackVaryingsProc>(
+ GetGLProcAddress("glTransformFeedbackVaryingsEXT"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniform1uiFn =
+ reinterpret_cast<glUniform1uiProc>(GetGLProcAddress("glUniform1ui"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniform1uivFn =
+ reinterpret_cast<glUniform1uivProc>(GetGLProcAddress("glUniform1uiv"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniform2uiFn =
+ reinterpret_cast<glUniform2uiProc>(GetGLProcAddress("glUniform2ui"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniform2uivFn =
+ reinterpret_cast<glUniform2uivProc>(GetGLProcAddress("glUniform2uiv"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniform3uiFn =
+ reinterpret_cast<glUniform3uiProc>(GetGLProcAddress("glUniform3ui"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniform3uivFn =
+ reinterpret_cast<glUniform3uivProc>(GetGLProcAddress("glUniform3uiv"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniform4uiFn =
+ reinterpret_cast<glUniform4uiProc>(GetGLProcAddress("glUniform4ui"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniform4uivFn =
+ reinterpret_cast<glUniform4uivProc>(GetGLProcAddress("glUniform4uiv"));
+ }
+
+ if (ver->IsAtLeastGLES(3u, 0u) || ver->IsAtLeastGL(3u, 1u)) {
+ fn.glUniformBlockBindingFn = reinterpret_cast<glUniformBlockBindingProc>(
+ GetGLProcAddress("glUniformBlockBinding"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniformMatrix2x3fvFn = reinterpret_cast<glUniformMatrix2x3fvProc>(
+ GetGLProcAddress("glUniformMatrix2x3fv"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniformMatrix2x4fvFn = reinterpret_cast<glUniformMatrix2x4fvProc>(
+ GetGLProcAddress("glUniformMatrix2x4fv"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniformMatrix3x2fvFn = reinterpret_cast<glUniformMatrix3x2fvProc>(
+ GetGLProcAddress("glUniformMatrix3x2fv"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniformMatrix3x4fvFn = reinterpret_cast<glUniformMatrix3x4fvProc>(
+ GetGLProcAddress("glUniformMatrix3x4fv"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniformMatrix4x2fvFn = reinterpret_cast<glUniformMatrix4x2fvProc>(
+ GetGLProcAddress("glUniformMatrix4x2fv"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUniformMatrix4x3fvFn = reinterpret_cast<glUniformMatrix4x3fvProc>(
+ GetGLProcAddress("glUniformMatrix4x3fv"));
+ }
+
+ if (!ver->is_es || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glUnmapBufferFn =
+ reinterpret_cast<glUnmapBufferProc>(GetGLProcAddress("glUnmapBuffer"));
+ } else if (ext.b_GL_OES_mapbuffer) {
+ fn.glUnmapBufferFn = reinterpret_cast<glUnmapBufferProc>(
+ GetGLProcAddress("glUnmapBufferOES"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 3u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glVertexAttribDivisorANGLEFn =
+ reinterpret_cast<glVertexAttribDivisorANGLEProc>(
+ GetGLProcAddress("glVertexAttribDivisor"));
+ } else if (ext.b_GL_ARB_instanced_arrays) {
+ fn.glVertexAttribDivisorANGLEFn =
+ reinterpret_cast<glVertexAttribDivisorANGLEProc>(
+ GetGLProcAddress("glVertexAttribDivisorARB"));
+ } else if (ext.b_GL_ANGLE_instanced_arrays) {
+ fn.glVertexAttribDivisorANGLEFn =
+ reinterpret_cast<glVertexAttribDivisorANGLEProc>(
+ GetGLProcAddress("glVertexAttribDivisorANGLE"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glVertexAttribI4iFn = reinterpret_cast<glVertexAttribI4iProc>(
+ GetGLProcAddress("glVertexAttribI4i"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glVertexAttribI4ivFn = reinterpret_cast<glVertexAttribI4ivProc>(
+ GetGLProcAddress("glVertexAttribI4iv"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glVertexAttribI4uiFn = reinterpret_cast<glVertexAttribI4uiProc>(
+ GetGLProcAddress("glVertexAttribI4ui"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glVertexAttribI4uivFn = reinterpret_cast<glVertexAttribI4uivProc>(
+ GetGLProcAddress("glVertexAttribI4uiv"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 0u) || ver->IsAtLeastGLES(3u, 0u)) {
+ fn.glVertexAttribIPointerFn = reinterpret_cast<glVertexAttribIPointerProc>(
+ GetGLProcAddress("glVertexAttribIPointer"));
+ }
+
+ if (ver->IsAtLeastGL(3u, 2u) || ver->IsAtLeastGLES(3u, 0u) ||
+ ext.b_GL_ARB_sync) {
+ fn.glWaitSyncFn =
+ reinterpret_cast<glWaitSyncProc>(GetGLProcAddress("glWaitSync"));
+ }
+}
+
+void DriverGL::ClearBindings() {
+ memset(this, 0, sizeof(*this));
+}
+
+} // namespace gl
« no previous file with comments | « ui/gl/gl_bindings_autogen_egl.cc ('k') | ui/gl/gl_bindings_autogen_gl1.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698