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 |