summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiago Marcos P. Santos <tmpsantos@gmail.com>2019-02-05 15:18:01 +0200
committerThiago Marcos P. Santos <tmpsantos@gmail.com>2019-02-08 20:04:31 +0200
commit710e760cad9b10c0426e2d17d807dece3b80bf46 (patch)
treebffbd7320de9dc3818ef51cde3f2ab9e5b091bd0
parentc9056ded897ad81fed4f2d7c486242019f8437a6 (diff)
downloadqtlocation-mapboxgl-710e760cad9b10c0426e2d17d807dece3b80bf46.tar.gz
[android,linux,darwin,qt] Load OpenGL for the platform
These loaders will provide pointers to the platform implementation of OpenGL. On Android, Linux and Darwin, we simply link with the OpenGL implementation that is expected to exist on the platform. Qt has its own GL loader, so we just connect the dots.
-rw-r--r--platform/android/src/gl.cpp155
-rw-r--r--platform/darwin/src/gl.cpp187
-rw-r--r--platform/linux/src/gl.cpp169
-rw-r--r--platform/qt/src/gl.cpp159
4 files changed, 670 insertions, 0 deletions
diff --git a/platform/android/src/gl.cpp b/platform/android/src/gl.cpp
new file mode 100644
index 0000000000..904bbb19a3
--- /dev/null
+++ b/platform/android/src/gl.cpp
@@ -0,0 +1,155 @@
+#include <mbgl/platform/gl.hpp>
+
+#define GL_GLEXT_PROTOTYPES
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+namespace mbgl {
+namespace platform {
+
+gl::GLFunctionPointers getGLFunctionPointers() {
+ return {
+ glActiveTexture,
+ glAttachShader,
+ glBindAttribLocation,
+ glBindBuffer,
+ glBindFramebuffer,
+ glBindRenderbuffer,
+ glBindTexture,
+ glBlendColor,
+ glBlendEquation,
+ glBlendEquationSeparate,
+ glBlendFunc,
+ glBlendFuncSeparate,
+ glBufferData,
+ glBufferSubData,
+ glCheckFramebufferStatus,
+ glClear,
+ glClearColor,
+ glClearDepthf,
+ glClearStencil,
+ glColorMask,
+ glCompileShader,
+ glCompressedTexImage2D,
+ glCompressedTexSubImage2D,
+ glCopyTexImage2D,
+ glCopyTexSubImage2D,
+ glCreateProgram,
+ glCreateShader,
+ glCullFace,
+ glDeleteBuffers,
+ glDeleteFramebuffers,
+ glDeleteProgram,
+ glDeleteRenderbuffers,
+ glDeleteShader,
+ glDeleteTextures,
+ glDepthFunc,
+ glDepthMask,
+ glDepthRangef,
+ glDetachShader,
+ glDisable,
+ glDisableVertexAttribArray,
+ glDrawArrays,
+ glDrawElements,
+ glEnable,
+ glEnableVertexAttribArray,
+ glFinish,
+ glFlush,
+ glFramebufferRenderbuffer,
+ glFramebufferTexture2D,
+ glFrontFace,
+ glGenBuffers,
+ glGenerateMipmap,
+ glGenFramebuffers,
+ glGenRenderbuffers,
+ glGenTextures,
+ glGetActiveAttrib,
+ glGetActiveUniform,
+ glGetAttachedShaders,
+ glGetAttribLocation,
+ glGetBooleanv,
+ glGetBufferParameteriv,
+ glGetError,
+ glGetFloatv,
+ glGetFramebufferAttachmentParameteriv,
+ glGetIntegerv,
+ glGetProgramInfoLog,
+ glGetProgramiv,
+ glGetRenderbufferParameteriv,
+ glGetShaderInfoLog,
+ glGetShaderiv,
+ glGetShaderSource,
+ glGetString,
+ glGetTexParameterfv,
+ glGetTexParameteriv,
+ glGetUniformfv,
+ glGetUniformiv,
+ glGetUniformLocation,
+ glGetVertexAttribfv,
+ glGetVertexAttribiv,
+ glGetVertexAttribPointerv,
+ glHint,
+ glIsBuffer,
+ glIsEnabled,
+ glIsFramebuffer,
+ glIsProgram,
+ glIsRenderbuffer,
+ glIsShader,
+ glIsTexture,
+ glLineWidth,
+ glLinkProgram,
+ glPixelStorei,
+ glPolygonOffset,
+ glReadPixels,
+ glRenderbufferStorage,
+ glSampleCoverage,
+ glScissor,
+ glShaderSource,
+ glStencilFunc,
+ glStencilFuncSeparate,
+ glStencilMask,
+ glStencilMaskSeparate,
+ glStencilOp,
+ glStencilOpSeparate,
+ glTexImage2D,
+ glTexParameterf,
+ glTexParameterfv,
+ glTexParameteri,
+ glTexParameteriv,
+ glTexSubImage2D,
+ glUniform1f,
+ glUniform1fv,
+ glUniform1i,
+ glUniform1iv,
+ glUniform2f,
+ glUniform2fv,
+ glUniform2i,
+ glUniform2iv,
+ glUniform3f,
+ glUniform3fv,
+ glUniform3i,
+ glUniform3iv,
+ glUniform4f,
+ glUniform4fv,
+ glUniform4i,
+ glUniform4iv,
+ glUniformMatrix2fv,
+ glUniformMatrix3fv,
+ glUniformMatrix4fv,
+ glUseProgram,
+ glValidateProgram,
+ glVertexAttrib1f,
+ glVertexAttrib1fv,
+ glVertexAttrib2f,
+ glVertexAttrib2fv,
+ glVertexAttrib3f,
+ glVertexAttrib3fv,
+ glVertexAttrib4f,
+ glVertexAttrib4fv,
+ glVertexAttribPointer,
+ glViewport,
+ };
+}
+
+} // platform
+} // mbgl \ No newline at end of file
diff --git a/platform/darwin/src/gl.cpp b/platform/darwin/src/gl.cpp
new file mode 100644
index 0000000000..b82bd69ee4
--- /dev/null
+++ b/platform/darwin/src/gl.cpp
@@ -0,0 +1,187 @@
+#include <mbgl/platform/gl.hpp>
+
+#include "TargetConditionals.h"
+
+#if TARGET_OS_IPHONE
+ #include <OpenGLES/ES2/gl.h>
+ #include <OpenGLES/ES2/glext.h>
+#elif TARGET_OS_SIMULATOR
+ #include <OpenGLES/ES2/gl.h>
+ #include <OpenGLES/ES2/glext.h>
+#elif TARGET_OS_MAC
+ #include <OpenGL/OpenGL.h>
+ #include <OpenGL/gl.h>
+ #include <OpenGL/glext.h>
+#else
+ #error Unsupported Apple platform
+#endif
+
+namespace mbgl {
+namespace platform {
+
+gl::GLFunctionPointers getGLFunctionPointers() {
+ return {
+ glActiveTexture,
+ glAttachShader,
+ glBindAttribLocation,
+ glBindBuffer,
+ glBindFramebuffer,
+ glBindRenderbuffer,
+ glBindTexture,
+ glBlendColor,
+ glBlendEquation,
+ glBlendEquationSeparate,
+ glBlendFunc,
+ glBlendFuncSeparate,
+ glBufferData,
+ glBufferSubData,
+ glCheckFramebufferStatus,
+ glClear,
+ glClearColor,
+#if !TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR && TARGET_OS_MAC
+ [](GLfloat depth) {
+ return glClearDepth(depth);
+ },
+#else
+ glClearDepthf,
+#endif
+ glClearStencil,
+ glColorMask,
+ glCompileShader,
+ glCompressedTexImage2D,
+ glCompressedTexSubImage2D,
+ glCopyTexImage2D,
+ glCopyTexSubImage2D,
+ glCreateProgram,
+ glCreateShader,
+ glCullFace,
+ glDeleteBuffers,
+ glDeleteFramebuffers,
+ glDeleteProgram,
+ glDeleteRenderbuffers,
+ glDeleteShader,
+ glDeleteTextures,
+ glDepthFunc,
+ glDepthMask,
+#if !TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR && TARGET_OS_MAC
+ [](GLfloat nearVal, GLfloat farVal) {
+ return glDepthRange(nearVal, farVal);
+ },
+#else
+ glDepthRangef,
+#endif
+ glDetachShader,
+ glDisable,
+ glDisableVertexAttribArray,
+ glDrawArrays,
+ glDrawElements,
+ glEnable,
+ glEnableVertexAttribArray,
+ glFinish,
+ glFlush,
+ glFramebufferRenderbuffer,
+ glFramebufferTexture2D,
+ glFrontFace,
+ glGenBuffers,
+ glGenerateMipmap,
+ glGenFramebuffers,
+ glGenRenderbuffers,
+ glGenTextures,
+ glGetActiveAttrib,
+ glGetActiveUniform,
+ glGetAttachedShaders,
+ glGetAttribLocation,
+ glGetBooleanv,
+ glGetBufferParameteriv,
+ glGetError,
+ glGetFloatv,
+ glGetFramebufferAttachmentParameteriv,
+ glGetIntegerv,
+ glGetProgramInfoLog,
+ glGetProgramiv,
+ glGetRenderbufferParameteriv,
+ glGetShaderInfoLog,
+ glGetShaderiv,
+ glGetShaderSource,
+ glGetString,
+ glGetTexParameterfv,
+ glGetTexParameteriv,
+ glGetUniformfv,
+ glGetUniformiv,
+ glGetUniformLocation,
+ glGetVertexAttribfv,
+ glGetVertexAttribiv,
+ glGetVertexAttribPointerv,
+ glHint,
+ glIsBuffer,
+ glIsEnabled,
+ glIsFramebuffer,
+ glIsProgram,
+ glIsRenderbuffer,
+ glIsShader,
+ glIsTexture,
+ glLineWidth,
+ glLinkProgram,
+ glPixelStorei,
+ glPolygonOffset,
+ glReadPixels,
+ glRenderbufferStorage,
+ glSampleCoverage,
+ glScissor,
+ glShaderSource,
+ glStencilFunc,
+ glStencilFuncSeparate,
+ glStencilMask,
+ glStencilMaskSeparate,
+ glStencilOp,
+ glStencilOpSeparate,
+ glTexImage2D,
+ glTexParameterf,
+ glTexParameterfv,
+ glTexParameteri,
+ glTexParameteriv,
+ glTexSubImage2D,
+ glUniform1f,
+ glUniform1fv,
+ glUniform1i,
+ glUniform1iv,
+ glUniform2f,
+ glUniform2fv,
+ glUniform2i,
+ glUniform2iv,
+ glUniform3f,
+ glUniform3fv,
+ glUniform3i,
+ glUniform3iv,
+ glUniform4f,
+ glUniform4fv,
+ glUniform4i,
+ glUniform4iv,
+ glUniformMatrix2fv,
+ glUniformMatrix3fv,
+ glUniformMatrix4fv,
+ glUseProgram,
+ glValidateProgram,
+ glVertexAttrib1f,
+ glVertexAttrib1fv,
+ glVertexAttrib2f,
+ glVertexAttrib2fv,
+ glVertexAttrib3f,
+ glVertexAttrib3fv,
+ glVertexAttrib4f,
+ glVertexAttrib4fv,
+ glVertexAttribPointer,
+ glViewport,
+#ifndef MBGL_USE_GLES2
+ glDrawPixels,
+ glGetDoublev,
+ glPixelTransferf,
+ glPixelZoom,
+ glPointSize,
+ glRasterPos4d,
+#endif
+ };
+}
+
+} // platform
+} // mbgl \ No newline at end of file
diff --git a/platform/linux/src/gl.cpp b/platform/linux/src/gl.cpp
new file mode 100644
index 0000000000..026a16cb31
--- /dev/null
+++ b/platform/linux/src/gl.cpp
@@ -0,0 +1,169 @@
+#include <mbgl/platform/gl.hpp>
+
+#define GL_GLEXT_PROTOTYPES
+
+#ifndef MBGL_USE_GLES2
+#include <GL/gl.h>
+#include <GL/glext.h>
+#else
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+#endif
+
+namespace mbgl {
+namespace platform {
+
+gl::GLFunctionPointers getGLFunctionPointers() {
+ return {
+ glActiveTexture,
+ glAttachShader,
+ glBindAttribLocation,
+ glBindBuffer,
+ glBindFramebuffer,
+ glBindRenderbuffer,
+ glBindTexture,
+ glBlendColor,
+ glBlendEquation,
+ glBlendEquationSeparate,
+ glBlendFunc,
+ glBlendFuncSeparate,
+ glBufferData,
+ glBufferSubData,
+ glCheckFramebufferStatus,
+ glClear,
+ glClearColor,
+ glClearDepthf,
+ glClearStencil,
+ glColorMask,
+ glCompileShader,
+ glCompressedTexImage2D,
+ glCompressedTexSubImage2D,
+ glCopyTexImage2D,
+ glCopyTexSubImage2D,
+ glCreateProgram,
+ glCreateShader,
+ glCullFace,
+ glDeleteBuffers,
+ glDeleteFramebuffers,
+ glDeleteProgram,
+ glDeleteRenderbuffers,
+ glDeleteShader,
+ glDeleteTextures,
+ glDepthFunc,
+ glDepthMask,
+ glDepthRangef,
+ glDetachShader,
+ glDisable,
+ glDisableVertexAttribArray,
+ glDrawArrays,
+ glDrawElements,
+ glEnable,
+ glEnableVertexAttribArray,
+ glFinish,
+ glFlush,
+ glFramebufferRenderbuffer,
+ glFramebufferTexture2D,
+ glFrontFace,
+ glGenBuffers,
+ glGenerateMipmap,
+ glGenFramebuffers,
+ glGenRenderbuffers,
+ glGenTextures,
+ glGetActiveAttrib,
+ glGetActiveUniform,
+ glGetAttachedShaders,
+ glGetAttribLocation,
+ glGetBooleanv,
+ glGetBufferParameteriv,
+ glGetError,
+ glGetFloatv,
+ glGetFramebufferAttachmentParameteriv,
+ glGetIntegerv,
+ glGetProgramInfoLog,
+ glGetProgramiv,
+ glGetRenderbufferParameteriv,
+ glGetShaderInfoLog,
+ glGetShaderiv,
+ glGetShaderSource,
+ glGetString,
+ glGetTexParameterfv,
+ glGetTexParameteriv,
+ glGetUniformfv,
+ glGetUniformiv,
+ glGetUniformLocation,
+ glGetVertexAttribfv,
+ glGetVertexAttribiv,
+ glGetVertexAttribPointerv,
+ glHint,
+ glIsBuffer,
+ glIsEnabled,
+ glIsFramebuffer,
+ glIsProgram,
+ glIsRenderbuffer,
+ glIsShader,
+ glIsTexture,
+ glLineWidth,
+ glLinkProgram,
+ glPixelStorei,
+ glPolygonOffset,
+ glReadPixels,
+ glRenderbufferStorage,
+ glSampleCoverage,
+ glScissor,
+ glShaderSource,
+ glStencilFunc,
+ glStencilFuncSeparate,
+ glStencilMask,
+ glStencilMaskSeparate,
+ glStencilOp,
+ glStencilOpSeparate,
+ glTexImage2D,
+ glTexParameterf,
+ glTexParameterfv,
+ glTexParameteri,
+ glTexParameteriv,
+ glTexSubImage2D,
+ glUniform1f,
+ glUniform1fv,
+ glUniform1i,
+ glUniform1iv,
+ glUniform2f,
+ glUniform2fv,
+ glUniform2i,
+ glUniform2iv,
+ glUniform3f,
+ glUniform3fv,
+ glUniform3i,
+ glUniform3iv,
+ glUniform4f,
+ glUniform4fv,
+ glUniform4i,
+ glUniform4iv,
+ glUniformMatrix2fv,
+ glUniformMatrix3fv,
+ glUniformMatrix4fv,
+ glUseProgram,
+ glValidateProgram,
+ glVertexAttrib1f,
+ glVertexAttrib1fv,
+ glVertexAttrib2f,
+ glVertexAttrib2fv,
+ glVertexAttrib3f,
+ glVertexAttrib3fv,
+ glVertexAttrib4f,
+ glVertexAttrib4fv,
+ glVertexAttribPointer,
+ glViewport,
+#ifndef MBGL_USE_GLES2
+ glDrawPixels,
+ glGetDoublev,
+ glPixelTransferf,
+ glPixelZoom,
+ glPointSize,
+ glRasterPos4d,
+#endif
+ };
+}
+
+} // platform
+} // mbgl \ No newline at end of file
diff --git a/platform/qt/src/gl.cpp b/platform/qt/src/gl.cpp
new file mode 100644
index 0000000000..9f50d8ef0b
--- /dev/null
+++ b/platform/qt/src/gl.cpp
@@ -0,0 +1,159 @@
+#include <mbgl/platform/gl.hpp>
+
+#include <QOpenGLContext>
+#include <QOpenGLFunctions>
+
+namespace mbgl {
+namespace platform {
+
+gl::GLFunctionPointers getGLFunctionPointers() {
+ return {
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glActiveTexture(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glAttachShader(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glBindAttribLocation(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glBindBuffer(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glBindFramebuffer(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glBindRenderbuffer(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glBindTexture(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glBlendColor(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glBlendEquation(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glBlendEquationSeparate(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glBlendFunc(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glBlendFuncSeparate(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glBufferData(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glBufferSubData(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glCheckFramebufferStatus(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glClear(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glClearColor(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glClearDepthf(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glClearStencil(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glColorMask(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glCompileShader(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glCompressedTexImage2D(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glCompressedTexSubImage2D(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glCopyTexImage2D(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glCopyTexSubImage2D(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glCreateProgram(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glCreateShader(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glCullFace(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDeleteBuffers(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDeleteFramebuffers(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDeleteProgram(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDeleteRenderbuffers(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDeleteShader(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDeleteTextures(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDepthFunc(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDepthMask(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDepthRangef(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDetachShader(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDisable(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDisableVertexAttribArray(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDrawArrays(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glDrawElements(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glEnable(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glEnableVertexAttribArray(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glFinish(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glFlush(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glFramebufferRenderbuffer(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glFramebufferTexture2D(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glFrontFace(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGenBuffers(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGenerateMipmap(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGenFramebuffers(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGenRenderbuffers(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGenTextures(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetActiveAttrib(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetActiveUniform(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetAttachedShaders(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetAttribLocation(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetBooleanv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetBufferParameteriv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetError(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetFloatv(args...); },
+ [](auto... args) {
+ return QOpenGLContext::currentContext()->functions()->glGetFramebufferAttachmentParameteriv(args...);
+ },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetIntegerv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetProgramInfoLog(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetProgramiv(args...); },
+ [](auto... args) {
+ return QOpenGLContext::currentContext()->functions()->glGetRenderbufferParameteriv(args...);
+ },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetShaderInfoLog(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetShaderiv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetShaderSource(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetString(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetTexParameterfv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetTexParameteriv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetUniformfv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetUniformiv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetUniformLocation(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetVertexAttribfv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetVertexAttribiv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetVertexAttribPointerv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glHint(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glIsBuffer(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glIsEnabled(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glIsFramebuffer(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glIsProgram(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glIsRenderbuffer(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glIsShader(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glIsTexture(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glLineWidth(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glLinkProgram(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glPixelStorei(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glPolygonOffset(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glReadPixels(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glRenderbufferStorage(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glSampleCoverage(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glScissor(args...); },
+ [](GLuint shader, GLsizei count, const GLchar * const * string, const GLint *length) {
+ return QOpenGLContext::currentContext()->functions()->glShaderSource(shader, count, const_cast<const GLchar **>(string), length); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glStencilFunc(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glStencilFuncSeparate(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glStencilMask(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glStencilMaskSeparate(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glStencilOp(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glStencilOpSeparate(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glTexImage2D(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glTexParameterf(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glTexParameterfv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glTexParameteri(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glTexParameteriv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glTexSubImage2D(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform1f(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform1fv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform1i(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform1iv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform2f(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform2fv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform2i(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform2iv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform3f(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform3fv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform3i(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform3iv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform4f(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform4fv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform4i(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniform4iv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniformMatrix2fv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniformMatrix3fv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUniformMatrix4fv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glUseProgram(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glValidateProgram(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glVertexAttrib1f(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glVertexAttrib1fv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glVertexAttrib2f(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glVertexAttrib2fv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glVertexAttrib3f(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glVertexAttrib3fv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glVertexAttrib4f(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glVertexAttrib4fv(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glVertexAttribPointer(args...); },
+ [](auto... args) { return QOpenGLContext::currentContext()->functions()->glViewport(args...); },
+ };
+}
+
+} // platform
+} // mbgl \ No newline at end of file