From 8ff6704fc4cc8a44b87af4fc2be60cd9caab7de5 Mon Sep 17 00:00:00 2001 From: Alex Cristici Date: Fri, 14 Apr 2023 23:48:53 +0300 Subject: [PATCH] API links for OpenGL ES 3.0 (#1007) Co-authored-by: mwilsnd --- CMakeLists.txt | 1 - include/mbgl/platform/gl_functions.hpp | 227 ++++- platform/android/src/gl_functions.cpp | 119 ++- platform/darwin/src/gl_functions.cpp | 127 ++- platform/glfw/glfw_view.cpp | 2 + platform/linux/src/gl_functions.cpp | 112 +++ platform/qt/src/mbgl/gl_functions.cpp | 330 ++++++++ platform/windows/include/gl_functions_wgl.h | 342 ++++++++ platform/windows/src/gl_functions.cpp | 112 +++ src/mbgl/gl/context.cpp | 46 +- src/mbgl/gl/context.hpp | 11 +- src/mbgl/gl/defines.hpp | 894 ++++++++++++++++---- src/mbgl/gl/enum.cpp | 8 +- src/mbgl/gl/value.cpp | 24 +- src/mbgl/gl/value.hpp | 4 +- src/mbgl/gl/vertex_array_extension.hpp | 38 - test/fixtures/map/no_vao/expected.png | Bin 9832 -> 0 bytes test/gl/gl_functions.test.cpp | 113 +++ test/map/map.test.cpp | 17 +- 19 files changed, 2216 insertions(+), 311 deletions(-) delete mode 100644 src/mbgl/gl/vertex_array_extension.hpp delete mode 100644 test/fixtures/map/no_vao/expected.png diff --git a/CMakeLists.txt b/CMakeLists.txt index 67a3e907c..630016c7a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -947,7 +947,6 @@ if(MBGL_WITH_OPENGL) ${PROJECT_SOURCE_DIR}/src/mbgl/gl/value.hpp ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_array.cpp ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_array.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_array_extension.hpp ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_buffer_resource.cpp ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_buffer_resource.hpp ${PROJECT_SOURCE_DIR}/src/mbgl/layermanager/location_indicator_layer_factory.cpp diff --git a/include/mbgl/platform/gl_functions.hpp b/include/mbgl/platform/gl_functions.hpp index 63ae49f23..9feee8b29 100644 --- a/include/mbgl/platform/gl_functions.hpp +++ b/include/mbgl/platform/gl_functions.hpp @@ -1,8 +1,9 @@ #pragma once #include +#include -// Pointers to OpenGL ES 2.0 functions. They must be +// Pointers to OpenGL ES functions. They must be // initialized by the platform at linking time. #ifndef NDEBUG @@ -11,6 +12,8 @@ #define MBGL_CHECK_ERROR(cmd) (cmd) #endif +struct __GLsync; + namespace mbgl { namespace platform { @@ -25,6 +28,9 @@ using GLsizei = int; using GLubyte = unsigned char; using GLuint = unsigned int; using GLvoid = void; +using GLint64 = int64_t; +using GLuint64 = uint64_t; +using GLsync = ::__GLsync *; #if defined(_WIN32) using GLintptr = long long; @@ -34,6 +40,8 @@ using GLintptr = long; using GLsizeiptr = long; #endif +/* OpenGL ES 2.0 */ + /// Pointer to glActiveTexture OpenGL function. extern void (* const glActiveTexture)(GLenum); /// Pointer to glAttachShader OpenGL function. @@ -172,6 +180,8 @@ extern void (* const glGetRenderbufferParameteriv)(GLenum, GLenum, GLint *); extern void (* const glGetShaderInfoLog)(GLuint, GLsizei, GLsizei *, GLchar *); /// Pointer to glGetShaderiv OpenGL function. extern void (* const glGetShaderiv)(GLuint, GLenum, GLint *); +/// Pointer to glGetShaderPrecisionFormat OpenGL function. +extern void (* const glGetShaderPrecisionFormat)(GLenum, GLenum, GLint *, GLint *); /// Pointer to glGetShaderSource OpenGL function. extern void (* const glGetShaderSource)(GLuint, GLsizei, GLsizei *, GLchar *); /// Pointer to glGetString OpenGL function. @@ -218,12 +228,16 @@ extern void (* const glPixelStorei)(GLenum, GLint); extern void (* const glPolygonOffset)(GLfloat, GLfloat); /// Pointer to glReadPixels OpenGL function. extern void (* const glReadPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void *); +/// Pointer to glReleaseShaderCompiler OpenGL function. +extern void (* const glReleaseShaderCompiler)(); /// Pointer to glRenderbufferStorage OpenGL function. extern void (* const glRenderbufferStorage)(GLenum, GLenum, GLsizei, GLsizei); /// Pointer to glSampleCoverage OpenGL function. extern void (* const glSampleCoverage)(GLfloat, GLboolean); /// Pointer to glScissor OpenGL function. extern void (* const glScissor)(GLint, GLint, GLsizei, GLsizei); +/// Pointer to glShaderBinary OpenGL function. +extern void (* const glShaderBinary)(GLsizei, const GLuint *, GLenum, const GLvoid *, GLsizei); /// Pointer to glShaderSource OpenGL function. extern void (* const glShaderSource)(GLuint, GLsizei, const GLchar * const*, const GLint *); /// Pointer to glStencilFunc OpenGL function. @@ -313,6 +327,217 @@ extern void (* const glVertexAttribPointer)(GLuint, GLint, GLenum, GLboolean, GL /// Pointer to glViewport OpenGL function. extern void (* const glViewport)(GLint, GLint, GLsizei, GLsizei); +/* OpenGL ES 3.0 */ + +/// Pointer to glReadBuffer OpenGL function. +extern void (* const glReadBuffer)(GLenum); +/// Pointer to glDrawRangeElements OpenGL function. +extern void (* const glDrawRangeElements)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); +/// Pointer to glTexImage3D OpenGL function. +extern void (* const glTexImage3D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); +/// Pointer to glTexSubImage3D OpenGL function. +extern void (* const glTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +/// Pointer to glCopyTexSubImage3D OpenGL function. +extern void (* const glCopyTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +/// Pointer to glCompressedTexImage3D OpenGL function. +extern void (* const glCompressedTexImage3D)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); +/// Pointer to glCompressedTexSubImage3D OpenGL function. +extern void (* const glCompressedTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); +/// Pointer to glGenQueries OpenGL function. +extern void (* const glGenQueries)(GLsizei, GLuint *); +/// Pointer to glDeleteQueries OpenGL function. +extern void (* const glDeleteQueries)(GLsizei, const GLuint *); +/// Pointer to glIsQuery OpenGL function. +extern GLboolean (* const glIsQuery)(GLuint); +/// Pointer to glBeginQuery OpenGL function. +extern void (* const glBeginQuery)(GLenum, GLuint); +/// Pointer to glEndQuery OpenGL function. +extern void (* const glEndQuery)(GLenum); +/// Pointer to glGetQueryiv OpenGL function. +extern void (* const glGetQueryiv)(GLenum, GLenum, GLint *); +/// Pointer to glGetQueryObjectuiv OpenGL function. +extern void (* const glGetQueryObjectuiv)(GLuint, GLenum, GLuint *); +/// Pointer to glUnmapBuffer OpenGL function. +extern GLboolean (* const glUnmapBuffer)(GLenum); +/// Pointer to glGetBufferPointerv OpenGL function. +extern void (* const glGetBufferPointerv)(GLenum, GLenum, GLvoid **); +/// Pointer to glDrawBuffers OpenGL function. +extern void (* const glDrawBuffers)(GLsizei, const GLenum *); +/// Pointer to glUniformMatrix2x3fv OpenGL function. +extern void (* const glUniformMatrix2x3fv)(GLint, GLsizei, GLboolean, const GLfloat *); +/// Pointer to glUniformMatrix3x2fv OpenGL function. +extern void (* const glUniformMatrix3x2fv)(GLint, GLsizei, GLboolean, const GLfloat *); +/// Pointer to glUniformMatrix2x4fv OpenGL function. +extern void (* const glUniformMatrix2x4fv)(GLint, GLsizei, GLboolean, const GLfloat *); +/// Pointer to glUniformMatrix4x2fv OpenGL function. +extern void (* const glUniformMatrix4x2fv)(GLint, GLsizei, GLboolean, const GLfloat *); +/// Pointer to glUniformMatrix3x4fv OpenGL function. +extern void (* const glUniformMatrix3x4fv)(GLint, GLsizei, GLboolean, const GLfloat *); +/// Pointer to glUniformMatrix4x3fv OpenGL function. +extern void (* const glUniformMatrix4x3fv)(GLint, GLsizei, GLboolean, const GLfloat *); +/// Pointer to glBlitFramebuffer OpenGL function. +extern void (* const glBlitFramebuffer)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); +/// Pointer to glRenderbufferStorageMultisample OpenGL function. +extern void (* const glRenderbufferStorageMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +/// Pointer to glFramebufferTextureLayer OpenGL function. +extern void (* const glFramebufferTextureLayer)(GLenum, GLenum, GLuint, GLint, GLint); +/// Pointer to glMapBufferRange OpenGL function. +extern GLvoid* (* const glMapBufferRange)(GLenum, GLintptr, GLsizeiptr, GLbitfield); +/// Pointer to glMapBufferRange OpenGL function. +extern void (* const glFlushMappedBufferRange)(GLenum, GLintptr, GLsizeiptr); +/// Pointer to glBindVertexArray OpenGL function. +extern void (* const glBindVertexArray)(GLuint); +/// Pointer to glDeleteVertexArrays OpenGL function. +extern void (* const glDeleteVertexArrays)(GLsizei, const GLuint *); +/// Pointer to glGenVertexArrays OpenGL function. +extern void (* const glGenVertexArrays)(GLsizei, GLuint *); +/// Pointer to glIsVertexArray OpenGL function. +extern GLboolean (* const glIsVertexArray)(GLuint); +/// Pointer to glGetIntegeri_v OpenGL function. +extern void (* const glGetIntegeri_v)(GLenum, GLuint, GLint *); +/// Pointer to glBeginTransformFeedback OpenGL function. +extern void (* const glBeginTransformFeedback)(GLenum); +/// Pointer to glEndTransformFeedback OpenGL function. +extern void (* const glEndTransformFeedback)(); +/// Pointer to glBindBufferRange OpenGL function. +extern void (* const glBindBufferRange)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); +/// Pointer to glBindBufferBase OpenGL function. +extern void (* const glBindBufferBase)(GLenum, GLuint, GLuint); +/// Pointer to glTransformFeedbackVaryings OpenGL function. +extern void (* const glTransformFeedbackVaryings)(GLuint, GLsizei, const GLchar * const*, GLenum); +/// Pointer to glGetTransformFeedbackVarying OpenGL function. +extern void (* const glGetTransformFeedbackVarying)(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *); +/// Pointer to glVertexAttribIPointer OpenGL function. +extern void (* const glVertexAttribIPointer)(GLuint, GLint, GLenum, GLsizei, const GLvoid *); +/// Pointer to glGetVertexAttribIiv OpenGL function. +extern void (* const glGetVertexAttribIiv)(GLuint, GLenum, GLint *); +/// Pointer to glGetVertexAttribIiv OpenGL function. +extern void (* const glGetVertexAttribIuiv)(GLuint, GLenum, GLuint *); +/// Pointer to glVertexAttribI4i OpenGL function. +extern void (* const glVertexAttribI4i)(GLuint, GLint, GLint, GLint, GLint); +/// Pointer to glVertexAttribI4ui OpenGL function. +extern void (* const glVertexAttribI4ui)(GLuint, GLuint, GLuint, GLuint, GLuint); +/// Pointer to glVertexAttribI4iv OpenGL function. +extern void (* const glVertexAttribI4iv)(GLuint, const GLint *); +/// Pointer to glVertexAttribI4uiv OpenGL function. +extern void (* const glVertexAttribI4uiv)(GLuint, const GLuint *); +/// Pointer to glGetUniformuiv OpenGL function. +extern void (* const glGetUniformuiv)(GLuint, GLint, GLuint *); +/// Pointer to glGetFragDataLocation OpenGL function. +extern GLint (* const glGetFragDataLocation)(GLuint, const GLchar *); +/// Pointer to glUniform1ui OpenGL function. +extern void (* const glUniform1ui)(GLint, GLuint); +/// Pointer to glUniform2ui OpenGL function. +extern void (* const glUniform2ui)(GLint, GLuint, GLuint); +/// Pointer to glUniform3ui OpenGL function. +extern void (* const glUniform3ui)(GLint, GLuint, GLuint, GLuint); +/// Pointer to glUniform4ui OpenGL function. +extern void (* const glUniform4ui)(GLint, GLuint, GLuint, GLuint, GLuint); +/// Pointer to glUniform1uiv OpenGL function. +extern void (* const glUniform1uiv)(GLint, GLsizei, const GLuint *); +/// Pointer to glUniform2uiv OpenGL function. +extern void (* const glUniform2uiv)(GLint, GLsizei, const GLuint *); +/// Pointer to glUniform3uiv OpenGL function. +extern void (* const glUniform3uiv)(GLint, GLsizei, const GLuint *); +/// Pointer to glUniform4uiv OpenGL function. +extern void (* const glUniform4uiv)(GLint, GLsizei, const GLuint *); +/// Pointer to glClearBufferiv OpenGL function. +extern void (* const glClearBufferiv)(GLenum, GLint, const GLint *); +/// Pointer to glClearBufferuiv OpenGL function. +extern void (* const glClearBufferuiv)(GLenum, GLint, const GLuint *); +/// Pointer to glClearBufferfv OpenGL function. +extern void (* const glClearBufferfv)(GLenum, GLint, const GLfloat *); +/// Pointer to glClearBufferfi OpenGL function. +extern void (* const glClearBufferfi)(GLenum, GLint, GLfloat, GLint); +/// Pointer to glGetStringi OpenGL function. +extern const GLubyte* (* const glGetStringi)(GLenum, GLuint); +/// Pointer to glCopyBufferSubData OpenGL function. +extern void (* const glCopyBufferSubData)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr); +/// Pointer to glGetUniformIndices OpenGL function. +extern void (* const glGetUniformIndices)(GLuint, GLsizei, const GLchar * const*, GLuint *); +/// Pointer to glGetActiveUniformsiv OpenGL function. +extern void (* const glGetActiveUniformsiv)(GLuint, GLsizei, const GLuint *, GLenum, GLint *); +/// Pointer to glGetUniformBlockIndex OpenGL function. +extern GLuint (* const glGetUniformBlockIndex)(GLuint, const GLchar *); +/// Pointer to glGetActiveUniformBlockiv OpenGL function. +extern void (* const glGetActiveUniformBlockiv)(GLuint, GLuint, GLenum, GLint *); +/// Pointer to glGetActiveUniformBlockName OpenGL function. +extern void (* const glGetActiveUniformBlockName)(GLuint, GLuint, GLsizei, GLsizei *, GLchar *); +/// Pointer to glUniformBlockBinding OpenGL function. +extern void (* const glUniformBlockBinding)(GLuint, GLuint, GLuint); +/// Pointer to glDrawArraysInstanced OpenGL function. +extern void (* const glDrawArraysInstanced)(GLenum, GLint, GLsizei, GLsizei); +/// Pointer to glDrawElementsInstanced OpenGL function. +extern void (* const glDrawElementsInstanced)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei); +/// Pointer to glFenceSync OpenGL function. +extern GLsync (* const glFenceSync)(GLenum, GLbitfield); +/// Pointer to glIsSync OpenGL function. +extern GLboolean (* const glIsSync)(GLsync); +/// Pointer to glDeleteSync OpenGL function. +extern void (* const glDeleteSync)(GLsync); +/// Pointer to glClientWaitSync OpenGL function. +extern GLenum (* const glClientWaitSync)(GLsync, GLbitfield, GLuint64); +/// Pointer to glWaitSync OpenGL function. +extern void (* const glWaitSync)(GLsync, GLbitfield, GLuint64); +/// Pointer to glGetInteger64v OpenGL function. +extern void (* const glGetInteger64v)(GLenum, GLint64 *); +/// Pointer to glGetSynciv OpenGL function. +extern void (* const glGetSynciv)(GLsync, GLenum, GLsizei, GLsizei *, GLint *); +/// Pointer to glGetInteger64i_v OpenGL function. +extern void (* const glGetInteger64i_v)(GLenum, GLuint, GLint64 *); +/// Pointer to glGetBufferParameteri64v OpenGL function. +extern void (* const glGetBufferParameteri64v)(GLenum, GLenum, GLint64 *); +/// Pointer to glGenSamplers OpenGL function. +extern void (* const glGenSamplers)(GLsizei, GLuint *); +/// Pointer to glDeleteSamplers OpenGL function. +extern void (* const glDeleteSamplers)(GLsizei, const GLuint *); +/// Pointer to glIsSampler OpenGL function. +extern GLboolean (* const glIsSampler)(GLuint); +/// Pointer to glBindSampler OpenGL function. +extern void (* const glBindSampler)(GLuint, GLuint); +/// Pointer to glSamplerParameteri OpenGL function. +extern void (* const glSamplerParameteri)(GLuint, GLenum, GLint); +/// Pointer to glSamplerParameteriv OpenGL function. +extern void (* const glSamplerParameteriv)(GLuint, GLenum, const GLint *); +/// Pointer to glSamplerParameterf OpenGL function. +extern void (* const glSamplerParameterf)(GLuint, GLenum, GLfloat); +/// Pointer to glSamplerParameterfv OpenGL function. +extern void (* const glSamplerParameterfv)(GLuint, GLenum, const GLfloat *); +/// Pointer to glGetSamplerParameteriv OpenGL function. +extern void (* const glGetSamplerParameteriv)(GLuint, GLenum, GLint *); +/// Pointer to glGetSamplerParameterfv OpenGL function. +extern void (* const glGetSamplerParameterfv)(GLuint, GLenum, GLfloat *); +/// Pointer to glVertexAttribDivisor OpenGL function. +extern void (* const glVertexAttribDivisor)(GLuint, GLuint); +/// Pointer to glBindTransformFeedback OpenGL function. +extern void (* const glBindTransformFeedback)(GLenum, GLuint); +/// Pointer to glDeleteTransformFeedbacks OpenGL function. +extern void (* const glDeleteTransformFeedbacks)(GLsizei, const GLuint *); +/// Pointer to glGenTransformFeedbacks OpenGL function. +extern void (* const glGenTransformFeedbacks)(GLsizei, GLuint *); +/// Pointer to glIsTransformFeedback OpenGL function. +extern GLboolean (* const glIsTransformFeedback)(GLuint); +/// Pointer to glPauseTransformFeedback OpenGL function. +extern void (* const glPauseTransformFeedback)(); +/// Pointer to glResumeTransformFeedback OpenGL function. +extern void (* const glResumeTransformFeedback)(); +/// Pointer to glGetProgramBinary OpenGL function. +extern void (* const glGetProgramBinary)(GLuint, GLsizei, GLsizei *, GLenum *, GLvoid *); +/// Pointer to glProgramBinary OpenGL function. +extern void (* const glProgramBinary)(GLuint, GLenum, const GLvoid *, GLsizei); +/// Pointer to glProgramParameteri OpenGL function. +extern void (* const glProgramParameteri)(GLuint, GLenum, GLint); +/// Pointer to glInvalidateFramebuffer OpenGL function. +extern void (* const glInvalidateFramebuffer)(GLenum, GLsizei, const GLenum *); +/// Pointer to glInvalidateSubFramebuffer OpenGL function. +extern void (* const glInvalidateSubFramebuffer)(GLenum, GLsizei, const GLenum *, GLint, GLint, GLsizei, GLsizei); +/// Pointer to glTexStorage2D OpenGL function. +extern void (* const glTexStorage2D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +/// Pointer to glTexStorage3D OpenGL function. +extern void (* const glTexStorage3D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei); +/// Pointer to glGetInternalformativ OpenGL function. +extern void (* const glGetInternalformativ)(GLenum, GLenum, GLenum, GLsizei, GLint *); + #ifndef NDEBUG /// Check for GL errors and print on the console. void glCheckError(const char *cmd, const char *file, int line); diff --git a/platform/android/src/gl_functions.cpp b/platform/android/src/gl_functions.cpp index f1b2298fa..de72ba38b 100644 --- a/platform/android/src/gl_functions.cpp +++ b/platform/android/src/gl_functions.cpp @@ -5,6 +5,8 @@ namespace mbgl { namespace platform { +/* OpenGL ES 2.0 */ + void (* const glActiveTexture)(GLenum) = ::glActiveTexture; void (* const glAttachShader)(GLuint, GLuint) = ::glAttachShader; void (* const glBindAttribLocation)(GLuint, GLuint, const GLchar *) = ::glBindAttribLocation; @@ -74,6 +76,7 @@ void (* const glGetProgramiv)(GLuint, GLenum, GLint *) = ::glGetProgramiv; void (* const glGetRenderbufferParameteriv)(GLenum, GLenum, GLint *) = ::glGetRenderbufferParameteriv; void (* const glGetShaderInfoLog)(GLuint, GLsizei, GLsizei *, GLchar *) = ::glGetShaderInfoLog; void (* const glGetShaderiv)(GLuint, GLenum, GLint *) = ::glGetShaderiv; +void (* const glGetShaderPrecisionFormat)(GLenum, GLenum, GLint *, GLint *) = ::glGetShaderPrecisionFormat; void (* const glGetShaderSource)(GLuint, GLsizei, GLsizei *, GLchar *) = ::glGetShaderSource; const GLubyte *(* const glGetString)(GLenum) = ::glGetString; void (* const glGetTexParameterfv)(GLenum, GLenum, GLfloat *) = ::glGetTexParameterfv; @@ -97,15 +100,12 @@ void (* const glLinkProgram)(GLuint) = ::glLinkProgram; void (* const glPixelStorei)(GLenum, GLint) = ::glPixelStorei; void (* const glPolygonOffset)(GLfloat, GLfloat) = ::glPolygonOffset; void (* const glReadPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void *) = ::glReadPixels; +void (* const glReleaseShaderCompiler)() = ::glReleaseShaderCompiler; void (* const glRenderbufferStorage)(GLenum, GLenum, GLsizei, GLsizei) = ::glRenderbufferStorage; void (* const glSampleCoverage)(GLfloat, GLboolean) = ::glSampleCoverage; void (* const glScissor)(GLint, GLint, GLsizei, GLsizei) = ::glScissor; - -// Some implementations use `const GLchar* const*` and others `const GLchar**`. -void (* const glShaderSource)(GLuint, GLsizei, const GLchar * const*, const GLint *) = [](GLuint shader, GLsizei count, const GLchar * const * string, const GLint *length) { - ::glShaderSource(shader, count, const_cast(string), length); -}; - +void (* const glShaderBinary)(GLsizei, const GLuint *, GLenum, const GLvoid *, GLsizei) = ::glShaderBinary; +void (* const glShaderSource)(GLuint, GLsizei, const GLchar * const*, const GLint *) = ::glShaderSource; void (* const glStencilFunc)(GLenum, GLint, GLuint) = ::glStencilFunc; void (* const glStencilFuncSeparate)(GLenum, GLenum, GLint, GLuint) = ::glStencilFuncSeparate; void (* const glStencilMask)(GLuint) = ::glStencilMask; @@ -150,5 +150,112 @@ void (* const glVertexAttrib4fv)(GLuint, const GLfloat *) = ::glVertexAttrib4fv; void (* const glVertexAttribPointer)(GLuint, GLint, GLenum, GLboolean, GLsizei, const void *) = ::glVertexAttribPointer; void (* const glViewport)(GLint, GLint, GLsizei, GLsizei) = ::glViewport; +/* OpenGL ES 3.0 */ + +void (* const glReadBuffer)(GLenum) = ::glReadBuffer; +void (* const glDrawRangeElements)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *) = ::glDrawRangeElements; +void (* const glTexImage3D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *) = ::glTexImage3D; +void (* const glTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *) = ::glTexSubImage3D; +void (* const glCopyTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = ::glCopyTexSubImage3D; +void (* const glCompressedTexImage3D)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *) = ::glCompressedTexImage3D; +void (* const glCompressedTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *) = ::glCompressedTexSubImage3D; +void (* const glGenQueries)(GLsizei, GLuint *) = ::glGenQueries; +void (* const glDeleteQueries)(GLsizei, const GLuint *) = ::glDeleteQueries; +GLboolean (* const glIsQuery)(GLuint) = ::glIsQuery; +void (* const glBeginQuery)(GLenum, GLuint) = ::glBeginQuery; +void (* const glEndQuery)(GLenum) = ::glEndQuery; +void (* const glGetQueryiv)(GLenum, GLenum, GLint *) = ::glGetQueryiv; +void (* const glGetQueryObjectuiv)(GLuint, GLenum, GLuint *) = ::glGetQueryObjectuiv; +GLboolean (* const glUnmapBuffer)(GLenum) = ::glUnmapBuffer; +void (* const glGetBufferPointerv)(GLenum, GLenum, GLvoid **) = ::glGetBufferPointerv; +void (* const glDrawBuffers)(GLsizei, const GLenum *) = ::glDrawBuffers; +void (* const glUniformMatrix2x3fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix2x3fv; +void (* const glUniformMatrix3x2fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix3x2fv; +void (* const glUniformMatrix2x4fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix2x4fv; +void (* const glUniformMatrix4x2fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix4x2fv; +void (* const glUniformMatrix3x4fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix3x4fv; +void (* const glUniformMatrix4x3fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix4x3fv; +void (* const glBlitFramebuffer)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum) = ::glBlitFramebuffer; +void (* const glRenderbufferStorageMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = ::glRenderbufferStorageMultisample; +void (* const glFramebufferTextureLayer)(GLenum, GLenum, GLuint, GLint, GLint) = ::glFramebufferTextureLayer; +GLvoid* (* const glMapBufferRange)(GLenum, GLintptr, GLsizeiptr, GLbitfield) = ::glMapBufferRange; +void (* const glFlushMappedBufferRange)(GLenum, GLintptr, GLsizeiptr) = ::glFlushMappedBufferRange; +void (* const glBindVertexArray)(GLuint) = ::glBindVertexArray; +void (* const glDeleteVertexArrays)(GLsizei, const GLuint *) = ::glDeleteVertexArrays; +void (* const glGenVertexArrays)(GLsizei, GLuint *) = ::glGenVertexArrays; +GLboolean (* const glIsVertexArray)(GLuint) = ::glIsVertexArray; +void (* const glGetIntegeri_v)(GLenum, GLuint, GLint *) = ::glGetIntegeri_v; +void (* const glBeginTransformFeedback)(GLenum) = ::glBeginTransformFeedback; +void (* const glEndTransformFeedback)() = ::glEndTransformFeedback; +void (* const glBindBufferRange)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr) = ::glBindBufferRange; +void (* const glBindBufferBase)(GLenum, GLuint, GLuint) = ::glBindBufferBase; +void (* const glTransformFeedbackVaryings)(GLuint, GLsizei, const GLchar * const*, GLenum) = ::glTransformFeedbackVaryings; +void (* const glGetTransformFeedbackVarying)(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *) = ::glGetTransformFeedbackVarying; +void (* const glVertexAttribIPointer)(GLuint, GLint, GLenum, GLsizei, const GLvoid *) = ::glVertexAttribIPointer; +void (* const glGetVertexAttribIiv)(GLuint, GLenum, GLint *) = ::glGetVertexAttribIiv; +void (* const glGetVertexAttribIuiv)(GLuint, GLenum, GLuint *) = ::glGetVertexAttribIuiv; +void (* const glVertexAttribI4i)(GLuint, GLint, GLint, GLint, GLint) = ::glVertexAttribI4i; +void (* const glVertexAttribI4ui)(GLuint, GLuint, GLuint, GLuint, GLuint) = ::glVertexAttribI4ui; +void (* const glVertexAttribI4iv)(GLuint, const GLint *) = ::glVertexAttribI4iv; +void (* const glVertexAttribI4uiv)(GLuint, const GLuint *) = ::glVertexAttribI4uiv; +void (* const glGetUniformuiv)(GLuint, GLint, GLuint *) = ::glGetUniformuiv; +GLint (* const glGetFragDataLocation)(GLuint, const GLchar *) = ::glGetFragDataLocation; +void (* const glUniform1ui)(GLint, GLuint) = ::glUniform1ui; +void (* const glUniform2ui)(GLint, GLuint, GLuint) = ::glUniform2ui; +void (* const glUniform3ui)(GLint, GLuint, GLuint, GLuint) = ::glUniform3ui; +void (* const glUniform4ui)(GLint, GLuint, GLuint, GLuint, GLuint) = ::glUniform4ui; +void (* const glUniform1uiv)(GLint, GLsizei, const GLuint *) = ::glUniform1uiv; +void (* const glUniform2uiv)(GLint, GLsizei, const GLuint *) = ::glUniform2uiv; +void (* const glUniform3uiv)(GLint, GLsizei, const GLuint *) = ::glUniform3uiv; +void (* const glUniform4uiv)(GLint, GLsizei, const GLuint *) = ::glUniform4uiv; +void (* const glClearBufferiv)(GLenum, GLint, const GLint *) = ::glClearBufferiv; +void (* const glClearBufferuiv)(GLenum, GLint, const GLuint *) = ::glClearBufferuiv; +void (* const glClearBufferfv)(GLenum, GLint, const GLfloat *) = ::glClearBufferfv; +void (* const glClearBufferfi)(GLenum, GLint, GLfloat, GLint) = ::glClearBufferfi; +const GLubyte* (* const glGetStringi)(GLenum, GLuint) = ::glGetStringi; +void (* const glCopyBufferSubData)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr) = ::glCopyBufferSubData; +void (* const glGetUniformIndices)(GLuint, GLsizei, const GLchar * const*, GLuint *) = ::glGetUniformIndices; +void (* const glGetActiveUniformsiv)(GLuint, GLsizei, const GLuint *, GLenum, GLint *) = ::glGetActiveUniformsiv; +GLuint (* const glGetUniformBlockIndex)(GLuint, const GLchar *) = ::glGetUniformBlockIndex; +void (* const glGetActiveUniformBlockiv)(GLuint, GLuint, GLenum, GLint *) = ::glGetActiveUniformBlockiv; +void (* const glGetActiveUniformBlockName)(GLuint, GLuint, GLsizei, GLsizei *, GLchar *) = ::glGetActiveUniformBlockName; +void (* const glUniformBlockBinding)(GLuint, GLuint, GLuint) = ::glUniformBlockBinding; +void (* const glDrawArraysInstanced)(GLenum, GLint, GLsizei, GLsizei) = ::glDrawArraysInstanced; +void (* const glDrawElementsInstanced)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei) = ::glDrawElementsInstanced; +GLsync (* const glFenceSync)(GLenum, GLbitfield) = ::glFenceSync; +GLboolean (* const glIsSync)(GLsync) = ::glIsSync; +void (* const glDeleteSync)(GLsync) = ::glDeleteSync; +GLenum (* const glClientWaitSync)(GLsync, GLbitfield, GLuint64) = ::glClientWaitSync; +void (* const glWaitSync)(GLsync, GLbitfield, GLuint64) = ::glWaitSync; +void (* const glGetInteger64v)(GLenum, GLint64 *) = ::glGetInteger64v; +void (* const glGetSynciv)(GLsync, GLenum, GLsizei, GLsizei *, GLint *) = ::glGetSynciv; +void (* const glGetInteger64i_v)(GLenum, GLuint, GLint64 *) = ::glGetInteger64i_v; +void (* const glGetBufferParameteri64v)(GLenum, GLenum, GLint64 *) = ::glGetBufferParameteri64v; +void (* const glGenSamplers)(GLsizei, GLuint *) = ::glGenSamplers; +void (* const glDeleteSamplers)(GLsizei, const GLuint *) = ::glDeleteSamplers; +GLboolean (* const glIsSampler)(GLuint) = ::glIsSampler; +void (* const glBindSampler)(GLuint, GLuint) = ::glBindSampler; +void (* const glSamplerParameteri)(GLuint, GLenum, GLint) = ::glSamplerParameteri; +void (* const glSamplerParameteriv)(GLuint, GLenum, const GLint *) = ::glSamplerParameteriv; +void (* const glSamplerParameterf)(GLuint, GLenum, GLfloat) = ::glSamplerParameterf; +void (* const glSamplerParameterfv)(GLuint, GLenum, const GLfloat *) = ::glSamplerParameterfv; +void (* const glGetSamplerParameteriv)(GLuint, GLenum, GLint *) = ::glGetSamplerParameteriv; +void (* const glGetSamplerParameterfv)(GLuint, GLenum, GLfloat *) = ::glGetSamplerParameterfv; +void (* const glVertexAttribDivisor)(GLuint, GLuint) = ::glVertexAttribDivisor; +void (* const glBindTransformFeedback)(GLenum, GLuint) = ::glBindTransformFeedback; +void (* const glDeleteTransformFeedbacks)(GLsizei, const GLuint *) = ::glDeleteTransformFeedbacks; +void (* const glGenTransformFeedbacks)(GLsizei, GLuint *) = ::glGenTransformFeedbacks; +GLboolean (* const glIsTransformFeedback)(GLuint) = ::glIsTransformFeedback; +void (* const glPauseTransformFeedback)() = ::glPauseTransformFeedback; +void (* const glResumeTransformFeedback)() = ::glResumeTransformFeedback; +void (* const glGetProgramBinary)(GLuint, GLsizei, GLsizei *, GLenum *, GLvoid *) = ::glGetProgramBinary; +void (* const glProgramBinary)(GLuint, GLenum, const GLvoid *, GLsizei) = ::glProgramBinary; +void (* const glProgramParameteri)(GLuint, GLenum, GLint) = ::glProgramParameteri; +void (* const glInvalidateFramebuffer)(GLenum, GLsizei, const GLenum *) = ::glInvalidateFramebuffer; +void (* const glInvalidateSubFramebuffer)(GLenum, GLsizei, const GLenum *, GLint, GLint, GLsizei, GLsizei) = ::glInvalidateSubFramebuffer; +void (* const glTexStorage2D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = ::glTexStorage2D; +void (* const glTexStorage3D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei) = ::glTexStorage3D; +void (* const glGetInternalformativ)(GLenum, GLenum, GLenum, GLsizei, GLint *) = ::glGetInternalformativ; + } // namespace platform } // namespace mbgl \ No newline at end of file diff --git a/platform/darwin/src/gl_functions.cpp b/platform/darwin/src/gl_functions.cpp index f2a3cd2e4..1e9d2a668 100644 --- a/platform/darwin/src/gl_functions.cpp +++ b/platform/darwin/src/gl_functions.cpp @@ -10,8 +10,8 @@ #include #elif TARGET_OS_MAC #include - #include - #include + #include + #include #else #error Unsupported Apple platform #endif @@ -19,6 +19,8 @@ namespace mbgl { namespace platform { +/* OpenGL ES 2.0 */ + void (* const glActiveTexture)(GLenum) = ::glActiveTexture; void (* const glAttachShader)(GLuint, GLuint) = ::glAttachShader; void (* const glBindAttribLocation)(GLuint, GLuint, const GLchar *) = ::glBindAttribLocation; @@ -36,11 +38,7 @@ void (* const glBufferSubData)(GLenum, GLintptr, GLsizeiptr, const void *) = ::g GLenum (* const glCheckFramebufferStatus)(GLenum) = ::glCheckFramebufferStatus; void (* const glClear)(GLbitfield) = ::glClear; void (* const glClearColor)(GLfloat, GLfloat, GLfloat, GLfloat) = ::glClearColor; -#if !TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR && TARGET_OS_MAC -void (* const glClearDepthf)(GLfloat) = [](GLfloat depth) { return ::glClearDepth(depth); }; -#else void (* const glClearDepthf)(GLfloat) = ::glClearDepthf; -#endif void (* const glClearStencil)(GLint) = ::glClearStencil; void (* const glColorMask)(GLboolean, GLboolean, GLboolean, GLboolean) = ::glColorMask; void (* const glCompileShader)(GLuint) = ::glCompileShader; @@ -59,11 +57,7 @@ void (* const glDeleteShader)(GLuint) = ::glDeleteShader; void (* const glDeleteTextures)(GLsizei, const GLuint *) = ::glDeleteTextures; void (* const glDepthFunc)(GLenum) = ::glDepthFunc; void (* const glDepthMask)(GLboolean) = ::glDepthMask; -#if !TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR && TARGET_OS_MAC -void (* const glDepthRangef)(GLfloat, GLfloat) = [](GLfloat nearVal, GLfloat farVal) { return ::glDepthRange(nearVal, farVal); }; -#else void (* const glDepthRangef)(GLfloat, GLfloat) = ::glDepthRangef; -#endif void (* const glDetachShader)(GLuint, GLuint) = ::glDetachShader; void (* const glDisable)(GLenum) = ::glDisable; void (* const glDisableVertexAttribArray)(GLuint) = ::glDisableVertexAttribArray; @@ -96,6 +90,7 @@ void (* const glGetProgramiv)(GLuint, GLenum, GLint *) = ::glGetProgramiv; void (* const glGetRenderbufferParameteriv)(GLenum, GLenum, GLint *) = ::glGetRenderbufferParameteriv; void (* const glGetShaderInfoLog)(GLuint, GLsizei, GLsizei *, GLchar *) = ::glGetShaderInfoLog; void (* const glGetShaderiv)(GLuint, GLenum, GLint *) = ::glGetShaderiv; +void (* const glGetShaderPrecisionFormat)(GLenum, GLenum, GLint *, GLint *) = ::glGetShaderPrecisionFormat; void (* const glGetShaderSource)(GLuint, GLsizei, GLsizei *, GLchar *) = ::glGetShaderSource; const GLubyte *(* const glGetString)(GLenum) = ::glGetString; void (* const glGetTexParameterfv)(GLenum, GLenum, GLfloat *) = ::glGetTexParameterfv; @@ -119,9 +114,11 @@ void (* const glLinkProgram)(GLuint) = ::glLinkProgram; void (* const glPixelStorei)(GLenum, GLint) = ::glPixelStorei; void (* const glPolygonOffset)(GLfloat, GLfloat) = ::glPolygonOffset; void (* const glReadPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void *) = ::glReadPixels; +void (* const glReleaseShaderCompiler)() = ::glReleaseShaderCompiler; void (* const glRenderbufferStorage)(GLenum, GLenum, GLsizei, GLsizei) = ::glRenderbufferStorage; void (* const glSampleCoverage)(GLfloat, GLboolean) = ::glSampleCoverage; void (* const glScissor)(GLint, GLint, GLsizei, GLsizei) = ::glScissor; +void (* const glShaderBinary)(GLsizei, const GLuint *, GLenum, const GLvoid *, GLsizei) = ::glShaderBinary; void (* const glShaderSource)(GLuint, GLsizei, const GLchar * const*, const GLint *) = ::glShaderSource; void (* const glStencilFunc)(GLenum, GLint, GLuint) = ::glStencilFunc; void (* const glStencilFuncSeparate)(GLenum, GLenum, GLint, GLuint) = ::glStencilFuncSeparate; @@ -167,5 +164,115 @@ void (* const glVertexAttrib4fv)(GLuint, const GLfloat *) = ::glVertexAttrib4fv; void (* const glVertexAttribPointer)(GLuint, GLint, GLenum, GLboolean, GLsizei, const void *) = ::glVertexAttribPointer; void (* const glViewport)(GLint, GLint, GLsizei, GLsizei) = ::glViewport; +/* OpenGL ES 3.0 */ + +void (* const glReadBuffer)(GLenum) = ::glReadBuffer; +void (* const glDrawRangeElements)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *) = ::glDrawRangeElements; +void (* const glTexImage3D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *) = ::glTexImage3D; +void (* const glTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *) = ::glTexSubImage3D; +void (* const glCopyTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = ::glCopyTexSubImage3D; +void (* const glCompressedTexImage3D)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *) = ::glCompressedTexImage3D; +void (* const glCompressedTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *) = ::glCompressedTexSubImage3D; +void (* const glGenQueries)(GLsizei, GLuint *) = ::glGenQueries; +void (* const glDeleteQueries)(GLsizei, const GLuint *) = ::glDeleteQueries; +GLboolean (* const glIsQuery)(GLuint) = ::glIsQuery; +void (* const glBeginQuery)(GLenum, GLuint) = ::glBeginQuery; +void (* const glEndQuery)(GLenum) = ::glEndQuery; +void (* const glGetQueryiv)(GLenum, GLenum, GLint *) = ::glGetQueryiv; +void (* const glGetQueryObjectuiv)(GLuint, GLenum, GLuint *) = ::glGetQueryObjectuiv; +GLboolean (* const glUnmapBuffer)(GLenum) = ::glUnmapBuffer; +void (* const glGetBufferPointerv)(GLenum, GLenum, GLvoid **) = ::glGetBufferPointerv; +void (* const glDrawBuffers)(GLsizei, const GLenum *) = ::glDrawBuffers; +void (* const glUniformMatrix2x3fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix2x3fv; +void (* const glUniformMatrix3x2fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix3x2fv; +void (* const glUniformMatrix2x4fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix2x4fv; +void (* const glUniformMatrix4x2fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix4x2fv; +void (* const glUniformMatrix3x4fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix3x4fv; +void (* const glUniformMatrix4x3fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix4x3fv; +void (* const glBlitFramebuffer)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum) = ::glBlitFramebuffer; +void (* const glRenderbufferStorageMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = ::glRenderbufferStorageMultisample; +void (* const glFramebufferTextureLayer)(GLenum, GLenum, GLuint, GLint, GLint) = ::glFramebufferTextureLayer; +GLvoid* (* const glMapBufferRange)(GLenum, GLintptr, GLsizeiptr, GLbitfield) = ::glMapBufferRange; +void (* const glFlushMappedBufferRange)(GLenum, GLintptr, GLsizeiptr) = ::glFlushMappedBufferRange; +void (* const glBindVertexArray)(GLuint) = ::glBindVertexArray; +void (* const glDeleteVertexArrays)(GLsizei, const GLuint *) = ::glDeleteVertexArrays; +void (* const glGenVertexArrays)(GLsizei, GLuint *) = ::glGenVertexArrays; +GLboolean (* const glIsVertexArray)(GLuint) = ::glIsVertexArray; +void (* const glGetIntegeri_v)(GLenum, GLuint, GLint *) = ::glGetIntegeri_v; +void (* const glBeginTransformFeedback)(GLenum) = ::glBeginTransformFeedback; +void (* const glEndTransformFeedback)() = ::glEndTransformFeedback; +void (* const glBindBufferRange)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr) = ::glBindBufferRange; +void (* const glBindBufferBase)(GLenum, GLuint, GLuint) = ::glBindBufferBase; +void (* const glTransformFeedbackVaryings)(GLuint, GLsizei, const GLchar * const*, GLenum) = ::glTransformFeedbackVaryings; +void (* const glGetTransformFeedbackVarying)(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *) = ::glGetTransformFeedbackVarying; +void (* const glVertexAttribIPointer)(GLuint, GLint, GLenum, GLsizei, const GLvoid *) = ::glVertexAttribIPointer; +void (* const glGetVertexAttribIiv)(GLuint, GLenum, GLint *) = ::glGetVertexAttribIiv; +void (* const glGetVertexAttribIuiv)(GLuint, GLenum, GLuint *) = ::glGetVertexAttribIuiv; +void (* const glVertexAttribI4i)(GLuint, GLint, GLint, GLint, GLint) = ::glVertexAttribI4i; +void (* const glVertexAttribI4ui)(GLuint, GLuint, GLuint, GLuint, GLuint) = ::glVertexAttribI4ui; +void (* const glVertexAttribI4iv)(GLuint, const GLint *) = ::glVertexAttribI4iv; +void (* const glVertexAttribI4uiv)(GLuint, const GLuint *) = ::glVertexAttribI4uiv; +void (* const glGetUniformuiv)(GLuint, GLint, GLuint *) = ::glGetUniformuiv; +GLint (* const glGetFragDataLocation)(GLuint, const GLchar *) = ::glGetFragDataLocation; +void (* const glUniform1ui)(GLint, GLuint) = ::glUniform1ui; +void (* const glUniform2ui)(GLint, GLuint, GLuint) = ::glUniform2ui; +void (* const glUniform3ui)(GLint, GLuint, GLuint, GLuint) = ::glUniform3ui; +void (* const glUniform4ui)(GLint, GLuint, GLuint, GLuint, GLuint) = ::glUniform4ui; +void (* const glUniform1uiv)(GLint, GLsizei, const GLuint *) = ::glUniform1uiv; +void (* const glUniform2uiv)(GLint, GLsizei, const GLuint *) = ::glUniform2uiv; +void (* const glUniform3uiv)(GLint, GLsizei, const GLuint *) = ::glUniform3uiv; +void (* const glUniform4uiv)(GLint, GLsizei, const GLuint *) = ::glUniform4uiv; +void (* const glClearBufferiv)(GLenum, GLint, const GLint *) = ::glClearBufferiv; +void (* const glClearBufferuiv)(GLenum, GLint, const GLuint *) = ::glClearBufferuiv; +void (* const glClearBufferfv)(GLenum, GLint, const GLfloat *) = ::glClearBufferfv; +void (* const glClearBufferfi)(GLenum, GLint, GLfloat, GLint) = ::glClearBufferfi; +const GLubyte* (* const glGetStringi)(GLenum, GLuint) = ::glGetStringi; +void (* const glCopyBufferSubData)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr) = ::glCopyBufferSubData; +void (* const glGetUniformIndices)(GLuint, GLsizei, const GLchar * const*, GLuint *) = ::glGetUniformIndices; +void (* const glGetActiveUniformsiv)(GLuint, GLsizei, const GLuint *, GLenum, GLint *) = ::glGetActiveUniformsiv; +GLuint (* const glGetUniformBlockIndex)(GLuint, const GLchar *) = ::glGetUniformBlockIndex; +void (* const glGetActiveUniformBlockiv)(GLuint, GLuint, GLenum, GLint *) = ::glGetActiveUniformBlockiv; +void (* const glGetActiveUniformBlockName)(GLuint, GLuint, GLsizei, GLsizei *, GLchar *) = ::glGetActiveUniformBlockName; +void (* const glUniformBlockBinding)(GLuint, GLuint, GLuint) = ::glUniformBlockBinding; +void (* const glDrawArraysInstanced)(GLenum, GLint, GLsizei, GLsizei) = ::glDrawArraysInstanced; +void (* const glDrawElementsInstanced)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei) = ::glDrawElementsInstanced; +GLsync (* const glFenceSync)(GLenum, GLbitfield) = ::glFenceSync; +GLboolean (* const glIsSync)(GLsync) = ::glIsSync; +void (* const glDeleteSync)(GLsync) = ::glDeleteSync; +GLenum (* const glClientWaitSync)(GLsync, GLbitfield, GLuint64) = ::glClientWaitSync; +void (* const glWaitSync)(GLsync, GLbitfield, GLuint64) = ::glWaitSync; +void (* const glGetInteger64v)(GLenum, GLint64 *) = ::glGetInteger64v; +void (* const glGetSynciv)(GLsync, GLenum, GLsizei, GLsizei *, GLint *) = ::glGetSynciv; +void (* const glGetInteger64i_v)(GLenum, GLuint, GLint64 *) = ::glGetInteger64i_v; +void (* const glGetBufferParameteri64v)(GLenum, GLenum, GLint64 *) = ::glGetBufferParameteri64v; +void (* const glGenSamplers)(GLsizei, GLuint *) = ::glGenSamplers; +void (* const glDeleteSamplers)(GLsizei, const GLuint *) = ::glDeleteSamplers; +GLboolean (* const glIsSampler)(GLuint) = ::glIsSampler; +void (* const glBindSampler)(GLuint, GLuint) = ::glBindSampler; +void (* const glSamplerParameteri)(GLuint, GLenum, GLint) = ::glSamplerParameteri; +void (* const glSamplerParameteriv)(GLuint, GLenum, const GLint *) = ::glSamplerParameteriv; +void (* const glSamplerParameterf)(GLuint, GLenum, GLfloat) = ::glSamplerParameterf; +void (* const glSamplerParameterfv)(GLuint, GLenum, const GLfloat *) = ::glSamplerParameterfv; +void (* const glGetSamplerParameteriv)(GLuint, GLenum, GLint *) = ::glGetSamplerParameteriv; +void (* const glGetSamplerParameterfv)(GLuint, GLenum, GLfloat *) = ::glGetSamplerParameterfv; +void (* const glVertexAttribDivisor)(GLuint, GLuint) = ::glVertexAttribDivisor; +void (* const glBindTransformFeedback)(GLenum, GLuint) = ::glBindTransformFeedback; +void (* const glDeleteTransformFeedbacks)(GLsizei, const GLuint *) = ::glDeleteTransformFeedbacks; +void (* const glGenTransformFeedbacks)(GLsizei, GLuint *) = ::glGenTransformFeedbacks; +GLboolean (* const glIsTransformFeedback)(GLuint) = ::glIsTransformFeedback; +void (* const glPauseTransformFeedback)() = ::glPauseTransformFeedback; +void (* const glResumeTransformFeedback)() = ::glResumeTransformFeedback; +void (* const glGetProgramBinary)(GLuint, GLsizei, GLsizei *, GLenum *, GLvoid *) = ::glGetProgramBinary; +void (* const glProgramBinary)(GLuint, GLenum, const GLvoid *, GLsizei) = ::glProgramBinary; +void (* const glProgramParameteri)(GLuint, GLenum, GLint) = ::glProgramParameteri; +#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR +void (* const glInvalidateFramebuffer)(GLenum, GLsizei, const GLenum *) = ::glInvalidateFramebuffer; +void (* const glInvalidateSubFramebuffer)(GLenum, GLsizei, const GLenum *, GLint, GLint, GLsizei, GLsizei) = ::glInvalidateSubFramebuffer; +#endif +void (* const glTexStorage2D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = ::glTexStorage2D; +void (* const glTexStorage3D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei) = ::glTexStorage3D; +void (* const glGetInternalformativ)(GLenum, GLenum, GLenum, GLsizei, GLint *) = ::glGetInternalformativ; + + } // namespace platform } // namespace mbgl diff --git a/platform/glfw/glfw_view.cpp b/platform/glfw/glfw_view.cpp index 9f0eac864..fbbee2831 100644 --- a/platform/glfw/glfw_view.cpp +++ b/platform/glfw/glfw_view.cpp @@ -40,7 +40,9 @@ #pragma warning(pop) #endif +#if !defined(__APPLE__) #define GLFW_INCLUDE_ES3 +#endif #define GL_GLEXT_PROTOTYPES #include diff --git a/platform/linux/src/gl_functions.cpp b/platform/linux/src/gl_functions.cpp index 433255b1f..f13626f3d 100644 --- a/platform/linux/src/gl_functions.cpp +++ b/platform/linux/src/gl_functions.cpp @@ -8,6 +8,8 @@ namespace mbgl { namespace platform { +/* OpenGL ES 2.0 */ + void (* const glActiveTexture)(GLenum) = ::glActiveTexture; void (* const glAttachShader)(GLuint, GLuint) = ::glAttachShader; void (* const glBindAttribLocation)(GLuint, GLuint, const GLchar *) = ::glBindAttribLocation; @@ -77,6 +79,7 @@ void (* const glGetProgramiv)(GLuint, GLenum, GLint *) = ::glGetProgramiv; void (* const glGetRenderbufferParameteriv)(GLenum, GLenum, GLint *) = ::glGetRenderbufferParameteriv; void (* const glGetShaderInfoLog)(GLuint, GLsizei, GLsizei *, GLchar *) = ::glGetShaderInfoLog; void (* const glGetShaderiv)(GLuint, GLenum, GLint *) = ::glGetShaderiv; +void (* const glGetShaderPrecisionFormat)(GLenum, GLenum, GLint *, GLint *) = ::glGetShaderPrecisionFormat; void (* const glGetShaderSource)(GLuint, GLsizei, GLsizei *, GLchar *) = ::glGetShaderSource; const GLubyte *(* const glGetString)(GLenum) = ::glGetString; void (* const glGetTexParameterfv)(GLenum, GLenum, GLfloat *) = ::glGetTexParameterfv; @@ -100,9 +103,11 @@ void (* const glLinkProgram)(GLuint) = ::glLinkProgram; void (* const glPixelStorei)(GLenum, GLint) = ::glPixelStorei; void (* const glPolygonOffset)(GLfloat, GLfloat) = ::glPolygonOffset; void (* const glReadPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void *) = ::glReadPixels; +void (* const glReleaseShaderCompiler)() = ::glReleaseShaderCompiler; void (* const glRenderbufferStorage)(GLenum, GLenum, GLsizei, GLsizei) = ::glRenderbufferStorage; void (* const glSampleCoverage)(GLfloat, GLboolean) = ::glSampleCoverage; void (* const glScissor)(GLint, GLint, GLsizei, GLsizei) = ::glScissor; +void (* const glShaderBinary)(GLsizei, const GLuint *, GLenum, const GLvoid *, GLsizei) = ::glShaderBinary; void (* const glShaderSource)(GLuint, GLsizei, const GLchar * const*, const GLint *) = ::glShaderSource; void (* const glStencilFunc)(GLenum, GLint, GLuint) = ::glStencilFunc; void (* const glStencilFuncSeparate)(GLenum, GLenum, GLint, GLuint) = ::glStencilFuncSeparate; @@ -148,5 +153,112 @@ void (* const glVertexAttrib4fv)(GLuint, const GLfloat *) = ::glVertexAttrib4fv; void (* const glVertexAttribPointer)(GLuint, GLint, GLenum, GLboolean, GLsizei, const void *) = ::glVertexAttribPointer; void (* const glViewport)(GLint, GLint, GLsizei, GLsizei) = ::glViewport; +/* OpenGL ES 3.0 */ + +void (* const glReadBuffer)(GLenum) = ::glReadBuffer; +void (* const glDrawRangeElements)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *) = ::glDrawRangeElements; +void (* const glTexImage3D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *) = ::glTexImage3D; +void (* const glTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *) = ::glTexSubImage3D; +void (* const glCopyTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = ::glCopyTexSubImage3D; +void (* const glCompressedTexImage3D)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *) = ::glCompressedTexImage3D; +void (* const glCompressedTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *) = ::glCompressedTexSubImage3D; +void (* const glGenQueries)(GLsizei, GLuint *) = ::glGenQueries; +void (* const glDeleteQueries)(GLsizei, const GLuint *) = ::glDeleteQueries; +GLboolean (* const glIsQuery)(GLuint) = ::glIsQuery; +void (* const glBeginQuery)(GLenum, GLuint) = ::glBeginQuery; +void (* const glEndQuery)(GLenum) = ::glEndQuery; +void (* const glGetQueryiv)(GLenum, GLenum, GLint *) = ::glGetQueryiv; +void (* const glGetQueryObjectuiv)(GLuint, GLenum, GLuint *) = ::glGetQueryObjectuiv; +GLboolean (* const glUnmapBuffer)(GLenum) = ::glUnmapBuffer; +void (* const glGetBufferPointerv)(GLenum, GLenum, GLvoid **) = ::glGetBufferPointerv; +void (* const glDrawBuffers)(GLsizei, const GLenum *) = ::glDrawBuffers; +void (* const glUniformMatrix2x3fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix2x3fv; +void (* const glUniformMatrix3x2fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix3x2fv; +void (* const glUniformMatrix2x4fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix2x4fv; +void (* const glUniformMatrix4x2fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix4x2fv; +void (* const glUniformMatrix3x4fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix3x4fv; +void (* const glUniformMatrix4x3fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix4x3fv; +void (* const glBlitFramebuffer)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum) = ::glBlitFramebuffer; +void (* const glRenderbufferStorageMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = ::glRenderbufferStorageMultisample; +void (* const glFramebufferTextureLayer)(GLenum, GLenum, GLuint, GLint, GLint) = ::glFramebufferTextureLayer; +GLvoid* (* const glMapBufferRange)(GLenum, GLintptr, GLsizeiptr, GLbitfield) = ::glMapBufferRange; +void (* const glFlushMappedBufferRange)(GLenum, GLintptr, GLsizeiptr) = ::glFlushMappedBufferRange; +void (* const glBindVertexArray)(GLuint) = ::glBindVertexArray; +void (* const glDeleteVertexArrays)(GLsizei, const GLuint *) = ::glDeleteVertexArrays; +void (* const glGenVertexArrays)(GLsizei, GLuint *) = ::glGenVertexArrays; +GLboolean (* const glIsVertexArray)(GLuint) = ::glIsVertexArray; +void (* const glGetIntegeri_v)(GLenum, GLuint, GLint *) = ::glGetIntegeri_v; +void (* const glBeginTransformFeedback)(GLenum) = ::glBeginTransformFeedback; +void (* const glEndTransformFeedback)() = ::glEndTransformFeedback; +void (* const glBindBufferRange)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr) = ::glBindBufferRange; +void (* const glBindBufferBase)(GLenum, GLuint, GLuint) = ::glBindBufferBase; +void (* const glTransformFeedbackVaryings)(GLuint, GLsizei, const GLchar * const*, GLenum) = ::glTransformFeedbackVaryings; +void (* const glGetTransformFeedbackVarying)(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *) = ::glGetTransformFeedbackVarying; +void (* const glVertexAttribIPointer)(GLuint, GLint, GLenum, GLsizei, const GLvoid *) = ::glVertexAttribIPointer; +void (* const glGetVertexAttribIiv)(GLuint, GLenum, GLint *) = ::glGetVertexAttribIiv; +void (* const glGetVertexAttribIuiv)(GLuint, GLenum, GLuint *) = ::glGetVertexAttribIuiv; +void (* const glVertexAttribI4i)(GLuint, GLint, GLint, GLint, GLint) = ::glVertexAttribI4i; +void (* const glVertexAttribI4ui)(GLuint, GLuint, GLuint, GLuint, GLuint) = ::glVertexAttribI4ui; +void (* const glVertexAttribI4iv)(GLuint, const GLint *) = ::glVertexAttribI4iv; +void (* const glVertexAttribI4uiv)(GLuint, const GLuint *) = ::glVertexAttribI4uiv; +void (* const glGetUniformuiv)(GLuint, GLint, GLuint *) = ::glGetUniformuiv; +GLint (* const glGetFragDataLocation)(GLuint, const GLchar *) = ::glGetFragDataLocation; +void (* const glUniform1ui)(GLint, GLuint) = ::glUniform1ui; +void (* const glUniform2ui)(GLint, GLuint, GLuint) = ::glUniform2ui; +void (* const glUniform3ui)(GLint, GLuint, GLuint, GLuint) = ::glUniform3ui; +void (* const glUniform4ui)(GLint, GLuint, GLuint, GLuint, GLuint) = ::glUniform4ui; +void (* const glUniform1uiv)(GLint, GLsizei, const GLuint *) = ::glUniform1uiv; +void (* const glUniform2uiv)(GLint, GLsizei, const GLuint *) = ::glUniform2uiv; +void (* const glUniform3uiv)(GLint, GLsizei, const GLuint *) = ::glUniform3uiv; +void (* const glUniform4uiv)(GLint, GLsizei, const GLuint *) = ::glUniform4uiv; +void (* const glClearBufferiv)(GLenum, GLint, const GLint *) = ::glClearBufferiv; +void (* const glClearBufferuiv)(GLenum, GLint, const GLuint *) = ::glClearBufferuiv; +void (* const glClearBufferfv)(GLenum, GLint, const GLfloat *) = ::glClearBufferfv; +void (* const glClearBufferfi)(GLenum, GLint, GLfloat, GLint) = ::glClearBufferfi; +const GLubyte* (* const glGetStringi)(GLenum, GLuint) = ::glGetStringi; +void (* const glCopyBufferSubData)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr) = ::glCopyBufferSubData; +void (* const glGetUniformIndices)(GLuint, GLsizei, const GLchar * const*, GLuint *) = ::glGetUniformIndices; +void (* const glGetActiveUniformsiv)(GLuint, GLsizei, const GLuint *, GLenum, GLint *) = ::glGetActiveUniformsiv; +GLuint (* const glGetUniformBlockIndex)(GLuint, const GLchar *) = ::glGetUniformBlockIndex; +void (* const glGetActiveUniformBlockiv)(GLuint, GLuint, GLenum, GLint *) = ::glGetActiveUniformBlockiv; +void (* const glGetActiveUniformBlockName)(GLuint, GLuint, GLsizei, GLsizei *, GLchar *) = ::glGetActiveUniformBlockName; +void (* const glUniformBlockBinding)(GLuint, GLuint, GLuint) = ::glUniformBlockBinding; +void (* const glDrawArraysInstanced)(GLenum, GLint, GLsizei, GLsizei) = ::glDrawArraysInstanced; +void (* const glDrawElementsInstanced)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei) = ::glDrawElementsInstanced; +GLsync (* const glFenceSync)(GLenum, GLbitfield) = ::glFenceSync; +GLboolean (* const glIsSync)(GLsync) = ::glIsSync; +void (* const glDeleteSync)(GLsync) = ::glDeleteSync; +GLenum (* const glClientWaitSync)(GLsync, GLbitfield, GLuint64) = ::glClientWaitSync; +void (* const glWaitSync)(GLsync, GLbitfield, GLuint64) = ::glWaitSync; +void (* const glGetInteger64v)(GLenum, GLint64 *) = ::glGetInteger64v; +void (* const glGetSynciv)(GLsync, GLenum, GLsizei, GLsizei *, GLint *) = ::glGetSynciv; +void (* const glGetInteger64i_v)(GLenum, GLuint, GLint64 *) = ::glGetInteger64i_v; +void (* const glGetBufferParameteri64v)(GLenum, GLenum, GLint64 *) = ::glGetBufferParameteri64v; +void (* const glGenSamplers)(GLsizei, GLuint *) = ::glGenSamplers; +void (* const glDeleteSamplers)(GLsizei, const GLuint *) = ::glDeleteSamplers; +GLboolean (* const glIsSampler)(GLuint) = ::glIsSampler; +void (* const glBindSampler)(GLuint, GLuint) = ::glBindSampler; +void (* const glSamplerParameteri)(GLuint, GLenum, GLint) = ::glSamplerParameteri; +void (* const glSamplerParameteriv)(GLuint, GLenum, const GLint *) = ::glSamplerParameteriv; +void (* const glSamplerParameterf)(GLuint, GLenum, GLfloat) = ::glSamplerParameterf; +void (* const glSamplerParameterfv)(GLuint, GLenum, const GLfloat *) = ::glSamplerParameterfv; +void (* const glGetSamplerParameteriv)(GLuint, GLenum, GLint *) = ::glGetSamplerParameteriv; +void (* const glGetSamplerParameterfv)(GLuint, GLenum, GLfloat *) = ::glGetSamplerParameterfv; +void (* const glVertexAttribDivisor)(GLuint, GLuint) = ::glVertexAttribDivisor; +void (* const glBindTransformFeedback)(GLenum, GLuint) = ::glBindTransformFeedback; +void (* const glDeleteTransformFeedbacks)(GLsizei, const GLuint *) = ::glDeleteTransformFeedbacks; +void (* const glGenTransformFeedbacks)(GLsizei, GLuint *) = ::glGenTransformFeedbacks; +GLboolean (* const glIsTransformFeedback)(GLuint) = ::glIsTransformFeedback; +void (* const glPauseTransformFeedback)() = ::glPauseTransformFeedback; +void (* const glResumeTransformFeedback)() = ::glResumeTransformFeedback; +void (* const glGetProgramBinary)(GLuint, GLsizei, GLsizei *, GLenum *, GLvoid *) = ::glGetProgramBinary; +void (* const glProgramBinary)(GLuint, GLenum, const GLvoid *, GLsizei) = ::glProgramBinary; +void (* const glProgramParameteri)(GLuint, GLenum, GLint) = ::glProgramParameteri; +void (* const glInvalidateFramebuffer)(GLenum, GLsizei, const GLenum *) = ::glInvalidateFramebuffer; +void (* const glInvalidateSubFramebuffer)(GLenum, GLsizei, const GLenum *, GLint, GLint, GLsizei, GLsizei) = ::glInvalidateSubFramebuffer; +void (* const glTexStorage2D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = ::glTexStorage2D; +void (* const glTexStorage3D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei) = ::glTexStorage3D; +void (* const glGetInternalformativ)(GLenum, GLenum, GLenum, GLsizei, GLint *) = ::glGetInternalformativ; + } // namespace platform } // namespace mbgl diff --git a/platform/qt/src/mbgl/gl_functions.cpp b/platform/qt/src/mbgl/gl_functions.cpp index d14aae45b..200964690 100644 --- a/platform/qt/src/mbgl/gl_functions.cpp +++ b/platform/qt/src/mbgl/gl_functions.cpp @@ -2,10 +2,13 @@ #include #include +#include namespace mbgl { namespace platform { +/* OpenGL ES 2.0 */ + void (* const glActiveTexture)(GLenum) = [](auto... args) { return QOpenGLContext::currentContext()->functions()->glActiveTexture(args...); }; @@ -282,6 +285,10 @@ void (* const glGetShaderiv)(GLuint, GLenum, GLint *) = [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetShaderiv(args...); }; +void (* const glGetShaderPrecisionFormat)(GLenum, GLenum, GLint *, GLint *) = [](auto... args) { + return QOpenGLContext::currentContext()->functions()->glGetShaderPrecisionFormat(args...); +}; + void (* const glGetShaderSource)(GLuint, GLsizei, GLsizei *, GLchar *) = [](auto... args) { return QOpenGLContext::currentContext()->functions()->glGetShaderSource(args...); }; @@ -374,6 +381,10 @@ void (* const glReadPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void return QOpenGLContext::currentContext()->functions()->glReadPixels(args...); }; +void (* const glReleaseShaderCompiler)() = [](auto... args) { + return QOpenGLContext::currentContext()->functions()->glReleaseShaderCompiler(args...); +}; + void (* const glRenderbufferStorage)(GLenum, GLenum, GLsizei, GLsizei) = [](auto... args) { return QOpenGLContext::currentContext()->functions()->glRenderbufferStorage(args...); }; @@ -386,6 +397,10 @@ void (* const glScissor)(GLint, GLint, GLsizei, GLsizei) = [](auto... args) { return QOpenGLContext::currentContext()->functions()->glScissor(args...); }; +void (* const glShaderBinary)(GLsizei, const GLuint *, GLenum, const GLvoid *, GLsizei) = [](auto... args) { + return QOpenGLContext::currentContext()->functions()->glShaderBinary(args...); +}; + void (* const glShaderSource)(GLuint, GLsizei, const GLchar * const*, const GLint *) = [](GLuint shader, GLsizei count, const GLchar * const * string, const GLint *length) { return QOpenGLContext::currentContext()->functions()->glShaderSource(shader, count, const_cast(string), length); }; @@ -562,5 +577,320 @@ void (* const glViewport)(GLint, GLint, GLsizei, GLsizei) = [](auto... args) { return QOpenGLContext::currentContext()->functions()->glViewport(args...); }; +/* OpenGL ES 3.0 */ + +void (* const glReadBuffer)(GLenum) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glReadBuffer(args...); +}; +void (* const glDrawRangeElements)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glDrawRangeElements(args...); +}; +void (* const glTexImage3D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glTexImage3D(args...); +}; +void (* const glTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glTexSubImage3D(args...); +}; +void (* const glCopyTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glCopyTexSubImage3D(args...); +}; +void (* const glCompressedTexImage3D)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glCompressedTexImage3D(args...); +}; +void (* const glCompressedTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glCompressedTexSubImage3D(args...); +}; +void (* const glGenQueries)(GLsizei, GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGenQueries(args...); +}; +void (* const glDeleteQueries)(GLsizei, const GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glDeleteQueries(args...); +}; +GLboolean (* const glIsQuery)(GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glIsQuery(args...); +}; +void (* const glBeginQuery)(GLenum, GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glBeginQuery(args...); +}; +void (* const glEndQuery)(GLenum) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glEndQuery(args...); +}; +void (* const glGetQueryiv)(GLenum, GLenum, GLint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetQueryiv(args...); +}; +void (* const glGetQueryObjectuiv)(GLuint, GLenum, GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetQueryObjectuiv(args...); +}; +GLboolean (* const glUnmapBuffer)(GLenum) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUnmapBuffer(args...); +}; +void (* const glGetBufferPointerv)(GLenum, GLenum, GLvoid**) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetBufferPointerv(args...); +}; +void (* const glDrawBuffers)(GLsizei, const GLenum*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glDrawBuffers(args...); +}; +void (* const glUniformMatrix2x3fv)(GLint, GLsizei, GLboolean, const GLfloat*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniformMatrix2x3fv(args...); +}; +void (* const glUniformMatrix3x2fv)(GLint, GLsizei, GLboolean, const GLfloat*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniformMatrix3x2fv(args...); +}; +void (* const glUniformMatrix2x4fv)(GLint, GLsizei, GLboolean, const GLfloat*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniformMatrix2x4fv(args...); +}; +void (* const glUniformMatrix4x2fv)(GLint, GLsizei, GLboolean, const GLfloat*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniformMatrix4x2fv(args...); +}; +void (* const glUniformMatrix3x4fv)(GLint, GLsizei, GLboolean, const GLfloat*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniformMatrix3x4fv(args...); +}; +void (* const glUniformMatrix4x3fv)(GLint, GLsizei, GLboolean, const GLfloat*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniformMatrix4x3fv(args...); +}; +void (* const glBlitFramebuffer)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glBlitFramebuffer(args...); +}; +void (* const glRenderbufferStorageMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glRenderbufferStorageMultisample(args...); +}; +void (* const glFramebufferTextureLayer)(GLenum, GLenum, GLuint, GLint, GLint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glFramebufferTextureLayer(args...); +}; +GLvoid* (* const glMapBufferRange)(GLenum, GLintptr, GLsizeiptr, GLbitfield) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glMapBufferRange(args...); +}; +void (* const glFlushMappedBufferRange)(GLenum, GLintptr, GLsizeiptr) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glFlushMappedBufferRange(args...); +}; +void (* const glBindVertexArray)(GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glBindVertexArray(args...); +}; +void (* const glDeleteVertexArrays)(GLsizei, const GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glDeleteVertexArrays(args...); +}; +void (* const glGenVertexArrays)(GLsizei, GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGenVertexArrays(args...); +}; +GLboolean (* const glIsVertexArray)(GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glIsVertexArray(args...); +}; +void (* const glGetIntegeri_v)(GLenum, GLuint, GLint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetIntegeri_v(args...); +}; +void (* const glBeginTransformFeedback)(GLenum) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glBeginTransformFeedback(args...); +}; +void (* const glEndTransformFeedback)() = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glEndTransformFeedback(args...); +}; +void (* const glBindBufferRange)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glBindBufferRange(args...); +}; +void (* const glBindBufferBase)(GLenum, GLuint, GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glBindBufferBase(args...); +}; +void (* const glTransformFeedbackVaryings)(GLuint, GLsizei, const GLchar* const*, GLenum) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glTransformFeedbackVaryings(args...); +}; +void (* const glGetTransformFeedbackVarying)(GLuint, GLuint, GLsizei, GLsizei*, GLsizei*, GLenum*, GLchar*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetTransformFeedbackVarying(args...); +}; +void (* const glVertexAttribIPointer)(GLuint, GLint, GLenum, GLsizei, const GLvoid*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glVertexAttribIPointer(args...); +}; +void (* const glGetVertexAttribIiv)(GLuint, GLenum, GLint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetVertexAttribIiv(args...); +}; +void (* const glGetVertexAttribIuiv)(GLuint, GLenum, GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetVertexAttribIuiv(args...); +}; +void (* const glVertexAttribI4i)(GLuint, GLint, GLint, GLint, GLint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glVertexAttribI4i(args...); +}; +void (* const glVertexAttribI4ui)(GLuint, GLuint, GLuint, GLuint, GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glVertexAttribI4ui(args...); +}; +void (* const glVertexAttribI4iv)(GLuint, const GLint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glVertexAttribI4iv(args...); +}; +void (* const glVertexAttribI4uiv)(GLuint, const GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glVertexAttribI4uiv(args...); +}; +void (* const glGetUniformuiv)(GLuint, GLint, GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetUniformuiv(args...); +}; +GLint (* const glGetFragDataLocation)(GLuint, const GLchar*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetFragDataLocation(args...); +}; +void (* const glUniform1ui)(GLint, GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniform1ui(args...); +}; +void (* const glUniform2ui)(GLint, GLuint, GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniform2ui(args...); +}; +void (* const glUniform3ui)(GLint, GLuint, GLuint, GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniform3ui(args...); +}; +void (* const glUniform4ui)(GLint, GLuint, GLuint, GLuint, GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniform4ui(args...); +}; +void (* const glUniform1uiv)(GLint, GLsizei, const GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniform1uiv(args...); +}; +void (* const glUniform2uiv)(GLint, GLsizei, const GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniform2uiv(args...); +}; +void (* const glUniform3uiv)(GLint, GLsizei, const GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniform3uiv(args...); +}; +void (* const glUniform4uiv)(GLint, GLsizei, const GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniform4uiv(args...); +}; +void (* const glClearBufferiv)(GLenum, GLint, const GLint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glClearBufferiv(args...); +}; +void (* const glClearBufferuiv)(GLenum, GLint, const GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glClearBufferuiv(args...); +}; +void (* const glClearBufferfv)(GLenum, GLint, const GLfloat*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glClearBufferfv(args...); +}; +void (* const glClearBufferfi)(GLenum, GLint, GLfloat, GLint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glClearBufferfi(args...); +}; +const GLubyte* (* const glGetStringi)(GLenum, GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetStringi(args...); +}; +void (* const glCopyBufferSubData)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glCopyBufferSubData(args...); +}; +void (* const glGetUniformIndices)(GLuint, GLsizei, const GLchar* const*, GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetUniformIndices(args...); +}; +void (* const glGetActiveUniformsiv)(GLuint, GLsizei, const GLuint*, GLenum, GLint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetActiveUniformsiv(args...); +}; +GLuint (* const glGetUniformBlockIndex)(GLuint, const GLchar*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetUniformBlockIndex(args...); +}; +void (* const glGetActiveUniformBlockiv)(GLuint, GLuint, GLenum, GLint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetActiveUniformBlockiv(args...); +}; +void (* const glGetActiveUniformBlockName)(GLuint, GLuint, GLsizei, GLsizei*, GLchar*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetActiveUniformBlockName(args...); +}; +void (* const glUniformBlockBinding)(GLuint, GLuint, GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glUniformBlockBinding(args...); +}; +void (* const glDrawArraysInstanced)(GLenum, GLint, GLsizei, GLsizei) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glDrawArraysInstanced(args...); +}; +void (* const glDrawElementsInstanced)(GLenum, GLsizei, GLenum, const GLvoid*, GLsizei) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glDrawElementsInstanced(args...); +}; +GLsync (* const glFenceSync)(GLenum, GLbitfield) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glFenceSync(args...); +}; +GLboolean (* const glIsSync)(GLsync) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glIsSync(args...); +}; +void (* const glDeleteSync)(GLsync) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glDeleteSync(args...); +}; +GLenum (* const glClientWaitSync)(GLsync, GLbitfield, GLuint64) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glClientWaitSync(args...); +}; +void (* const glWaitSync)(GLsync, GLbitfield, GLuint64) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glWaitSync(args...); +}; +void (* const glGetInteger64v)(GLenum, GLint64*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetInteger64v(args...); +}; +void (* const glGetSynciv)(GLsync, GLenum, GLsizei, GLsizei*, GLint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetSynciv(args...); +}; +void (* const glGetInteger64i_v)(GLenum, GLuint, GLint64*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetInteger64i_v(args...); +}; +void (* const glGetBufferParameteri64v)(GLenum, GLenum, GLint64*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetBufferParameteri64v(args...); +}; +void (* const glGenSamplers)(GLsizei, GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGenSamplers(args...); +}; +void (* const glDeleteSamplers)(GLsizei, const GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glDeleteSamplers(args...); +}; +GLboolean (* const glIsSampler)(GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glIsSampler(args...); +}; +void (* const glBindSampler)(GLuint, GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glBindSampler(args...); +}; +void (* const glSamplerParameteri)(GLuint, GLenum, GLint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glSamplerParameteri(args...); +}; +void (* const glSamplerParameteriv)(GLuint, GLenum, const GLint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glSamplerParameteriv(args...); +}; +void (* const glSamplerParameterf)(GLuint, GLenum, GLfloat) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glSamplerParameterf(args...); +}; +void (* const glSamplerParameterfv)(GLuint, GLenum, const GLfloat*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glSamplerParameterfv(args...); +}; +void (* const glGetSamplerParameteriv)(GLuint, GLenum, GLint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetSamplerParameteriv(args...); +}; +void (* const glGetSamplerParameterfv)(GLuint, GLenum, GLfloat*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetSamplerParameterfv(args...); +}; +void (* const glVertexAttribDivisor)(GLuint, GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glVertexAttribDivisor(args...); +}; +void (* const glBindTransformFeedback)(GLenum, GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glBindTransformFeedback(args...); +}; +void (* const glDeleteTransformFeedbacks)(GLsizei, const GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glDeleteTransformFeedbacks(args...); +}; +void (* const glGenTransformFeedbacks)(GLsizei, GLuint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGenTransformFeedbacks(args...); +}; +GLboolean (* const glIsTransformFeedback)(GLuint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glIsTransformFeedback(args...); +}; +void (* const glPauseTransformFeedback)() = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glPauseTransformFeedback(args...); +}; +void (* const glResumeTransformFeedback)() = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glResumeTransformFeedback(args...); +}; +void (* const glGetProgramBinary)(GLuint, GLsizei, GLsizei*, GLenum*, GLvoid*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetProgramBinary(args...); +}; +void (* const glProgramBinary)(GLuint, GLenum, const GLvoid*, GLsizei) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glProgramBinary(args...); +}; +void (* const glProgramParameteri)(GLuint, GLenum, GLint) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glProgramParameteri(args...); +}; +void (* const glInvalidateFramebuffer)(GLenum, GLsizei, const GLenum*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glInvalidateFramebuffer(args...); +}; +void (* const glInvalidateSubFramebuffer)(GLenum, GLsizei, const GLenum*, GLint, GLint, GLsizei, GLsizei) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glInvalidateSubFramebuffer(args...); +}; +void (* const glTexStorage2D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glTexStorage2D(args...); +}; +void (* const glTexStorage3D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glTexStorage3D(args...); +}; +void (* const glGetInternalformativ)(GLenum, GLenum, GLenum, GLsizei, GLint*) = [](auto... args) { + return QOpenGLContext::currentContext()->extraFunctions()->glGetInternalformativ(args...); +}; + } // namespace platform } // namespace mbgl \ No newline at end of file diff --git a/platform/windows/include/gl_functions_wgl.h b/platform/windows/include/gl_functions_wgl.h index b7436aee8..f2b01d717 100644 --- a/platform/windows/include/gl_functions_wgl.h +++ b/platform/windows/include/gl_functions_wgl.h @@ -19,6 +19,8 @@ extern "C" { #endif +/* OpenGL ES 2.0 */ + PFNGLACTIVETEXTUREPROC wgl_glActiveTexture = NULL; PFNGLATTACHSHADERPROC wgl_glAttachShader = NULL; PFNGLBINDATTRIBLOCATIONPROC wgl_glBindAttribLocation = NULL; @@ -88,6 +90,7 @@ PFNGLGETPROGRAMIVPROC wgl_glGetProgramiv = NULL; PFNGLGETRENDERBUFFERPARAMETERIVPROC wgl_glGetRenderbufferParameteriv = NULL; PFNGLGETSHADERINFOLOGPROC wgl_glGetShaderInfoLog = NULL; PFNGLGETSHADERIVPROC wgl_glGetShaderiv = NULL; +PFNGLGETSHADERPRECISIONFORMATPROC wgl_glGetShaderPrecisionFormat = NULL; PFNGLGETSHADERSOURCEPROC wgl_glGetShaderSource = NULL; PFNGLGETSTRINGPROC wgl_glGetString = NULL; PFNGLGETTEXPARAMETERFVPROC wgl_glGetTexParameterfv = NULL; @@ -111,9 +114,11 @@ PFNGLLINKPROGRAMPROC wgl_glLinkProgram = NULL; PFNGLPIXELSTOREIPROC wgl_glPixelStorei = NULL; PFNGLPOLYGONOFFSETPROC wgl_glPolygonOffset = NULL; PFNGLREADPIXELSPROC wgl_glReadPixels = NULL; +PFNGLRELEASESHADERCOMPILERPROC wgl_glReleaseShaderCompiler = NULL; PFNGLRENDERBUFFERSTORAGEPROC wgl_glRenderbufferStorage = NULL; PFNGLSAMPLECOVERAGEPROC wgl_glSampleCoverage = NULL; PFNGLSCISSORPROC wgl_glScissor = NULL; +PFNGLSHADERBINARYPROC wgl_glShaderBinary = NULL; PFNGLSHADERSOURCEPROC wgl_glShaderSource = NULL; PFNGLSTENCILFUNCPROC wgl_glStencilFunc = NULL; PFNGLSTENCILFUNCSEPARATEPROC wgl_glStencilFuncSeparate = NULL; @@ -159,6 +164,115 @@ PFNGLVERTEXATTRIB4FVPROC wgl_glVertexAttrib4fv = NULL; PFNGLVERTEXATTRIBPOINTERPROC wgl_glVertexAttribPointer = NULL; PFNGLVIEWPORTPROC wgl_glViewport = NULL; +/* OpenGL ES 3.0 */ + +PFNGLREADBUFFERPROC wgl_glReadBuffer = NULL; +PFNGLDRAWRANGEELEMENTSPROC wgl_glDrawRangeElements = NULL; +PFNGLTEXIMAGE3DPROC wgl_glTexImage3D = NULL; +PFNGLTEXSUBIMAGE3DPROC wgl_glTexSubImage3D = NULL; +PFNGLCOPYTEXSUBIMAGE3DPROC wgl_glCopyTexSubImage3D = NULL; +PFNGLCOMPRESSEDTEXIMAGE3DPROC wgl_glCompressedTexImage3D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC wgl_glCompressedTexSubImage3D = NULL; +PFNGLGENQUERIESPROC wgl_glGenQueries = NULL; +PFNGLDELETEQUERIESPROC wgl_glDeleteQueries = NULL; +PFNGLISQUERYPROC wgl_glIsQuery = NULL; +PFNGLBEGINQUERYPROC wgl_glBeginQuery = NULL; +PFNGLENDQUERYPROC wgl_glEndQuery = NULL; +PFNGLGETQUERYIVPROC wgl_glGetQueryiv = NULL; +PFNGLGETQUERYOBJECTUIVPROC wgl_glGetQueryObjectuiv = NULL; +PFNGLUNMAPBUFFERPROC wgl_glUnmapBuffer = NULL; +PFNGLGETBUFFERPOINTERVPROC wgl_glGetBufferPointerv = NULL; +PFNGLDRAWBUFFERSPROC wgl_glDrawBuffers = NULL; +PFNGLUNIFORMMATRIX2X3FVPROC wgl_glUniformMatrix2x3fv = NULL; +PFNGLUNIFORMMATRIX3X2FVPROC wgl_glUniformMatrix3x2fv = NULL; +PFNGLUNIFORMMATRIX2X4FVPROC wgl_glUniformMatrix2x4fv = NULL; +PFNGLUNIFORMMATRIX4X2FVPROC wgl_glUniformMatrix4x2fv = NULL; +PFNGLUNIFORMMATRIX3X4FVPROC wgl_glUniformMatrix3x4fv = NULL; +PFNGLUNIFORMMATRIX4X3FVPROC wgl_glUniformMatrix4x3fv = NULL; +PFNGLBLITFRAMEBUFFERPROC wgl_glBlitFramebuffer = NULL; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC wgl_glRenderbufferStorageMultisample = NULL; +PFNGLFRAMEBUFFERTEXTURELAYERPROC wgl_glFramebufferTextureLayer = NULL; +PFNGLMAPBUFFERRANGEPROC wgl_glMapBufferRange = NULL; +PFNGLFLUSHMAPPEDBUFFERRANGEPROC wgl_glFlushMappedBufferRange = NULL; +PFNGLBINDVERTEXARRAYPROC wgl_glBindVertexArray = NULL; +PFNGLDELETEVERTEXARRAYSPROC wgl_glDeleteVertexArrays = NULL; +PFNGLGENVERTEXARRAYSPROC wgl_glGenVertexArrays = NULL; +PFNGLISVERTEXARRAYPROC wgl_glIsVertexArray = NULL; +PFNGLGETINTEGERI_VPROC wgl_glGetIntegeri_v = NULL; +PFNGLBEGINTRANSFORMFEEDBACKPROC wgl_glBeginTransformFeedback = NULL; +PFNGLENDTRANSFORMFEEDBACKPROC wgl_glEndTransformFeedback = NULL; +PFNGLBINDBUFFERRANGEPROC wgl_glBindBufferRange = NULL; +PFNGLBINDBUFFERBASEPROC wgl_glBindBufferBase = NULL; +PFNGLTRANSFORMFEEDBACKVARYINGSPROC wgl_glTransformFeedbackVaryings = NULL; +PFNGLGETTRANSFORMFEEDBACKVARYINGPROC wgl_glGetTransformFeedbackVarying = NULL; +PFNGLVERTEXATTRIBIPOINTERPROC wgl_glVertexAttribIPointer = NULL; +PFNGLGETVERTEXATTRIBIIVPROC wgl_glGetVertexAttribIiv = NULL; +PFNGLGETVERTEXATTRIBIUIVPROC wgl_glGetVertexAttribIuiv = NULL; +PFNGLVERTEXATTRIBI4IPROC wgl_glVertexAttribI4i = NULL; +PFNGLVERTEXATTRIBI4UIPROC wgl_glVertexAttribI4ui = NULL; +PFNGLVERTEXATTRIBI4IVPROC wgl_glVertexAttribI4iv = NULL; +PFNGLVERTEXATTRIBI4UIVPROC wgl_glVertexAttribI4uiv = NULL; +PFNGLGETUNIFORMUIVPROC wgl_glGetUniformuiv = NULL; +PFNGLGETFRAGDATALOCATIONPROC wgl_glGetFragDataLocation = NULL; +PFNGLUNIFORM1UIPROC wgl_glUniform1ui = NULL; +PFNGLUNIFORM2UIPROC wgl_glUniform2ui = NULL; +PFNGLUNIFORM3UIPROC wgl_glUniform3ui = NULL; +PFNGLUNIFORM4UIPROC wgl_glUniform4ui = NULL; +PFNGLUNIFORM1UIVPROC wgl_glUniform1uiv = NULL; +PFNGLUNIFORM2UIVPROC wgl_glUniform2uiv = NULL; +PFNGLUNIFORM3UIVPROC wgl_glUniform3uiv = NULL; +PFNGLUNIFORM4UIVPROC wgl_glUniform4uiv = NULL; +PFNGLCLEARBUFFERIVPROC wgl_glClearBufferiv = NULL; +PFNGLCLEARBUFFERUIVPROC wgl_glClearBufferuiv = NULL; +PFNGLCLEARBUFFERFVPROC wgl_glClearBufferfv = NULL; +PFNGLCLEARBUFFERFIPROC wgl_glClearBufferfi = NULL; +PFNGLGETSTRINGIPROC wgl_glGetStringi = NULL; +PFNGLCOPYBUFFERSUBDATAPROC wgl_glCopyBufferSubData = NULL; +PFNGLGETUNIFORMINDICESPROC wgl_glGetUniformIndices = NULL; +PFNGLGETACTIVEUNIFORMSIVPROC wgl_glGetActiveUniformsiv = NULL; +PFNGLGETUNIFORMBLOCKINDEXPROC wgl_glGetUniformBlockIndex = NULL; +PFNGLGETACTIVEUNIFORMBLOCKIVPROC wgl_glGetActiveUniformBlockiv = NULL; +PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC wgl_glGetActiveUniformBlockName = NULL; +PFNGLUNIFORMBLOCKBINDINGPROC wgl_glUniformBlockBinding = NULL; +PFNGLDRAWARRAYSINSTANCEDPROC wgl_glDrawArraysInstanced = NULL; +PFNGLDRAWELEMENTSINSTANCEDPROC wgl_glDrawElementsInstanced = NULL; +PFNGLFENCESYNCPROC wgl_glFenceSync = NULL; +PFNGLISSYNCPROC wgl_glIsSync = NULL; +PFNGLDELETESYNCPROC wgl_glDeleteSync = NULL; +PFNGLCLIENTWAITSYNCPROC wgl_glClientWaitSync = NULL; +PFNGLWAITSYNCPROC wgl_glWaitSync = NULL; +PFNGLGETINTEGER64VPROC wgl_glGetInteger64v = NULL; +PFNGLGETSYNCIVPROC wgl_glGetSynciv = NULL; +PFNGLGETINTEGER64I_VPROC wgl_glGetInteger64i_v = NULL; +PFNGLGETBUFFERPARAMETERI64VPROC wgl_glGetBufferParameteri64v = NULL; +PFNGLGENSAMPLERSPROC wgl_glGenSamplers = NULL; +PFNGLDELETESAMPLERSPROC wgl_glDeleteSamplers = NULL; +PFNGLISSAMPLERPROC wgl_glIsSampler = NULL; +PFNGLBINDSAMPLERPROC wgl_glBindSampler = NULL; +PFNGLSAMPLERPARAMETERIPROC wgl_glSamplerParameteri = NULL; +PFNGLSAMPLERPARAMETERIVPROC wgl_glSamplerParameteriv = NULL; +PFNGLSAMPLERPARAMETERFPROC wgl_glSamplerParameterf = NULL; +PFNGLSAMPLERPARAMETERFVPROC wgl_glSamplerParameterfv = NULL; +PFNGLGETSAMPLERPARAMETERIVPROC wgl_glGetSamplerParameteriv = NULL; +PFNGLGETSAMPLERPARAMETERFVPROC wgl_glGetSamplerParameterfv = NULL; +PFNGLVERTEXATTRIBDIVISORPROC wgl_glVertexAttribDivisor = NULL; +PFNGLBINDTRANSFORMFEEDBACKPROC wgl_glBindTransformFeedback = NULL; +PFNGLDELETETRANSFORMFEEDBACKSPROC wgl_glDeleteTransformFeedbacks = NULL; +PFNGLGENTRANSFORMFEEDBACKSPROC wgl_glGenTransformFeedbacks = NULL; +PFNGLISTRANSFORMFEEDBACKPROC wgl_glIsTransformFeedback = NULL; +PFNGLPAUSETRANSFORMFEEDBACKPROC wgl_glPauseTransformFeedback = NULL; +PFNGLRESUMETRANSFORMFEEDBACKPROC wgl_glResumeTransformFeedback = NULL; +PFNGLGETPROGRAMBINARYPROC wgl_glGetProgramBinary = NULL; +PFNGLPROGRAMBINARYPROC wgl_glProgramBinary = NULL; +PFNGLPROGRAMPARAMETERIPROC wgl_glProgramParameteri = NULL; +PFNGLINVALIDATEFRAMEBUFFERPROC wgl_glInvalidateFramebuffer = NULL; +PFNGLINVALIDATESUBFRAMEBUFFERPROC wgl_glInvalidateSubFramebuffer = NULL; +PFNGLTEXSTORAGE2DPROC wgl_glTexStorage2D = NULL; +PFNGLTEXSTORAGE3DPROC wgl_glTexStorage3D = NULL; +PFNGLGETINTERNALFORMATIVPROC wgl_glGetInternalformativ = NULL; + +/* OpenGL Windows Extensions */ + PFNWGLCHOOSEPIXELFORMATARBPROC wgl_wglChoosePixelFormatARB = NULL; PFNWGLCREATECONTEXTATTRIBSARBPROC wgl_wglCreateContextAttribsARB = NULL; PFNWGLGETEXTENSIONSSTRINGARBPROC wgl_wglGetExtensionsStringARB = NULL; @@ -188,6 +302,8 @@ void loadWGL() { opengl32 = LoadLibraryA("opengl32.dll"); wgl_wglGetProcAddress = (PFNWGLLOADERWGLGETPROCADDRESSPROC)GetProcAddress(opengl32, "wglGetProcAddress"); + /* OpenGL ES 2.0 */ + wgl_glActiveTexture = (PFNGLACTIVETEXTUREPROC)wgl_GetProcAddress("glActiveTexture"); wgl_glAttachShader = (PFNGLATTACHSHADERPROC)wgl_GetProcAddress("glAttachShader"); wgl_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)wgl_GetProcAddress("glBindAttribLocation"); @@ -257,6 +373,7 @@ void loadWGL() { wgl_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)wgl_GetProcAddress("glGetRenderbufferParameteriv"); wgl_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)wgl_GetProcAddress("glGetShaderInfoLog"); wgl_glGetShaderiv = (PFNGLGETSHADERIVPROC)wgl_GetProcAddress("glGetShaderiv"); + wgl_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)wgl_GetProcAddress("glGetShaderPrecisionFormat"); wgl_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)wgl_GetProcAddress("glGetShaderSource"); wgl_glGetString = (PFNGLGETSTRINGPROC)wgl_GetProcAddress("glGetString"); wgl_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)wgl_GetProcAddress("glGetTexParameterfv"); @@ -280,9 +397,11 @@ void loadWGL() { wgl_glPixelStorei = (PFNGLPIXELSTOREIPROC)wgl_GetProcAddress("glPixelStorei"); wgl_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)wgl_GetProcAddress("glPolygonOffset"); wgl_glReadPixels = (PFNGLREADPIXELSPROC)wgl_GetProcAddress("glReadPixels"); + wgl_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)wgl_GetProcAddress("glReleaseShaderCompiler"); wgl_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)wgl_GetProcAddress("glRenderbufferStorage"); wgl_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)wgl_GetProcAddress("glSampleCoverage"); wgl_glScissor = (PFNGLSCISSORPROC)wgl_GetProcAddress("glScissor"); + wgl_glShaderBinary = (PFNGLSHADERBINARYPROC)wgl_GetProcAddress("glShaderBinary"); wgl_glShaderSource = (PFNGLSHADERSOURCEPROC)wgl_GetProcAddress("glShaderSource"); wgl_glStencilFunc = (PFNGLSTENCILFUNCPROC)wgl_GetProcAddress("glStencilFunc"); wgl_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)wgl_GetProcAddress("glStencilFuncSeparate"); @@ -328,6 +447,115 @@ void loadWGL() { wgl_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)wgl_GetProcAddress("glVertexAttribPointer"); wgl_glViewport = (PFNGLVIEWPORTPROC)wgl_GetProcAddress("glViewport"); + /* OpenGL ES 3.0 */ + + wgl_glReadBuffer = (PFNGLREADBUFFERPROC)wgl_GetProcAddress("glReadBuffer"); + wgl_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)wgl_GetProcAddress("glDrawRangeElements"); + wgl_glTexImage3D = (PFNGLTEXIMAGE3DPROC)wgl_GetProcAddress("glTexImage3D"); + wgl_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)wgl_GetProcAddress("glTexSubImage3D"); + wgl_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)wgl_GetProcAddress("glCopyTexSubImage3D"); + wgl_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)wgl_GetProcAddress("glCompressedTexImage3D"); + wgl_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)wgl_GetProcAddress("glCompressedTexSubImage3D"); + wgl_glGenQueries = (PFNGLGENQUERIESPROC)wgl_GetProcAddress("glGenQueries"); + wgl_glDeleteQueries = (PFNGLDELETEQUERIESPROC)wgl_GetProcAddress("glDeleteQueries"); + wgl_glIsQuery = (PFNGLISQUERYPROC)wgl_GetProcAddress("glIsQuery"); + wgl_glBeginQuery = (PFNGLBEGINQUERYPROC)wgl_GetProcAddress("glBeginQuery"); + wgl_glEndQuery = (PFNGLENDQUERYPROC)wgl_GetProcAddress("glEndQuery"); + wgl_glGetQueryiv = (PFNGLGETQUERYIVPROC)wgl_GetProcAddress("glGetQueryiv"); + wgl_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)wgl_GetProcAddress("glGetQueryObjectuiv"); + wgl_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)wgl_GetProcAddress("glUnmapBuffer"); + wgl_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)wgl_GetProcAddress("glGetBufferPointerv"); + wgl_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)wgl_GetProcAddress("glDrawBuffers"); + wgl_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)wgl_GetProcAddress("glUniformMatrix2x3fv"); + wgl_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)wgl_GetProcAddress("glUniformMatrix3x2fv"); + wgl_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)wgl_GetProcAddress("glUniformMatrix2x4fv"); + wgl_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)wgl_GetProcAddress("glUniformMatrix4x2fv"); + wgl_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)wgl_GetProcAddress("glUniformMatrix3x4fv"); + wgl_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)wgl_GetProcAddress("glUniformMatrix4x3fv"); + wgl_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)wgl_GetProcAddress("glBlitFramebuffer"); + wgl_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)wgl_GetProcAddress("glRenderbufferStorageMultisample"); + wgl_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)wgl_GetProcAddress("glFramebufferTextureLayer"); + wgl_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)wgl_GetProcAddress("glMapBufferRange"); + wgl_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)wgl_GetProcAddress("glFlushMappedBufferRange"); + wgl_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)wgl_GetProcAddress("glBindVertexArray"); + wgl_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)wgl_GetProcAddress("glDeleteVertexArrays"); + wgl_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)wgl_GetProcAddress("glGenVertexArrays"); + wgl_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)wgl_GetProcAddress("glIsVertexArray"); + wgl_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)wgl_GetProcAddress("glGetIntegeri_v"); + wgl_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)wgl_GetProcAddress("glBeginTransformFeedback"); + wgl_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)wgl_GetProcAddress("glEndTransformFeedback"); + wgl_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)wgl_GetProcAddress("glBindBufferRange"); + wgl_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)wgl_GetProcAddress("glBindBufferBase"); + wgl_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)wgl_GetProcAddress("glTransformFeedbackVaryings"); + wgl_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)wgl_GetProcAddress("glGetTransformFeedbackVarying"); + wgl_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)wgl_GetProcAddress("glVertexAttribIPointer"); + wgl_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)wgl_GetProcAddress("glGetVertexAttribIiv"); + wgl_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)wgl_GetProcAddress("glGetVertexAttribIuiv"); + wgl_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)wgl_GetProcAddress("glVertexAttribI4i"); + wgl_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)wgl_GetProcAddress("glVertexAttribI4ui"); + wgl_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)wgl_GetProcAddress("glVertexAttribI4iv"); + wgl_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)wgl_GetProcAddress("glVertexAttribI4uiv"); + wgl_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)wgl_GetProcAddress("glGetUniformuiv"); + wgl_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)wgl_GetProcAddress("glGetFragDataLocation"); + wgl_glUniform1ui = (PFNGLUNIFORM1UIPROC)wgl_GetProcAddress("glUniform1ui"); + wgl_glUniform2ui = (PFNGLUNIFORM2UIPROC)wgl_GetProcAddress("glUniform2ui"); + wgl_glUniform3ui = (PFNGLUNIFORM3UIPROC)wgl_GetProcAddress("glUniform3ui"); + wgl_glUniform4ui = (PFNGLUNIFORM4UIPROC)wgl_GetProcAddress("glUniform4ui"); + wgl_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)wgl_GetProcAddress("glUniform1uiv"); + wgl_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)wgl_GetProcAddress("glUniform2uiv"); + wgl_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)wgl_GetProcAddress("glUniform3uiv"); + wgl_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)wgl_GetProcAddress("glUniform4uiv"); + wgl_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)wgl_GetProcAddress("glClearBufferiv"); + wgl_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)wgl_GetProcAddress("glClearBufferuiv"); + wgl_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)wgl_GetProcAddress("glClearBufferfv"); + wgl_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)wgl_GetProcAddress("glClearBufferfi"); + wgl_glGetStringi = (PFNGLGETSTRINGIPROC)wgl_GetProcAddress("glGetStringi"); + wgl_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)wgl_GetProcAddress("glCopyBufferSubData"); + wgl_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)wgl_GetProcAddress("glGetUniformIndices"); + wgl_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)wgl_GetProcAddress("glGetActiveUniformsiv"); + wgl_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)wgl_GetProcAddress("glGetUniformBlockIndex"); + wgl_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)wgl_GetProcAddress("glGetActiveUniformBlockiv"); + wgl_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)wgl_GetProcAddress("glGetActiveUniformBlockName"); + wgl_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)wgl_GetProcAddress("glUniformBlockBinding"); + wgl_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)wgl_GetProcAddress("glDrawArraysInstanced"); + wgl_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)wgl_GetProcAddress("glDrawElementsInstanced"); + wgl_glFenceSync = (PFNGLFENCESYNCPROC)wgl_GetProcAddress("glFenceSync"); + wgl_glIsSync = (PFNGLISSYNCPROC)wgl_GetProcAddress("glIsSync"); + wgl_glDeleteSync = (PFNGLDELETESYNCPROC)wgl_GetProcAddress("glDeleteSync"); + wgl_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)wgl_GetProcAddress("glClientWaitSync"); + wgl_glWaitSync = (PFNGLWAITSYNCPROC)wgl_GetProcAddress("glWaitSync"); + wgl_glGetInteger64v = (PFNGLGETINTEGER64VPROC)wgl_GetProcAddress("glGetInteger64v"); + wgl_glGetSynciv = (PFNGLGETSYNCIVPROC)wgl_GetProcAddress("glGetSynciv"); + wgl_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)wgl_GetProcAddress("glGetInteger64i_v"); + wgl_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)wgl_GetProcAddress("glGetBufferParameteri64v"); + wgl_glGenSamplers = (PFNGLGENSAMPLERSPROC)wgl_GetProcAddress("glGenSamplers"); + wgl_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)wgl_GetProcAddress("glDeleteSamplers"); + wgl_glIsSampler = (PFNGLISSAMPLERPROC)wgl_GetProcAddress("glIsSampler"); + wgl_glBindSampler = (PFNGLBINDSAMPLERPROC)wgl_GetProcAddress("glBindSampler"); + wgl_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)wgl_GetProcAddress("glSamplerParameteri"); + wgl_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)wgl_GetProcAddress("glSamplerParameteriv"); + wgl_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)wgl_GetProcAddress("glSamplerParameterf"); + wgl_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)wgl_GetProcAddress("glSamplerParameterfv"); + wgl_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)wgl_GetProcAddress("glGetSamplerParameteriv"); + wgl_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)wgl_GetProcAddress("glGetSamplerParameterfv"); + wgl_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)wgl_GetProcAddress("glVertexAttribDivisor"); + wgl_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)wgl_GetProcAddress("glBindTransformFeedback"); + wgl_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)wgl_GetProcAddress("glDeleteTransformFeedbacks"); + wgl_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)wgl_GetProcAddress("glGenTransformFeedbacks"); + wgl_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)wgl_GetProcAddress("glIsTransformFeedback"); + wgl_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)wgl_GetProcAddress("glPauseTransformFeedback"); + wgl_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)wgl_GetProcAddress("glResumeTransformFeedback"); + wgl_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)wgl_GetProcAddress("glGetProgramBinary"); + wgl_glProgramBinary = (PFNGLPROGRAMBINARYPROC)wgl_GetProcAddress("glProgramBinary"); + wgl_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)wgl_GetProcAddress("glProgramParameteri"); + wgl_glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)wgl_GetProcAddress("glInvalidateFramebuffer"); + wgl_glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)wgl_GetProcAddress("glInvalidateSubFramebuffer"); + wgl_glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)wgl_GetProcAddress("glTexStorage2D"); + wgl_glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)wgl_GetProcAddress("glTexStorage3D"); + wgl_glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)wgl_GetProcAddress("glGetInternalformativ"); + + /* OpenGL Windows Extensions */ + wgl_wglChoosePixelFormatARB = (PFNWGLCHOOSEPIXELFORMATARBPROC)wgl_GetProcAddress("wglChoosePixelFormatARB"); wgl_wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)wgl_GetProcAddress("wglCreateContextAttribsARB"); wgl_wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)wgl_GetProcAddress("wglGetExtensionsStringARB"); @@ -341,6 +569,8 @@ void loadWGL() { namespace mbgl { namespace platform { +/* OpenGL ES 2.0 */ + void (* const glActiveTexture)(GLenum) = [](GLenum texture) { if (!opengl32) loadWGL(); ::wgl_glActiveTexture(texture); }; void (* const glAttachShader)(GLuint, GLuint) = [](GLuint program, GLuint shader) { if (!opengl32) loadWGL(); ::wgl_glAttachShader(program, shader); }; void (* const glBindAttribLocation)(GLuint, GLuint, const GLchar*) = [](GLuint program, GLuint index, const GLchar* name) { if (!opengl32) loadWGL(); ::wgl_glBindAttribLocation(program, index, name); }; @@ -410,6 +640,7 @@ void (* const glGetProgramiv)(GLuint, GLenum, GLint*) = [](GLuint program, GLenu void (* const glGetRenderbufferParameteriv)(GLenum, GLenum, GLint*) = [](GLenum target, GLenum pname, GLint* params) { if (!opengl32) loadWGL(); ::wgl_glGetRenderbufferParameteriv(target, pname, params); }; void (* const glGetShaderInfoLog)(GLuint, GLsizei, GLsizei*, GLchar*) = [](GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog) { if (!opengl32) loadWGL(); ::wgl_glGetShaderInfoLog(shader, bufSize, length, infoLog); }; void (* const glGetShaderiv)(GLuint, GLenum, GLint*) = [](GLuint shader, GLenum pname, GLint* params) { if (!opengl32) loadWGL(); ::wgl_glGetShaderiv(shader, pname, params); }; +void (* const glGetShaderPrecisionFormat)(GLenum, GLenum, GLint*, GLint*) = [](GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) { if (!opengl32) loadWGL(); ::wgl_glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision); }; void (* const glGetShaderSource)(GLuint, GLsizei, GLsizei*, GLchar*) = [](GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* source) { if (!opengl32) loadWGL(); ::wgl_glGetShaderSource(shader, bufSize, length, source); }; const GLubyte* (* const glGetString)(GLenum) = [](GLenum name) { if (!opengl32) loadWGL(); return ::wgl_glGetString(name); }; void (* const glGetTexParameterfv)(GLenum, GLenum, GLfloat*) = [](GLenum target, GLenum pname, GLfloat* params) { if (!opengl32) loadWGL(); ::wgl_glGetTexParameterfv(target, pname, params); }; @@ -433,9 +664,11 @@ void (* const glLinkProgram)(GLuint) = [](GLuint program) { if (!opengl32) loadW void (* const glPixelStorei)(GLenum, GLint) = [](GLenum pname, GLint param) { if (!opengl32) loadWGL(); ::wgl_glPixelStorei(pname, param); }; void (* const glPolygonOffset)(GLfloat, GLfloat) = [](GLfloat factor, GLfloat units) { if (!opengl32) loadWGL(); ::wgl_glPolygonOffset(factor, units); }; void (* const glReadPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void*) = [](GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels) { if (!opengl32) loadWGL(); ::wgl_glReadPixels(x, y, width, height, format, type, pixels); }; +void (* const glReleaseShaderCompiler)() = []() { if (!opengl32) loadWGL(); ::wgl_glReleaseShaderCompiler(); }; void (* const glRenderbufferStorage)(GLenum, GLenum, GLsizei, GLsizei) = [](GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { if (!opengl32) loadWGL(); ::wgl_glRenderbufferStorage(target, internalformat, width, height); }; void (* const glSampleCoverage)(GLfloat, GLboolean) = [](GLfloat value, GLboolean invert) { if (!opengl32) loadWGL(); ::wgl_glSampleCoverage(value, invert); }; void (* const glScissor)(GLint, GLint, GLsizei, GLsizei) = [](GLint x, GLint y, GLsizei width, GLsizei height) { if (!opengl32) loadWGL(); ::wgl_glScissor(x, y, width, height); }; +void (* const glShaderBinary)(GLsizei, const GLuint*, GLenum, const GLvoid*, GLsizei) = [](GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length) { if (!opengl32) loadWGL(); ::wgl_glShaderBinary(n, shaders, binaryformat, binary, length); }; void (* const glShaderSource)(GLuint, GLsizei, const GLchar* const*, const GLint*) = [](GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length) { if (!opengl32) loadWGL(); ::wgl_glShaderSource(shader, count, string, length); }; void (* const glStencilFunc)(GLenum, GLint, GLuint) = [](GLenum func, GLint ref, GLuint mask) { if (!opengl32) loadWGL(); ::wgl_glStencilFunc(func, ref, mask); }; void (* const glStencilFuncSeparate)(GLenum, GLenum, GLint, GLuint) = [](GLenum face, GLenum func, GLint ref, GLuint mask) { if (!opengl32) loadWGL(); ::wgl_glStencilFuncSeparate(face, func, ref, mask); }; @@ -481,6 +714,115 @@ void (* const glVertexAttrib4fv)(GLuint, const GLfloat*) = [](GLuint index, cons void (* const glVertexAttribPointer)(GLuint, GLint, GLenum, GLboolean, GLsizei, const void*) = [](GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer) { if (!opengl32) loadWGL(); ::wgl_glVertexAttribPointer(index, size, type, normalized, stride, pointer); }; void (* const glViewport)(GLint, GLint, GLsizei, GLsizei) = [](GLint x, GLint y, GLsizei width, GLsizei height) { if (!opengl32) loadWGL(); ::wgl_glViewport(x, y, width, height); }; +/* OpenGL ES 3.0 */ + +void (* const glReadBuffer)(GLenum) = [](GLenum mode) { if (!opengl32) loadWGL(); ::wgl_glReadBuffer(mode); }; +void (* const glDrawRangeElements)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid*) = [](GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices) { if (!opengl32) loadWGL(); ::wgl_glDrawRangeElements(mode, start, end, count, type, indices); }; +void (* const glTexImage3D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid*) = [](GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels) { if (!opengl32) loadWGL(); ::wgl_glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); }; +void (* const glTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid*) = [](GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels) { if (!opengl32) loadWGL(); ::wgl_glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); }; +void (* const glCopyTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = [](GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { if (!opengl32) loadWGL(); ::wgl_glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); }; +void (* const glCompressedTexImage3D)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*) = [](GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data) { if (!opengl32) loadWGL(); ::wgl_glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); }; +void (* const glCompressedTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*) = [](GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data) { if (!opengl32) loadWGL(); ::wgl_glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); }; +void (* const glGenQueries)(GLsizei, GLuint*) = [](GLsizei n, GLuint* ids) { if (!opengl32) loadWGL(); ::wgl_glGenQueries(n, ids); }; +void (* const glDeleteQueries)(GLsizei, const GLuint*) = [](GLsizei n, const GLuint* ids) { if (!opengl32) loadWGL(); ::wgl_glDeleteQueries(n, ids); }; +GLboolean (* const glIsQuery)(GLuint) = [](GLuint id) { if (!opengl32) loadWGL(); return ::wgl_glIsQuery(id); }; +void (* const glBeginQuery)(GLenum, GLuint) = [](GLenum target, GLuint id) { if (!opengl32) loadWGL(); ::wgl_glBeginQuery(target, id); }; +void (* const glEndQuery)(GLenum) = [](GLenum target) { if (!opengl32) loadWGL(); ::wgl_glEndQuery(target); }; +void (* const glGetQueryiv)(GLenum, GLenum, GLint*) = [](GLenum target, GLenum pname, GLint* params) { if (!opengl32) loadWGL(); ::wgl_glGetQueryiv(target, pname, params); }; +void (* const glGetQueryObjectuiv)(GLuint, GLenum, GLuint*) = [](GLuint id, GLenum pname, GLuint* params) { if (!opengl32) loadWGL(); ::wgl_glGetQueryObjectuiv(id, pname, params); }; +GLboolean (* const glUnmapBuffer)(GLenum) = [](GLenum target) { if (!opengl32) loadWGL(); return ::wgl_glUnmapBuffer(target); }; +void (* const glGetBufferPointerv)(GLenum, GLenum, GLvoid**) = [](GLenum target, GLenum pname, GLvoid** params) { if (!opengl32) loadWGL(); ::wgl_glGetBufferPointerv(target, pname, params); }; +void (* const glDrawBuffers)(GLsizei, const GLenum*) = [](GLsizei n, const GLenum* bufs) { if (!opengl32) loadWGL(); ::wgl_glDrawBuffers(n, bufs); }; +void (* const glUniformMatrix2x3fv)(GLint, GLsizei, GLboolean, const GLfloat*) = [](GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { if (!opengl32) loadWGL(); ::wgl_glUniformMatrix2x3fv(location, count, transpose, value); }; +void (* const glUniformMatrix3x2fv)(GLint, GLsizei, GLboolean, const GLfloat*) = [](GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { if (!opengl32) loadWGL(); ::wgl_glUniformMatrix3x2fv(location, count, transpose, value); }; +void (* const glUniformMatrix2x4fv)(GLint, GLsizei, GLboolean, const GLfloat*) = [](GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { if (!opengl32) loadWGL(); ::wgl_glUniformMatrix2x4fv(location, count, transpose, value); }; +void (* const glUniformMatrix4x2fv)(GLint, GLsizei, GLboolean, const GLfloat*) = [](GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { if (!opengl32) loadWGL(); ::wgl_glUniformMatrix4x2fv(location, count, transpose, value); }; +void (* const glUniformMatrix3x4fv)(GLint, GLsizei, GLboolean, const GLfloat*) = [](GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { if (!opengl32) loadWGL(); ::wgl_glUniformMatrix3x4fv(location, count, transpose, value); }; +void (* const glUniformMatrix4x3fv)(GLint, GLsizei, GLboolean, const GLfloat*) = [](GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { if (!opengl32) loadWGL(); ::wgl_glUniformMatrix4x3fv(location, count, transpose, value); }; +void (* const glBlitFramebuffer)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum) = [](GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { if (!opengl32) loadWGL(); ::wgl_glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); }; +void (* const glRenderbufferStorageMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = [](GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { if (!opengl32) loadWGL(); ::wgl_glRenderbufferStorageMultisample(target, samples, internalformat, width, height); }; +void (* const glFramebufferTextureLayer)(GLenum, GLenum, GLuint, GLint, GLint) = [](GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) { if (!opengl32) loadWGL(); ::wgl_glFramebufferTextureLayer(target, attachment, texture, level, layer); }; +GLvoid* (* const glMapBufferRange)(GLenum, GLintptr, GLsizeiptr, GLbitfield) = [](GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) { if (!opengl32) loadWGL(); return ::wgl_glMapBufferRange(target, offset, length, access); }; +void (* const glFlushMappedBufferRange)(GLenum, GLintptr, GLsizeiptr) = [](GLenum target, GLintptr offset, GLsizeiptr length) { if (!opengl32) loadWGL(); ::wgl_glFlushMappedBufferRange(target, offset, length); }; +void (* const glBindVertexArray)(GLuint) = [](GLuint array) { if (!opengl32) loadWGL(); ::wgl_glBindVertexArray(array); }; +void (* const glDeleteVertexArrays)(GLsizei, const GLuint*) = [](GLsizei n, const GLuint* arrays) { if (!opengl32) loadWGL(); ::wgl_glDeleteVertexArrays(n, arrays); }; +void (* const glGenVertexArrays)(GLsizei, GLuint*) = [](GLsizei n, GLuint* arrays) { if (!opengl32) loadWGL(); ::wgl_glGenVertexArrays(n, arrays); }; +GLboolean (* const glIsVertexArray)(GLuint) = [](GLuint array) { if (!opengl32) loadWGL(); return ::wgl_glIsVertexArray(array); }; +void (* const glGetIntegeri_v)(GLenum, GLuint, GLint*) = [](GLenum target, GLuint index, GLint* data) { if (!opengl32) loadWGL(); ::wgl_glGetIntegeri_v(target, index, data); }; +void (* const glBeginTransformFeedback)(GLenum) = [](GLenum primitiveMode) { if (!opengl32) loadWGL(); ::wgl_glBeginTransformFeedback(primitiveMode); }; +void (* const glEndTransformFeedback)() = []() { if (!opengl32) loadWGL(); ::wgl_glEndTransformFeedback(); }; +void (* const glBindBufferRange)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr) = [](GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) { if (!opengl32) loadWGL(); ::wgl_glBindBufferRange(target, index, buffer, offset, size); }; +void (* const glBindBufferBase)(GLenum, GLuint, GLuint) = [](GLenum target, GLuint index, GLuint buffer) { if (!opengl32) loadWGL(); ::wgl_glBindBufferBase(target, index, buffer); }; +void (* const glTransformFeedbackVaryings)(GLuint, GLsizei, const GLchar* const*, GLenum) = [](GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode) { if (!opengl32) loadWGL(); ::wgl_glTransformFeedbackVaryings(program, count, varyings, bufferMode); }; +void (* const glGetTransformFeedbackVarying)(GLuint, GLuint, GLsizei, GLsizei*, GLsizei*, GLenum*, GLchar*) = [](GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name) { if (!opengl32) loadWGL(); ::wgl_glGetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); }; +void (* const glVertexAttribIPointer)(GLuint, GLint, GLenum, GLsizei, const GLvoid*) = [](GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer) { if (!opengl32) loadWGL(); ::wgl_glVertexAttribIPointer(index, size, type, stride, pointer); }; +void (* const glGetVertexAttribIiv)(GLuint, GLenum, GLint*) = [](GLuint index, GLenum pname, GLint* params) { if (!opengl32) loadWGL(); ::wgl_glGetVertexAttribIiv(index, pname, params); }; +void (* const glGetVertexAttribIuiv)(GLuint, GLenum, GLuint*) = [](GLuint index, GLenum pname, GLuint* params) { if (!opengl32) loadWGL(); ::wgl_glGetVertexAttribIuiv(index, pname, params); }; +void (* const glVertexAttribI4i)(GLuint, GLint, GLint, GLint, GLint) = [](GLuint index, GLint x, GLint y, GLint z, GLint w) { if (!opengl32) loadWGL(); ::wgl_glVertexAttribI4i(index, x, y, z, w); }; +void (* const glVertexAttribI4ui)(GLuint, GLuint, GLuint, GLuint, GLuint) = [](GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { if (!opengl32) loadWGL(); ::wgl_glVertexAttribI4ui(index, x, y, z, w); }; +void (* const glVertexAttribI4iv)(GLuint, const GLint*) = [](GLuint index, const GLint* v) { if (!opengl32) loadWGL(); ::wgl_glVertexAttribI4iv(index, v); }; +void (* const glVertexAttribI4uiv)(GLuint, const GLuint*) = [](GLuint index, const GLuint* v) { if (!opengl32) loadWGL(); ::wgl_glVertexAttribI4uiv(index, v); }; +void (* const glGetUniformuiv)(GLuint, GLint, GLuint*) = [](GLuint program, GLint location, GLuint* params) { if (!opengl32) loadWGL(); ::wgl_glGetUniformuiv(program, location, params); }; +GLint (* const glGetFragDataLocation)(GLuint, const GLchar*) = [](GLuint program, const GLchar* name) { if (!opengl32) loadWGL(); return ::wgl_glGetFragDataLocation(program, name); }; +void (* const glUniform1ui)(GLint, GLuint) = [](GLint location, GLuint v0) { if (!opengl32) loadWGL(); ::wgl_glUniform1ui(location, v0); }; +void (* const glUniform2ui)(GLint, GLuint, GLuint) = [](GLint location, GLuint v0, GLuint v1) { if (!opengl32) loadWGL(); ::wgl_glUniform2ui(location, v0, v1); }; +void (* const glUniform3ui)(GLint, GLuint, GLuint, GLuint) = [](GLint location, GLuint v0, GLuint v1, GLuint v2) { if (!opengl32) loadWGL(); ::wgl_glUniform3ui(location, v0, v1, v2); }; +void (* const glUniform4ui)(GLint, GLuint, GLuint, GLuint, GLuint) = [](GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { if (!opengl32) loadWGL(); ::wgl_glUniform4ui(location, v0, v1, v2, v3); }; +void (* const glUniform1uiv)(GLint, GLsizei, const GLuint*) = [](GLint location, GLsizei count, const GLuint* value) { if (!opengl32) loadWGL(); ::wgl_glUniform1uiv(location, count, value); }; +void (* const glUniform2uiv)(GLint, GLsizei, const GLuint*) = [](GLint location, GLsizei count, const GLuint* value) { if (!opengl32) loadWGL(); ::wgl_glUniform2uiv(location, count, value); }; +void (* const glUniform3uiv)(GLint, GLsizei, const GLuint*) = [](GLint location, GLsizei count, const GLuint* value) { if (!opengl32) loadWGL(); ::wgl_glUniform3uiv(location, count, value); }; +void (* const glUniform4uiv)(GLint, GLsizei, const GLuint*) = [](GLint location, GLsizei count, const GLuint* value) { if (!opengl32) loadWGL(); ::wgl_glUniform4uiv(location, count, value); }; +void (* const glClearBufferiv)(GLenum, GLint, const GLint*) = [](GLenum buffer, GLint drawbuffer, const GLint* value) { if (!opengl32) loadWGL(); ::wgl_glClearBufferiv(buffer, drawbuffer, value); }; +void (* const glClearBufferuiv)(GLenum, GLint, const GLuint*) = [](GLenum buffer, GLint drawbuffer, const GLuint* value) { if (!opengl32) loadWGL(); ::wgl_glClearBufferuiv(buffer, drawbuffer, value); }; +void (* const glClearBufferfv)(GLenum, GLint, const GLfloat*) = [](GLenum buffer, GLint drawbuffer, const GLfloat* value) { if (!opengl32) loadWGL(); ::wgl_glClearBufferfv(buffer, drawbuffer, value); }; +void (* const glClearBufferfi)(GLenum, GLint, GLfloat, GLint) = [](GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) { if (!opengl32) loadWGL(); ::wgl_glClearBufferfi(buffer, drawbuffer, depth, stencil); }; +const GLubyte* (* const glGetStringi)(GLenum, GLuint) = [](GLenum name, GLuint index) { if (!opengl32) loadWGL(); return ::wgl_glGetStringi(name, index); }; +void (* const glCopyBufferSubData)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr) = [](GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) { if (!opengl32) loadWGL(); ::wgl_glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); }; +void (* const glGetUniformIndices)(GLuint, GLsizei, const GLchar* const*, GLuint*) = [](GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices) { if (!opengl32) loadWGL(); ::wgl_glGetUniformIndices(program, uniformCount, uniformNames, uniformIndices); }; +void (* const glGetActiveUniformsiv)(GLuint, GLsizei, const GLuint*, GLenum, GLint*) = [](GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params) { if (!opengl32) loadWGL(); ::wgl_glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); }; +GLuint (* const glGetUniformBlockIndex)(GLuint, const GLchar*) = [](GLuint program, const GLchar* uniformBlockName) { if (!opengl32) loadWGL(); return ::wgl_glGetUniformBlockIndex(program, uniformBlockName); }; +void (* const glGetActiveUniformBlockiv)(GLuint, GLuint, GLenum, GLint*) = [](GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params) { if (!opengl32) loadWGL(); ::wgl_glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); }; +void (* const glGetActiveUniformBlockName)(GLuint, GLuint, GLsizei, GLsizei*, GLchar*) = [](GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName) { if (!opengl32) loadWGL(); ::wgl_glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); }; +void (* const glUniformBlockBinding)(GLuint, GLuint, GLuint) = [](GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) { if (!opengl32) loadWGL(); ::wgl_glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); }; +void (* const glDrawArraysInstanced)(GLenum, GLint, GLsizei, GLsizei) = [](GLenum mode, GLint first, GLsizei count, GLsizei instancecount) { if (!opengl32) loadWGL(); ::wgl_glDrawArraysInstanced(mode, first, count, instancecount); }; +void (* const glDrawElementsInstanced)(GLenum, GLsizei, GLenum, const GLvoid*, GLsizei) = [](GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instancecount) { if (!opengl32) loadWGL(); ::wgl_glDrawElementsInstanced(mode, count, type, indices, instancecount); }; +GLsync (* const glFenceSync)(GLenum, GLbitfield) = [](GLenum condition, GLbitfield flags) { if (!opengl32) loadWGL(); return ::wgl_glFenceSync(condition, flags); }; +GLboolean (* const glIsSync)(GLsync) = [](GLsync sync) { if (!opengl32) loadWGL(); return ::wgl_glIsSync(sync); }; +void (* const glDeleteSync)(GLsync) = [](GLsync sync) { if (!opengl32) loadWGL(); ::wgl_glDeleteSync(sync); }; +GLenum (* const glClientWaitSync)(GLsync, GLbitfield, GLuint64) = [](GLsync sync, GLbitfield flags, GLuint64 timeout) { if (!opengl32) loadWGL(); return ::wgl_glClientWaitSync(sync, flags, timeout); }; +void (* const glWaitSync)(GLsync, GLbitfield, GLuint64) = [](GLsync sync, GLbitfield flags, GLuint64 timeout) { if (!opengl32) loadWGL(); ::wgl_glWaitSync(sync, flags, timeout); }; +void (* const glGetInteger64v)(GLenum, GLint64*) = [](GLenum pname, GLint64* params) { if (!opengl32) loadWGL(); ::wgl_glGetInteger64v(pname, params); }; +void (* const glGetSynciv)(GLsync, GLenum, GLsizei, GLsizei*, GLint*) = [](GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values) { if (!opengl32) loadWGL(); ::wgl_glGetSynciv(sync, pname, bufSize, length, values); }; +void (* const glGetInteger64i_v)(GLenum, GLuint, GLint64*) = [](GLenum target, GLuint index, GLint64* data) { if (!opengl32) loadWGL(); ::wgl_glGetInteger64i_v(target, index, data); }; +void (* const glGetBufferParameteri64v)(GLenum, GLenum, GLint64*) = [](GLenum target, GLenum pname, GLint64* params) { if (!opengl32) loadWGL(); ::wgl_glGetBufferParameteri64v(target, pname, params); }; +void (* const glGenSamplers)(GLsizei, GLuint*) = [](GLsizei count, GLuint* samplers) { if (!opengl32) loadWGL(); ::wgl_glGenSamplers(count, samplers); }; +void (* const glDeleteSamplers)(GLsizei, const GLuint*) = [](GLsizei count, const GLuint* samplers) { if (!opengl32) loadWGL(); ::wgl_glDeleteSamplers(count, samplers); }; +GLboolean (* const glIsSampler)(GLuint) = [](GLuint sampler) { if (!opengl32) loadWGL(); return ::wgl_glIsSampler(sampler); }; +void (* const glBindSampler)(GLuint, GLuint) = [](GLuint unit, GLuint sampler) { if (!opengl32) loadWGL(); ::wgl_glBindSampler(unit, sampler); }; +void (* const glSamplerParameteri)(GLuint, GLenum, GLint) = [](GLuint sampler, GLenum pname, GLint param) { if (!opengl32) loadWGL(); ::wgl_glSamplerParameteri(sampler, pname, param); }; +void (* const glSamplerParameteriv)(GLuint, GLenum, const GLint*) = [](GLuint sampler, GLenum pname, const GLint* param) { if (!opengl32) loadWGL(); ::wgl_glSamplerParameteriv(sampler, pname, param); }; +void (* const glSamplerParameterf)(GLuint, GLenum, GLfloat) = [](GLuint sampler, GLenum pname, GLfloat param) { if (!opengl32) loadWGL(); ::wgl_glSamplerParameterf(sampler, pname, param); }; +void (* const glSamplerParameterfv)(GLuint, GLenum, const GLfloat*) = [](GLuint sampler, GLenum pname, const GLfloat* param) { if (!opengl32) loadWGL(); ::wgl_glSamplerParameterfv(sampler, pname, param); }; +void (* const glGetSamplerParameteriv)(GLuint, GLenum, GLint*) = [](GLuint sampler, GLenum pname, GLint* params) { if (!opengl32) loadWGL(); ::wgl_glGetSamplerParameteriv(sampler, pname, params); }; +void (* const glGetSamplerParameterfv)(GLuint, GLenum, GLfloat*) = [](GLuint sampler, GLenum pname, GLfloat* params) { if (!opengl32) loadWGL(); ::wgl_glGetSamplerParameterfv(sampler, pname, params); }; +void (* const glVertexAttribDivisor)(GLuint, GLuint) = [](GLuint index, GLuint divisor) { if (!opengl32) loadWGL(); ::wgl_glVertexAttribDivisor(index, divisor); }; +void (* const glBindTransformFeedback)(GLenum, GLuint) = [](GLenum target, GLuint id) { if (!opengl32) loadWGL(); ::wgl_glBindTransformFeedback(target, id); }; +void (* const glDeleteTransformFeedbacks)(GLsizei, const GLuint*) = [](GLsizei n, const GLuint* ids) { if (!opengl32) loadWGL(); ::wgl_glDeleteTransformFeedbacks(n, ids); }; +void (* const glGenTransformFeedbacks)(GLsizei, GLuint*) = [](GLsizei n, GLuint* ids) { if (!opengl32) loadWGL(); ::wgl_glGenTransformFeedbacks(n, ids); }; +GLboolean (* const glIsTransformFeedback)(GLuint) = [](GLuint id) { if (!opengl32) loadWGL(); return ::wgl_glIsTransformFeedback(id); }; +void (* const glPauseTransformFeedback)() = []() { if (!opengl32) loadWGL(); ::wgl_glPauseTransformFeedback(); }; +void (* const glResumeTransformFeedback)() = []() { if (!opengl32) loadWGL(); ::wgl_glResumeTransformFeedback(); }; +void (* const glGetProgramBinary)(GLuint, GLsizei, GLsizei*, GLenum*, GLvoid*) = [](GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary) { if (!opengl32) loadWGL(); ::wgl_glGetProgramBinary(program, bufSize, length, binaryFormat, binary); }; +void (* const glProgramBinary)(GLuint, GLenum, const GLvoid*, GLsizei) = [](GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length) { if (!opengl32) loadWGL(); ::wgl_glProgramBinary(program, binaryFormat, binary, length); }; +void (* const glProgramParameteri)(GLuint, GLenum, GLint) = [](GLuint program, GLenum pname, GLint value) { if (!opengl32) loadWGL(); ::wgl_glProgramParameteri(program, pname, value); }; +void (* const glInvalidateFramebuffer)(GLenum, GLsizei, const GLenum*) = [](GLenum target, GLsizei numAttachments, const GLenum* attachments) { if (!opengl32) loadWGL(); ::wgl_glInvalidateFramebuffer(target, numAttachments, attachments); }; +void (* const glInvalidateSubFramebuffer)(GLenum, GLsizei, const GLenum*, GLint, GLint, GLsizei, GLsizei) = [](GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height) { if (!opengl32) loadWGL(); ::wgl_glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); }; +void (* const glTexStorage2D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = [](GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) { if (!opengl32) loadWGL(); ::wgl_glTexStorage2D(target, levels, internalformat, width, height); }; +void (* const glTexStorage3D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei) = [](GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) { if (!opengl32) loadWGL(); ::wgl_glTexStorage3D(target, levels, internalformat, width, height, depth); }; +void (* const glGetInternalformativ)(GLenum, GLenum, GLenum, GLsizei, GLint*) = [](GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params) { if (!opengl32) loadWGL(); ::wgl_glGetInternalformativ(target, internalformat, pname, bufSize, params); }; + +/* OpenGL Windows Extensions */ + BOOL(* const wglChoosePixelFormatARB)(HDC, const int*, const FLOAT*, UINT, int*, UINT*) = [](HDC hdc, const int* piAttribIList, const FLOAT* pfAttribFList, UINT nMaxFormats, int* piFormats, UINT* nNumFormats) { if (!opengl32) loadWGL(); return ::wgl_wglChoosePixelFormatARB(hdc, piAttribIList, pfAttribFList, nMaxFormats, piFormats, nNumFormats); }; HGLRC(* const wglCreateContextAttribsARB)(HDC, HGLRC, const int*) = [](HDC hDC, HGLRC hShareContext, const int* attribList) { if (!opengl32) loadWGL(); return ::wgl_wglCreateContextAttribsARB(hDC, hShareContext, attribList); }; const char* (* const wglGetExtensionsStringARB)(HDC) = [](HDC hdc) { if (!opengl32) loadWGL(); return ::wgl_wglGetExtensionsStringARB(hdc); }; diff --git a/platform/windows/src/gl_functions.cpp b/platform/windows/src/gl_functions.cpp index 3d2cf1dd3..6453416e2 100644 --- a/platform/windows/src/gl_functions.cpp +++ b/platform/windows/src/gl_functions.cpp @@ -12,6 +12,8 @@ namespace mbgl { namespace platform { +/* OpenGL ES 2.0 */ + void (* const glActiveTexture)(GLenum) = ::glActiveTexture; void (* const glAttachShader)(GLuint, GLuint) = ::glAttachShader; void (* const glBindAttribLocation)(GLuint, GLuint, const GLchar *) = ::glBindAttribLocation; @@ -81,6 +83,7 @@ void (* const glGetProgramiv)(GLuint, GLenum, GLint *) = ::glGetProgramiv; void (* const glGetRenderbufferParameteriv)(GLenum, GLenum, GLint *) = ::glGetRenderbufferParameteriv; void (* const glGetShaderInfoLog)(GLuint, GLsizei, GLsizei *, GLchar *) = ::glGetShaderInfoLog; void (* const glGetShaderiv)(GLuint, GLenum, GLint *) = ::glGetShaderiv; +void (* const glGetShaderPrecisionFormat)(GLenum, GLenum, GLint *, GLint *) = ::glGetShaderPrecisionFormat; void (* const glGetShaderSource)(GLuint, GLsizei, GLsizei *, GLchar *) = ::glGetShaderSource; const GLubyte *(* const glGetString)(GLenum) = ::glGetString; void (* const glGetTexParameterfv)(GLenum, GLenum, GLfloat *) = ::glGetTexParameterfv; @@ -104,9 +107,11 @@ void (* const glLinkProgram)(GLuint) = ::glLinkProgram; void (* const glPixelStorei)(GLenum, GLint) = ::glPixelStorei; void (* const glPolygonOffset)(GLfloat, GLfloat) = ::glPolygonOffset; void (* const glReadPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void *) = ::glReadPixels; +void (* const glReleaseShaderCompiler)() = ::glReleaseShaderCompiler; void (* const glRenderbufferStorage)(GLenum, GLenum, GLsizei, GLsizei) = ::glRenderbufferStorage; void (* const glSampleCoverage)(GLfloat, GLboolean) = ::glSampleCoverage; void (* const glScissor)(GLint, GLint, GLsizei, GLsizei) = ::glScissor; +void (* const glShaderBinary)(GLsizei, const GLuint *, GLenum, const GLvoid *, GLsizei) = ::glShaderBinary; void (* const glShaderSource)(GLuint, GLsizei, const GLchar * const*, const GLint *) = ::glShaderSource; void (* const glStencilFunc)(GLenum, GLint, GLuint) = ::glStencilFunc; void (* const glStencilFuncSeparate)(GLenum, GLenum, GLint, GLuint) = ::glStencilFuncSeparate; @@ -152,5 +157,112 @@ void (* const glVertexAttrib4fv)(GLuint, const GLfloat *) = ::glVertexAttrib4fv; void (* const glVertexAttribPointer)(GLuint, GLint, GLenum, GLboolean, GLsizei, const void *) = ::glVertexAttribPointer; void (* const glViewport)(GLint, GLint, GLsizei, GLsizei) = ::glViewport; +/* OpenGL ES 3.0 */ + +void (* const glReadBuffer)(GLenum) = ::glReadBuffer; +void (* const glDrawRangeElements)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *) = ::glDrawRangeElements; +void (* const glTexImage3D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *) = ::glTexImage3D; +void (* const glTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *) = ::glTexSubImage3D; +void (* const glCopyTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = ::glCopyTexSubImage3D; +void (* const glCompressedTexImage3D)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *) = ::glCompressedTexImage3D; +void (* const glCompressedTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *) = ::glCompressedTexSubImage3D; +void (* const glGenQueries)(GLsizei, GLuint *) = ::glGenQueries; +void (* const glDeleteQueries)(GLsizei, const GLuint *) = ::glDeleteQueries; +GLboolean (* const glIsQuery)(GLuint) = ::glIsQuery; +void (* const glBeginQuery)(GLenum, GLuint) = ::glBeginQuery; +void (* const glEndQuery)(GLenum) = ::glEndQuery; +void (* const glGetQueryiv)(GLenum, GLenum, GLint *) = ::glGetQueryiv; +void (* const glGetQueryObjectuiv)(GLuint, GLenum, GLuint *) = ::glGetQueryObjectuiv; +GLboolean (* const glUnmapBuffer)(GLenum) = ::glUnmapBuffer; +void (* const glGetBufferPointerv)(GLenum, GLenum, GLvoid **) = ::glGetBufferPointerv; +void (* const glDrawBuffers)(GLsizei, const GLenum *) = ::glDrawBuffers; +void (* const glUniformMatrix2x3fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix2x3fv; +void (* const glUniformMatrix3x2fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix3x2fv; +void (* const glUniformMatrix2x4fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix2x4fv; +void (* const glUniformMatrix4x2fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix4x2fv; +void (* const glUniformMatrix3x4fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix3x4fv; +void (* const glUniformMatrix4x3fv)(GLint, GLsizei, GLboolean, const GLfloat *) = ::glUniformMatrix4x3fv; +void (* const glBlitFramebuffer)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum) = ::glBlitFramebuffer; +void (* const glRenderbufferStorageMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = ::glRenderbufferStorageMultisample; +void (* const glFramebufferTextureLayer)(GLenum, GLenum, GLuint, GLint, GLint) = ::glFramebufferTextureLayer; +GLvoid* (* const glMapBufferRange)(GLenum, GLintptr, GLsizeiptr, GLbitfield) = ::glMapBufferRange; +void (* const glFlushMappedBufferRange)(GLenum, GLintptr, GLsizeiptr) = ::glFlushMappedBufferRange; +void (* const glBindVertexArray)(GLuint) = ::glBindVertexArray; +void (* const glDeleteVertexArrays)(GLsizei, const GLuint *) = ::glDeleteVertexArrays; +void (* const glGenVertexArrays)(GLsizei, GLuint *) = ::glGenVertexArrays; +GLboolean (* const glIsVertexArray)(GLuint) = ::glIsVertexArray; +void (* const glGetIntegeri_v)(GLenum, GLuint, GLint *) = ::glGetIntegeri_v; +void (* const glBeginTransformFeedback)(GLenum) = ::glBeginTransformFeedback; +void (* const glEndTransformFeedback)() = ::glEndTransformFeedback; +void (* const glBindBufferRange)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr) = ::glBindBufferRange; +void (* const glBindBufferBase)(GLenum, GLuint, GLuint) = ::glBindBufferBase; +void (* const glTransformFeedbackVaryings)(GLuint, GLsizei, const GLchar * const*, GLenum) = ::glTransformFeedbackVaryings; +void (* const glGetTransformFeedbackVarying)(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *) = ::glGetTransformFeedbackVarying; +void (* const glVertexAttribIPointer)(GLuint, GLint, GLenum, GLsizei, const GLvoid *) = ::glVertexAttribIPointer; +void (* const glGetVertexAttribIiv)(GLuint, GLenum, GLint *) = ::glGetVertexAttribIiv; +void (* const glGetVertexAttribIuiv)(GLuint, GLenum, GLuint *) = ::glGetVertexAttribIuiv; +void (* const glVertexAttribI4i)(GLuint, GLint, GLint, GLint, GLint) = ::glVertexAttribI4i; +void (* const glVertexAttribI4ui)(GLuint, GLuint, GLuint, GLuint, GLuint) = ::glVertexAttribI4ui; +void (* const glVertexAttribI4iv)(GLuint, const GLint *) = ::glVertexAttribI4iv; +void (* const glVertexAttribI4uiv)(GLuint, const GLuint *) = ::glVertexAttribI4uiv; +void (* const glGetUniformuiv)(GLuint, GLint, GLuint *) = ::glGetUniformuiv; +GLint (* const glGetFragDataLocation)(GLuint, const GLchar *) = ::glGetFragDataLocation; +void (* const glUniform1ui)(GLint, GLuint) = ::glUniform1ui; +void (* const glUniform2ui)(GLint, GLuint, GLuint) = ::glUniform2ui; +void (* const glUniform3ui)(GLint, GLuint, GLuint, GLuint) = ::glUniform3ui; +void (* const glUniform4ui)(GLint, GLuint, GLuint, GLuint, GLuint) = ::glUniform4ui; +void (* const glUniform1uiv)(GLint, GLsizei, const GLuint *) = ::glUniform1uiv; +void (* const glUniform2uiv)(GLint, GLsizei, const GLuint *) = ::glUniform2uiv; +void (* const glUniform3uiv)(GLint, GLsizei, const GLuint *) = ::glUniform3uiv; +void (* const glUniform4uiv)(GLint, GLsizei, const GLuint *) = ::glUniform4uiv; +void (* const glClearBufferiv)(GLenum, GLint, const GLint *) = ::glClearBufferiv; +void (* const glClearBufferuiv)(GLenum, GLint, const GLuint *) = ::glClearBufferuiv; +void (* const glClearBufferfv)(GLenum, GLint, const GLfloat *) = ::glClearBufferfv; +void (* const glClearBufferfi)(GLenum, GLint, GLfloat, GLint) = ::glClearBufferfi; +const GLubyte* (* const glGetStringi)(GLenum, GLuint) = ::glGetStringi; +void (* const glCopyBufferSubData)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr) = ::glCopyBufferSubData; +void (* const glGetUniformIndices)(GLuint, GLsizei, const GLchar * const*, GLuint *) = ::glGetUniformIndices; +void (* const glGetActiveUniformsiv)(GLuint, GLsizei, const GLuint *, GLenum, GLint *) = ::glGetActiveUniformsiv; +GLuint (* const glGetUniformBlockIndex)(GLuint, const GLchar *) = ::glGetUniformBlockIndex; +void (* const glGetActiveUniformBlockiv)(GLuint, GLuint, GLenum, GLint *) = ::glGetActiveUniformBlockiv; +void (* const glGetActiveUniformBlockName)(GLuint, GLuint, GLsizei, GLsizei *, GLchar *) = ::glGetActiveUniformBlockName; +void (* const glUniformBlockBinding)(GLuint, GLuint, GLuint) = ::glUniformBlockBinding; +void (* const glDrawArraysInstanced)(GLenum, GLint, GLsizei, GLsizei) = ::glDrawArraysInstanced; +void (* const glDrawElementsInstanced)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei) = ::glDrawElementsInstanced; +GLsync (* const glFenceSync)(GLenum, GLbitfield) = ::glFenceSync; +GLboolean (* const glIsSync)(GLsync) = ::glIsSync; +void (* const glDeleteSync)(GLsync) = ::glDeleteSync; +GLenum (* const glClientWaitSync)(GLsync, GLbitfield, GLuint64) = ::glClientWaitSync; +void (* const glWaitSync)(GLsync, GLbitfield, GLuint64) = ::glWaitSync; +void (* const glGetInteger64v)(GLenum, GLint64 *) = ::glGetInteger64v; +void (* const glGetSynciv)(GLsync, GLenum, GLsizei, GLsizei *, GLint *) = ::glGetSynciv; +void (* const glGetInteger64i_v)(GLenum, GLuint, GLint64 *) = ::glGetInteger64i_v; +void (* const glGetBufferParameteri64v)(GLenum, GLenum, GLint64 *) = ::glGetBufferParameteri64v; +void (* const glGenSamplers)(GLsizei, GLuint *) = ::glGenSamplers; +void (* const glDeleteSamplers)(GLsizei, const GLuint *) = ::glDeleteSamplers; +GLboolean (* const glIsSampler)(GLuint) = ::glIsSampler; +void (* const glBindSampler)(GLuint, GLuint) = ::glBindSampler; +void (* const glSamplerParameteri)(GLuint, GLenum, GLint) = ::glSamplerParameteri; +void (* const glSamplerParameteriv)(GLuint, GLenum, const GLint *) = ::glSamplerParameteriv; +void (* const glSamplerParameterf)(GLuint, GLenum, GLfloat) = ::glSamplerParameterf; +void (* const glSamplerParameterfv)(GLuint, GLenum, const GLfloat *) = ::glSamplerParameterfv; +void (* const glGetSamplerParameteriv)(GLuint, GLenum, GLint *) = ::glGetSamplerParameteriv; +void (* const glGetSamplerParameterfv)(GLuint, GLenum, GLfloat *) = ::glGetSamplerParameterfv; +void (* const glVertexAttribDivisor)(GLuint, GLuint) = ::glVertexAttribDivisor; +void (* const glBindTransformFeedback)(GLenum, GLuint) = ::glBindTransformFeedback; +void (* const glDeleteTransformFeedbacks)(GLsizei, const GLuint *) = ::glDeleteTransformFeedbacks; +void (* const glGenTransformFeedbacks)(GLsizei, GLuint *) = ::glGenTransformFeedbacks; +GLboolean (* const glIsTransformFeedback)(GLuint) = ::glIsTransformFeedback; +void (* const glPauseTransformFeedback)() = ::glPauseTransformFeedback; +void (* const glResumeTransformFeedback)() = ::glResumeTransformFeedback; +void (* const glGetProgramBinary)(GLuint, GLsizei, GLsizei *, GLenum *, GLvoid *) = ::glGetProgramBinary; +void (* const glProgramBinary)(GLuint, GLenum, const GLvoid *, GLsizei) = ::glProgramBinary; +void (* const glProgramParameteri)(GLuint, GLenum, GLint) = ::glProgramParameteri; +void (* const glInvalidateFramebuffer)(GLenum, GLsizei, const GLenum *) = ::glInvalidateFramebuffer; +void (* const glInvalidateSubFramebuffer)(GLenum, GLsizei, const GLenum *, GLint, GLint, GLsizei, GLsizei) = ::glInvalidateSubFramebuffer; +void (* const glTexStorage2D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei) = ::glTexStorage2D; +void (* const glTexStorage3D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei) = ::glTexStorage3D; +void (* const glGetInternalformativ)(GLenum, GLenum, GLenum, GLsizei, GLint *) = ::glGetInternalformativ; + } // namespace platform } // namespace mbgl diff --git a/src/mbgl/gl/context.cpp b/src/mbgl/gl/context.cpp index 69b5addf3..85ce1d462 100644 --- a/src/mbgl/gl/context.cpp +++ b/src/mbgl/gl/context.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include #include @@ -93,23 +93,6 @@ void Context::initializeExtensions(const std::function(fn); } - - // Block Adreno 2xx, 3xx as it crashes on glBuffer(Sub)Data - // Block Adreno 4xx as it crashes in a driver when VBOs are destructed (Android 5.1.1) - // Block ARM Mali-T720 (in some MT8163 chipsets) as it crashes on glBindVertexArray - // Block ANGLE on Direct3D as the combination of Qt + Windows + ANGLE leads to crashes - if (renderer.find("Adreno (TM) 2") == std::string::npos && - renderer.find("Adreno (TM) 3") == std::string::npos && - renderer.find("Adreno (TM) 4") == std::string::npos && - (!(renderer.find("ANGLE") != std::string::npos && renderer.find("Direct3D") != std::string::npos)) && - renderer.find("Mali-T720") == std::string::npos && renderer.find("Sapphire 650") == std::string::npos && - !disableVAOExtension) { - vertexArray = std::make_unique(fn); - } - - if (!supportsVertexArrays()) { - Log::Warning(Event::OpenGL, "Not using Vertex Array Objects"); - } } } @@ -206,25 +189,12 @@ UniqueTexture Context::createUniqueTexture() { return UniqueTexture{std::move(id), {this}}; } -bool Context::supportsVertexArrays() const { - return vertexArray && - vertexArray->genVertexArrays && - vertexArray->bindVertexArray && - vertexArray->deleteVertexArrays; -} - VertexArray Context::createVertexArray() { - if (supportsVertexArrays()) { - VertexArrayID id = 0; - MBGL_CHECK_ERROR(vertexArray->genVertexArrays(1, &id)); - // NOLINTNEXTLINE(performance-move-const-arg) - UniqueVertexArray vao(std::move(id), { this }); - return { UniqueVertexArrayState(new VertexArrayState(std::move(vao)), VertexArrayStateDeleter { true })}; - } else { - // On GL implementations which do not support vertex arrays, attribute bindings are global state. - // So return a VertexArray which shares our global state tracking and whose deleter is a no-op. - return { UniqueVertexArrayState(&globalVertexArrayState, VertexArrayStateDeleter { false }) }; - } + VertexArrayID id = 0; + MBGL_CHECK_ERROR(glGenVertexArrays(1, &id)); + // NOLINTNEXTLINE(performance-move-const-arg) + UniqueVertexArray vao(std::move(id), { this }); + return { UniqueVertexArrayState(new VertexArrayState(std::move(vao)), VertexArrayStateDeleter { true })}; } UniqueFramebuffer Context::createFramebuffer() { @@ -650,14 +620,12 @@ void Context::performCleanup() { } if (!abandonedVertexArrays.empty()) { - assert(supportsVertexArrays()); for (const auto id : abandonedVertexArrays) { if (bindVertexArray == id) { bindVertexArray.setDirty(); } } - MBGL_CHECK_ERROR(vertexArray->deleteVertexArrays(int(abandonedVertexArrays.size()), - abandonedVertexArrays.data())); + MBGL_CHECK_ERROR(glDeleteVertexArrays(int(abandonedVertexArrays.size()), abandonedVertexArrays.data())); abandonedVertexArrays.clear(); } diff --git a/src/mbgl/gl/context.hpp b/src/mbgl/gl/context.hpp index 40013ead2..186b29256 100644 --- a/src/mbgl/gl/context.hpp +++ b/src/mbgl/gl/context.hpp @@ -115,10 +115,6 @@ public: return debugging.get(); } - extension::VertexArray* getVertexArrayExtension() const { - return vertexArray.get(); - } - void setCleanupOnDestruction(bool cleanup) { cleanupOnDestruction = cleanup; } @@ -129,7 +125,6 @@ private: gfx::RenderingStats stats; std::unique_ptr debugging; - std::unique_ptr vertexArray; public: State activeTextureUnit; @@ -140,7 +135,7 @@ public: State program; State vertexBuffer; - State bindVertexArray { *this }; + State bindVertexArray; VertexArrayState globalVertexArrayState { UniqueVertexArray(0, { const_cast(this) }) }; State pixelStorePack; @@ -182,7 +177,6 @@ private: std::unique_ptr readFramebuffer(Size, gfx::TexturePixelType, bool flip); VertexArray createVertexArray(); - bool supportsVertexArrays() const; friend detail::ProgramDeleter; friend detail::ShaderDeleter; @@ -203,9 +197,6 @@ private: std::vector abandonedRenderbuffers; public: - // For testing - bool disableVAOExtension = false; - #if !defined(NDEBUG) public: void visualizeStencilBuffer() override; diff --git a/src/mbgl/gl/defines.hpp b/src/mbgl/gl/defines.hpp index 7883badc3..5f8c748fc 100644 --- a/src/mbgl/gl/defines.hpp +++ b/src/mbgl/gl/defines.hpp @@ -1,167 +1,731 @@ #pragma once -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ALPHA 0x1906 -#define GL_ALWAYS 0x0207 -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_BACK 0x0405 -#define GL_BLEND 0x0BE2 -#define GL_BLEND_COLOR 0x8005 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_EQUATION_RGB 0x8009 -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_BYTE 0x1400 -#define GL_CCW 0x0901 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_COLOR_ATTACHMENT0 0x8CE0 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_COMPILE_STATUS 0x8B81 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_CONSTANT_COLOR 0x8001 -#define GL_CULL_FACE 0x0B44 -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_CURRENT_PROGRAM 0x8B8D -#define GL_CW 0x0900 -#define GL_DECR 0x1E03 -#define GL_DECR_WRAP 0x8508 -#define GL_DEPTH24_STENCIL8_OES 0x88F0 -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_TEST 0x0B71 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DONT_CARE 0x1100 -#define GL_DST_ALPHA 0x0304 -#define GL_DST_COLOR 0x0306 -#define GL_DYNAMIC_DRAW 0x88E8 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 -#define GL_EQUAL 0x0202 -#define GL_EXTENSIONS 0x1F03 -#define GL_FALSE 0 -#define GL_FLOAT 0x1406 -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_FRAMEBUFFER 0x8D40 -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD -#define GL_FRONT 0x0404 -#define GL_FRONT_AND_BACK 0x0408 -#define GL_FRONT_FACE 0x0B46 -#define GL_FUNC_ADD 0x8006 -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_FUNC_SUBTRACT 0x800A -#define GL_GEQUAL 0x0206 -#define GL_GREATER 0x0204 -#define GL_INCR 0x1E02 -#define GL_INCR_WRAP 0x8507 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_INT 0x1404 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 -#define GL_INVALID_OPERATION 0x0502 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVERT 0x150A -#define GL_KEEP 0x1E00 -#define GL_LEQUAL 0x0203 -#define GL_LESS 0x0201 -#define GL_LINEAR 0x2601 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 -#define GL_LINE_LOOP 0x0002 -#define GL_LINES 0x0001 -#define GL_LINE_STRIP 0x0003 -#define GL_LINE_WIDTH 0x0B21 -#define GL_LINK_STATUS 0x8B82 -#define GL_LUMINANCE 0x1909 -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_NEAREST 0x2600 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_NEVER 0x0200 -#define GL_NO_ERROR 0 -#define GL_NOTEQUAL 0x0205 -#define GL_ONE 1 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_OUT_OF_MEMORY 0x0505 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_POINTS 0x0000 -#define GL_RENDERBUFFER 0x8D41 -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_RENDERER 0x1F01 -#define GL_REPEAT 0x2901 -#define GL_REPLACE 0x1E01 -#define GL_RGBA 0x1908 -#define GL_RGBA8_OES 0x8058 -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_CUBE 0x8B60 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_SHORT 0x1402 -#define GL_SRC_ALPHA 0x0302 -#define GL_SRC_ALPHA_SATURATE 0x0308 -#define GL_SRC_COLOR 0x0300 -#define GL_STATIC_DRAW 0x88E4 -#define GL_STENCIL_ATTACHMENT 0x8D20 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_INDEX 0x1901 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_TEST 0x0B90 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_STREAM_DRAW 0x88E0 -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_TRIANGLE_FAN 0x0006 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRUE 1 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_UNSIGNED_INT 0x1405 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_VERTEX_SHADER 0x8B31 -#define GL_VIEWPORT 0x0BA2 -#define GL_ZERO 0 -#define GL_HALF_FLOAT 0x8D61 \ No newline at end of file +/* OpenGL ES 2.0 */ + +/* ClearBufferMask */ +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 + +/* Boolean */ +#define GL_FALSE 0 +#define GL_TRUE 1 + +/* BeginMode */ +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 + +/* BlendingFactorDest */ +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 + +/* BlendingFactorSrc */ +/* GL_ZERO */ +/* GL_ONE */ +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +/* GL_SRC_ALPHA */ +/* GL_ONE_MINUS_SRC_ALPHA */ +/* GL_DST_ALPHA */ +/* GL_ONE_MINUS_DST_ALPHA */ + +/* BlendEquationSeparate */ +#define GL_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 /* same as BLEND_EQUATION */ +#define GL_BLEND_EQUATION_ALPHA 0x883D + +/* BlendSubtract */ +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B + +/* Separate Blend Functions */ +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 + +/* Buffer Objects */ +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 + +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 + +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 + +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 + +/* CullFaceMode */ +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 + +/* DepthFunction */ +/* GL_NEVER */ +/* GL_LESS */ +/* GL_EQUAL */ +/* GL_LEQUAL */ +/* GL_GREATER */ +/* GL_NOTEQUAL */ +/* GL_GEQUAL */ +/* GL_ALWAYS */ + +/* EnableCap */ +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 + +/* ErrorCode */ +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 + +/* FrontFaceDirection */ +#define GL_CW 0x0900 +#define GL_CCW 0x0901 + +/* GetPName */ +#define GL_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +/* GL_SCISSOR_TEST */ +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +/* GL_POLYGON_OFFSET_FILL */ +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB + +/* GetTextureParameter */ +/* GL_TEXTURE_MAG_FILTER */ +/* GL_TEXTURE_MIN_FILTER */ +/* GL_TEXTURE_WRAP_S */ +/* GL_TEXTURE_WRAP_T */ + +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 + +/* HintMode */ +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 + +/* HintTarget */ +#define GL_GENERATE_MIPMAP_HINT 0x8192 + +/* DataType */ +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_FIXED 0x140C + +/* PixelFormat */ +#define GL_STENCIL_INDEX 0x1901 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A + +/* PixelType */ +/* GL_UNSIGNED_BYTE */ +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 + +/* Shaders */ +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D + +/* StencilFunction */ +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 + +/* StencilOp */ +/* GL_ZERO */ +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 + +/* StringName */ +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 + +/* TextureMagFilter */ +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 + +/* TextureMinFilter */ +/* GL_NEAREST */ +/* GL_LINEAR */ +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 + +/* TextureParameterName */ +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 + +/* TextureTarget */ +/* GL_TEXTURE_2D */ +#define GL_TEXTURE 0x1702 + +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C + +/* TextureUnit */ +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 + +/* TextureWrapMode */ +#define GL_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 + +/* Uniform Types */ +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 + +/* Vertex Arrays */ +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F + +/* Read Format */ +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B + +/* Shader Source */ +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA + +/* Shader Binary */ +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 + +/* Shader Precision-Specified Types */ +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 + +/* Framebuffer Object. */ +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 + +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 + +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 + +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 + +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 + +#define GL_NONE 0 + +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD + +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 + +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 + +/* OpenGL ES 3.0 */ + +#define GL_READ_BUFFER 0x0C02 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_RED 0x1903 +#define GL_RGB8 0x8051 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_DRAW_FRAMEBUFFER_BINDING GL_FRAMEBUFFER_BINDING +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_HALF_FLOAT 0x140B +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_RG8 0x822B +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_COPY_READ_BUFFER_BINDING GL_COPY_READ_BUFFER +#define GL_COPY_WRITE_BUFFER_BINDING GL_COPY_WRITE_BUFFER +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_INVALID_INDEX 0xFFFFFFFFu +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A +#define GL_SAMPLER_BINDING 0x8919 +#define GL_RGB10_A2UI 0x906F +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_INT_2_10_10_10_REV 0x8D9F +#define GL_TRANSFORM_FEEDBACK 0x8E22 +#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 +#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 +#define GL_PROGRAM_BINARY_LENGTH 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE +#define GL_PROGRAM_BINARY_FORMATS 0x87FF +#define GL_COMPRESSED_R11_EAC 0x9270 +#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 +#define GL_COMPRESSED_RG11_EAC 0x9272 +#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 +#define GL_COMPRESSED_RGB8_ETC2 0x9274 +#define GL_COMPRESSED_SRGB8_ETC2 0x9275 +#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 +#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 +#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 +#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#define GL_NUM_SAMPLE_COUNTS 0x9380 +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF + +/* OpenGL ES Extensions */ + +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE diff --git a/src/mbgl/gl/enum.cpp b/src/mbgl/gl/enum.cpp index 3ad98c306..b63331391 100644 --- a/src/mbgl/gl/enum.cpp +++ b/src/mbgl/gl/enum.cpp @@ -286,9 +286,9 @@ platform::GLenum Enum::to(const gfx::TextureChannel template <> gfx::RenderbufferPixelType Enum::from(const platform::GLint value) { switch (value) { - case GL_RGBA8_OES: return gfx::RenderbufferPixelType::RGBA; + case GL_RGBA8: return gfx::RenderbufferPixelType::RGBA; case GL_DEPTH_COMPONENT16: return gfx::RenderbufferPixelType::Depth; - case GL_DEPTH24_STENCIL8_OES: return gfx::RenderbufferPixelType::DepthStencil; + case GL_DEPTH24_STENCIL8: return gfx::RenderbufferPixelType::DepthStencil; } return {}; } @@ -296,9 +296,9 @@ gfx::RenderbufferPixelType Enum::from(const platform template <> platform::GLenum Enum::to(const gfx::RenderbufferPixelType value) { switch (value) { - case gfx::RenderbufferPixelType::RGBA: return GL_RGBA8_OES; + case gfx::RenderbufferPixelType::RGBA: return GL_RGBA8; case gfx::RenderbufferPixelType::Depth: return GL_DEPTH_COMPONENT16; - case gfx::RenderbufferPixelType::DepthStencil: return GL_DEPTH24_STENCIL8_OES; + case gfx::RenderbufferPixelType::DepthStencil: return GL_DEPTH24_STENCIL8; } return GL_INVALID_ENUM; } diff --git a/src/mbgl/gl/value.cpp b/src/mbgl/gl/value.cpp index adf987677..b19bbd020 100644 --- a/src/mbgl/gl/value.cpp +++ b/src/mbgl/gl/value.cpp @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include namespace mbgl { @@ -378,27 +378,13 @@ BindElementBuffer::Type BindElementBuffer::Get() { const constexpr BindVertexArray::Type BindVertexArray::Default; -void BindVertexArray::Set(const Type& value, const Context& context) { - if (auto vertexArray = context.getVertexArrayExtension()) { - if (vertexArray->bindVertexArray) { - MBGL_CHECK_ERROR(vertexArray->bindVertexArray(value)); - } - } +void BindVertexArray::Set(const Type& value) { + MBGL_CHECK_ERROR(glBindVertexArray(value)); } -BindVertexArray::Type BindVertexArray::Get(const Context& context) { +BindVertexArray::Type BindVertexArray::Get() { GLint binding = 0; - if (context.getVertexArrayExtension()) { -#ifdef GL_VERTEX_ARRAY_BINDING - MBGL_CHECK_ERROR(glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &binding)); -#elif GL_VERTEX_ARRAY_BINDING_OES - MBGL_CHECK_ERROR(glGetIntegerv(GL_VERTEX_ARRAY_BINDING_OES, &binding)); -#elif GL_VERTEX_ARRAY_BINDING_ARB - MBGL_CHECK_ERROR(glGetIntegerv(GL_VERTEX_ARRAY_BINDING_ARB, &binding)); -#elif GLVERTEX_ARRAY_BINDING_APPLE - MBGL_CHECK_ERROR(glGetIntegerv(GLVERTEX_ARRAY_BINDING_APPLE, &binding)); -#endif - } + MBGL_CHECK_ERROR(glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &binding)); return binding; } diff --git a/src/mbgl/gl/value.hpp b/src/mbgl/gl/value.hpp index 6897f2afa..d45b2d5a2 100644 --- a/src/mbgl/gl/value.hpp +++ b/src/mbgl/gl/value.hpp @@ -259,8 +259,8 @@ struct BindElementBuffer { struct BindVertexArray { using Type = gl::VertexArrayID; static const constexpr Type Default = 0; - static void Set(const Type&, const Context&); - static Type Get(const Context&); + static void Set(const Type&); + static Type Get(); }; struct VertexAttribute { diff --git a/src/mbgl/gl/vertex_array_extension.hpp b/src/mbgl/gl/vertex_array_extension.hpp deleted file mode 100644 index 967d99af3..000000000 --- a/src/mbgl/gl/vertex_array_extension.hpp +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#include -#include -#include - -namespace mbgl { -namespace gl { -namespace extension { - -class VertexArray { -public: - template - VertexArray(const Fn& loadExtension) - : bindVertexArray( - loadExtension({ { "GL_ARB_vertex_array_object", "glBindVertexArray" }, - { "GL_OES_vertex_array_object", "glBindVertexArrayOES" }, - { "GL_APPLE_vertex_array_object", "glBindVertexArrayAPPLE" } })), - deleteVertexArrays( - loadExtension({ { "GL_ARB_vertex_array_object", "glDeleteVertexArrays" }, - { "GL_OES_vertex_array_object", "glDeleteVertexArraysOES" }, - { "GL_APPLE_vertex_array_object", "glDeleteVertexArraysAPPLE" } })), - genVertexArrays( - loadExtension({ { "GL_ARB_vertex_array_object", "glGenVertexArrays" }, - { "GL_OES_vertex_array_object", "glGenVertexArraysOES" }, - { "GL_APPLE_vertex_array_object", "glGenVertexArraysAPPLE" } })) { - } - - const ExtensionFunction bindVertexArray; - - const ExtensionFunction deleteVertexArrays; - - const ExtensionFunction genVertexArrays; -}; - -} // namespace extension -} // namespace gl -} // namespace mbgl diff --git a/test/fixtures/map/no_vao/expected.png b/test/fixtures/map/no_vao/expected.png deleted file mode 100644 index d5b7c427628f8e092434558973d25fa44ea61f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9832 zcmchd^;^^L_s2&LX(UE>cMKRfkdSUk0qGQhjT{ZqE!`oZbO^}k2Bo_Z7*Z0_f+BqP z{`?W&pSElFx$oT0VH;nU&+001I2)fX=T01Wh73;-T3`o-L%!T|u_ z6jFO3Z-B@@De&%PADS6vdS@02L*n>8IXxu?;a$j|Sw(BWxRCTzP*V2y0~;GGNDbIC z4J`joO9KCxFB)whwY*0 zY<6nO=gs~5{d0YPv-uIE@e#lEw@<7n?x|~%$4p~;hD{&17~tx{gyh&EBah|5&%b7vsC3V;Lf_$p55X<@ z4!Dm`IyKpGF2ecqBtzzB0GHvfa3qO^s0TvI&b>kgn8NFYeJVezjQASSIs4Ls5+aHU z0&z7^g@b3`&Vn1rwTXKMr>wM>Hp6GnqFXp7zZINm^Xnt0dCuJS4({*AClI&%omaJ3 z!hvz;e0D^{I1bVY^{-){dFe9 zb<)Elh$nPwyZ=uC0iow{jh+i{Jo7gD@fv1hxEZU^kT#lkU~oL${+faWJIf|~-7i0) zAV7KNH$NkUxcll0Rz<22us1|(Yhh7LV$%Jr=;fVC&)^Kx^X;tXhqe9$Mug8oKYQm< zGi8i!VQJEKhe_qaW^QVpg&f~|2qt#Cn>h=bdhxOJEU}Eqgo?9&grU#TwtD@Juy?vn zuX~94BJl@LE%6q|___r9BXMaoD8JtE+mW{>=pNYfWdH9ktI;!Ajs7xi2f{$Jb~n1M z*|U(8!MUB5QQ7b(!u%#wz7eGf7Abc$erE-0?C$SA3Hzc-iQsCdoh3&a5_T?6UG)KC zzaIr2HmIE0%-6+>_}%NlMuP&AdrNynX_DJ-5#6ab`@-NUuiYo(e0Q(aBIkxWV~vKj zVw2YHn=6JyB$&o%PlIzk z8o${_*YF0$C_xf(f1Z^yOPtxi(WhvFbp8I%{a!-KBTO`N#5ITYAtI%A$=#uoq7LUw zT1UZ{EfwtFCBHdr&=+z0;!j7a>LRf$erqeLZ{0(X7u(kv)rTU|CnqJ*SXJ2R5$(Xd zhdahP+3vFtF9~08da$U_t_$uS@Eo#$SdE8>W;avnVE9>*DJxN8{84{32>MgFR7yAx z*fjY!A>zfQSX=k8r5NO-L3AE1tp{rp)3sna^pDj#&db9V zFgg=*M3u_^z!xqb+xw;}Rr||o7u@qHH-=goif=zlbcfVEUrofOYl5n|$|E)_{F15%x}4 zS67CTNkhm^Upd#ze zGcXJ2K6But&jKQ??|(YiQRh;RX8^k1x;!K1)fY&J#;^YCL$~lRMo*o9x@)(O_Z+vH z#z;D}7H;%&;9xO<{Sp;hm@+QUZ4bGhxx9=&#osMo%N-3luQvBPe~W9$J0tw&gK}xC zr0GP%EQV(EQin23yme{}A1U6sHGPSFyn6HAz0~>aBQim@kLdwKEeZW3OC64HKYMaM zMa|9*H%$B1u~$>YiqeIo^i<6_=eV zXvp$$EbK(dx7tK5PTW9hbqnK$T;)t}zdb!Se=GQUpUNP7?=b_G*6M$gN+I=wJaR2? zqXZhgqR%87>({U7v>t}~M+|9UTlF^S@*dbn5g94gcmwoym^QxJ^nOrx7$W$tsTUaG zZhFba-#-bdbOd{z^Y7t3#PoQNA3d3(A6z0Ir29nDu!zyndivVrSK!si0h9fL_wRx2 z*QGVlV`5rlOM~LuA;BtxbmcneFgua{JE`Ce2}=!>Exi%_X>CCDwMLzZ4 z2!DgE)vIXhkh|dnMRfWBTg&4qX-RIhABX6+BZUZ}Mq#%(N?6*%+O=k;VJMsvn#pjk zXHWIDTC;{2u|RbDgJOM!5KbhWMr73rD&v*xqmBGufrhho>Gb;y}8p+Pld}9RH8AKx-Y<-XVP}n&j$*sqPjeAxk~Z- zo7M$S_v+y8X#g;~62#DPmiK{d-|-bfbfhFmu3(J~2^TNZ8ouD_vXh-`>ls7c42Q#g z4*4o>y|8Zt@(bfE%sZ^P7(#|A1A>#(O66>61qs$rgf5idfhtj1zE-d9hJVvnkA(SA z^%^;JY$IfHUBd3pO`I4;>}i~(na$84akhN5=33o7S zYC9|CX#}_!t?BYt#7M-~d30|1O07rOug6$lkT|Dvv~Si>MB|&-%gE3jOeKSuY)ihJ zA$jg9%0GdcjEF2x8V=@Ma>&1lqZ!8mcTlT2tK_{cRvp$x}znJl`Q9 zUdUrtf4={{P1by@L%VjxI}7I>kqLw_=-mO)a?5+K#lEB%QCL@h#@K0aSgzlaZ41m>mey^(WiG&Trt|Po zzXkASEzK*hE`Y0DdCU*7K)sxhEp$zZRp@Y>&h zNF2ktZpcYJ;C4Uf^rQ_0#+Wh;vCy|o12q#){4GgRq@Y1>-nWTQvI12; zdWwvNf4Pk7LFu?+z?lMZn@lupi~KJ3o8S3h+);f}oNJD0+ETh3))h@_!$Q)!aLCfW z3(LS8E0h^zE}KHrV=h}()}_{--Bn}v*&p?&IqO7lfGXAHth`AWJ$zMX+mnR z;;DjCXARoAOTX$J3=$b?B>D>`${GlOjSFR*I!sead;&R zayd-TPev{S<@BP-wK%&yZRS|(UkaHr077)VFovuVlsF?H_kNT2Dg{OsvEHWE>%iZ| zS}qt`@N=hnBy$|MHIS5KpK6*Qd%@q@fsFTI$C4>45_CnD#ZgV(s9^?p9hjFS_YHT- zFoxhm%-jNZ#lQa5a70D)US8$%!Ub%I_iV_p>VFlTzMXiuc>X?v3|2MRDr>tim_~jyPdqS?$PmW9rm;Dq>EqnM=D`DjBL!jdi(w9v~UbM6Ui$uf!o+{zLyZ=3@Z5j#k3m`bW3l zcWAOGFF}Lt#PJ0t5Yvo_%*kf%Os@!k19fcc7XP(U%OJ7oqTB|xz=e?r!b^}~_-dV6 za)RU!H&_rya?iMhdAzu(GR(=<&()k#Iw1C$n*ioPUnFSLYTW8sKI18FL+ctyrI{xY zmJy6LTF1!)9+bV#FXqo3B_BvavL4*Tas5vzL9ASGI$*Opn9V{h!D3kIAQ#Db4HpUt zKV}}6sIK+T(-2Jc1ow-J)g3OwLRY_d4BuI2din9Uzr+&IfZk*u&tyvm=# zDdz|=SNDQBTsq9N1K#H~w`>pF!a9^e>wRQJi3teomGz5DFP67Z?$t1@(UZK=nh`fHez{fo6`d3E3JhWG7PoDpw2atVl^lujjh)7TzOkS?$WP>N9qE-(L% zZ(?|P0NI(6S#t0vYz8LHxopZ4MF4`{R z;HbzH@4%85{SkfBhYr29Upoev&s9kksJ!5N>xSCvUAa7`D3%hrdFnuXf(@GpEsYGL zo^6^glL?vJJ+OViuc_X@=L>b8=!``^42&Va9M~ax*raPQ*GSV94@AUC;SlWqAt zFeWYLx3tiYnGWk+4a4B|?OJ#_je3Ho- zT5{Kz_ZK;%_L(H<*wm!;M0tp~0~MjGk!tDm(+DQpNi#{(Itek5ATZnz{a`~y)HR(( zxI}bW0Xy?mN-971tfs0K36aAzkO>coo3-EnrhIvZvGx%`^y zZ6?jvMJ#vyQkm~F^59wQTIfte*$J6ogxw6f5aDE)zM_xw*WK^l#XdHLoR4HzXrJp3(SQnMp{$VrZ^^Nq$BfL*;0bna@ zXnMBnl);>Yb72P2|2Co>?`tO|+{xri_GN0&t{_|Th7xg4T7T)j>g@MsXtdD6`>v9h zkZFmdH+*cX*O$eziJVp0X_1>dMcTV+mr|-o4qvH7f@h)4WRdgS#m4EuuKI`Xb6w5PcnsGz2I5^{(iSXL=3sXHN=C+tlIS9| z)mVzDYZh%&>}_H;Z<%`f$ikohC&3KB=OVv}V{41IGaDQ6ny6KL{ zubRUXWkH!z1)|8(oqxx-L4-6L395>ZsEth zz1}7xx?g4qDbkVFK;DOK)Bc}=p^Q7%BoByyJKeG( z!OxYVBe|tBW+%458XsKXLXqm1N{+_%oaD;T5&K zf-fc-Rxy6Sf0ZL0{nn}8w8(@i4M&(510bqD}|U= zX6}pRHI4iBe?wizD=LBEEN`MRh>K&Cb5K;PGoG(PljmgKFvbz+iK(N1Xt*eOhIDEJ z``VIX{<`%l8-jd3p%+9v>lpNrUFG)1Hn89#pRzSd1B_4M#NYf!ra;^)Jo6Z3Iafw@ zDOZ0qejA>;uPD+eYgkVTyxZmfdc3`PCU6p)QU?7CEJOEq%9<I#LVG+lJazSK6^EDbQVQ)^nZnU?J7nJz9zl9E+C9Uo9TSJ6wmbcV5e zf^Xh<-pVU6S8dHYkCQF8+P{bh<|#Web(GWK)B9}(EppZ59?`KCS;xxBz{a(G-%0vp z+B^&XM}1+n^UxUued97M-mEaFha=8izE+3-{)WG5ZOS%pZ#c8oXGqZ9%G8ggU2enQ z%&#DMA|E2Tiw9xkcg`-ue{athee-XeNB}c{x%H{MIRN8eXbH(=t4sDgT1_`Vl$QO! zsFx}LctQY*)#nF=FVchVlF`3QWc9BhzU)ReWRVI+&ND#&-SXKBl!s)YJjK7^#z=fcrDM528q{1UAOKU+*=DDN%cGJLy5Hm> zkj~;w%p{6~AV_^H+a@}kw2;4)M4H6TogamXcrjnqFwykK`4662-Hel+QaeK&TK_Fr zyzI2h`>vF9_~SydE=lkDDiokJF$`6M&=yZc)Tp-RvG@YzF0!MHj^&4_;VjUIx~Yki zKFC+oZaCiy_^7GjM`!WFFMRVD+@ga)D4u~2i`L+;nc9OX%Ula~QsT62RJtEy4(7wC zG7fBQ-z%Il*B!oJc~EftN$|(C|NNd)BK38C5&Ly;92 z>mQSF;nj6jpASh}v#xh*kPUA6%2UM5&ct9QMiSTY%N}4+fTb9p#d}Z*C$;-P6q+^e zicnJ0@qq&bsK@P*bg zHpmCtGi<`U?TYyatIO(9L(0q~gy&B0O3-zxi4ZK&pVFs}Y@6thPb~;&jOZj44=YSc zWt_qNFy>JS+G2I_d?+TQ+eTfD?EUnw*{caEvD}JpOi3d3@Zcu?PXsi~)n~fIYm65? zd^T;E;iOgRWaGwhLBXj&0v0r9??no)Ax2#1QDQ zAp#{2$r59h1zo5*51OTww9*P93YwI5EpuHiwmkJ;ZvBZvl8Tq)ZT8Dkzb#M5Yw+OM zI}eTz+1I96h&z7r_;DhS;`#gL-6fIu>XH3uB0SK3r9u>P?3L<(t$HKD-7RM@4H%jQI8WKxE8C z%KsinohMxFFC#2^Yc3S#)1U7M#U_8&#zLE(zBr^(J8d5+;W2I4rxyhKn|!zefSKR9 zUTk2pYk&R1iYWptoh@&TfdLrao&s*`kN1R^UwoQ}h`YVQ0pcJk! z)EH|~ykEdvUql2`sl+p?8___ksnIaDGo)=RWsZGHpvWfhd{mO=HJ}-bAx1geX9T`I zlwrb^{X|G3eksk33!9|(1II-Yj&3CjEsQIZtUfSJihS)W!33K-h$l(M zJbHngX*x;nJdhl-GQiD9{r8AU*JT2r(mkBClLv zH44``Wli-np$wxeUy9>sc*TQX;Q%o>=Dqj@3q;tw^qOLR=3o6-OeJ|m}%GuZ34`*tWj&=S|!YU9iSlkf;pX!kGTW4h~t zmjqPk`?9P;ya-AG4B*A|V^#)2tw!QK)54S6yiF-&p#EDNX|fJ%&#hN?aZf%2lQO7SB+aM!_nPKX0axU@hOR<= zQQG{}3zT(TFnMkbyQFy}rnVzn$l#`e_;T5Rh1Ll+WawHh0lzVwOpDc6;2)ZZ>WaL> zRq^&Gjp*QXx2-zcb4;Kxt=eUIS~oErqZF-m%lP717#grQV4rFkyg1}?T3E#r;T?Rb ze2IE;n2Swfy**tgPqR<>58(Uc?d}kd@;#W_xOj-~Fm#}?s2LB_WVE8Dl4I>`Vn2*J zXv{PFwFO?hokYosugPdk_c*jdi>_UJD+$;b(@C0He9cEPNZPN!X|R7?%*g<29K#a% z^YrJq1_cyU_$7A}jg>kD?0Ir9NQ@A=@dla0uV-1WI1Eq!P%{qP8?|Vm5hm({TPJo< zjVdB=pk*iOqe6$DA=NDzC$UhewY?p;=Xh5ScXk7@g^OY2GDGtvvmrz$iMBlJ1a5kI zbrmD95&WPlyzOdYVR}*bU;9L8Mels9Bs1}Z#gCfjTZKyDRdW^FMsTnmGno#yKeL}; zf}3Q4z-+g?NQ+t|ee%X2{&SpXKG=?08lGFTuKP?lPvK4{VL#fkG3vk6kkK5}%wx^G ziJcehZCoxDh`|;4TvnZjG5wP}Wf|*G!)8&wV@}>!=b_hYE&`mVjm9@}9wK|g z`m?MEpz+FUdpE&LO)OM=q&h7QxokpY83!nwm>o(wz;`g!XSj!kXJ;N{&}=E9f&kT4 zHJSgVt>kpNa_)7YJZ6tk`Y4+JNM&oMJqJCKRpL&`{@KDfU+i%@{PMr^ClcHEL(PIa z$9EVLKLN|vhCzb@IE@V(~y51n@*ChJdUzf3uTQR}_nO=c<@0;{!qHAz}a4 zD8U8=$SX+O*n9Q_B}pZk0;PY+QDwMTV7YUtP7ui06q&Vwn%)fa>bOme)HI)Z3=B;I zp`SY-;nhV|v9_{M^1S~;4_&5ciI6zSo1KUP*ym=vmJe?@L`u`I0aRLvrE_20Oh%mm zQR+*BPgJZdoyp!{P1GB{+TzM?@Lm)6evi;Zi#cTD&}xHoxN5>xFIm9pN$*qNIW2PL zidYetEI}~)E>4J0+ln+Dp67bG)|5uEf4*eltn8dVJo87WP4qNF#tbGrUSQf7(yPspJi%prucpSG5_xLpnR>FmflX?F@1w|{#$hdkaZr@ zpEi@XbE$s^69M-0F<_FAoPb;(a@+pFFH>2$#hR;NoQIM##^@3_L6pp6uq!HaIev~J zc?=jNFeaqbkC6bu-s$noClEk%R2JiWCzsdr(=h55IrC6#f4@l7D=KMFY%()4b35#o zQcq8waULv*X4+^SFbW#t2*_-00_Vk6n-Og1eJjiAruX=j4Gq4+FtJ++BVI`tkS;(sg46Z_$@LULaFiY^!~Xf%(=Sq-OhYPVp~AlEDfh z0u)(efBdSW>g;RuU$D6UMKJr~Kr6g;_6BxlS?7sO)vMZdr9F9a^JQ6g!Zfxl&V6b! z;|R(;wMpJ=WLRg*nMRnt9Q5fSiZlJEhX1w@bQnhf#RjS`A-RsWJ;H2Q(`V_Ge*4a}{K-0PlB&)+2=luQ#$*{r$0e03x0!X3go^we$tSM>>n8Du~c zgzH%~gBOnm=IG9O-RLE!8F8yGHkFiwc?hrIG?#s`v4~=WFk>oJ>930RwB&ZbsnP!^ zPlJ>Mpv1tOIT5VBlv_Z$3AjkyEHaPL;uU}ig@J_v`9tFf9r;z1bJVwdVeDjI~UO^+<3hV+2Zz$@`{@dYb?b4Vl zG0?6>#hyV+4DNeeiS5qY-=u96Fk}G%(2?i~Iog8G6D9 z_V83|>M)Mjh36rH{v_iQ{KeccGVKUxC<7AJtVd*MIDV$8qpDX4d5M0k@4EIUxwdN? z?wmuwa?xcxQ2f$|kje^X#^#F84${U~@nek^A0pPaG~p|M^WyN;MSBnM4au*QJsa## zU!Z$G@V382arn8ELIy9VFS94Yl?_q!u|Xaj5Yp(Fv2{XT-k9#CDsHF1z@PG^yl{W1 z1div{KenXC8EKEwGh3w$40KaVr%R@7el3_(vzaIV`7>sN>=6hJ23huxf1s%|gxNxr z(lZ-#40Q2iaMnio+gnslWP{-!2cHpn?i*MxtLen(4DRX@Qc`$O+ie~r_t;N}2m@u;Bl;xJDC1{(HZUlC1+7$(E?m| zTr6QQHA#_oB7#NYycmO`{2OExQq9*;4r>J_7ISM2=?y>I{xP1ia1dRhy3K97)6Aw} zm-{Ex9S_~ON)r8uyVVEb*8d>@PXZF5(;CzpreAc7MQ|*h7n4zxS3<_`X=_%*QUkHL z7#`pWuUbAV&OAgXm=mlCm4Wv$pW5OQwNf(*$_l_^V3|2bFP@zeV zb^mW31f^K;n=eiXGK%mD%=)9-JsVd-IAXo$YkfEfRN9j+-5NQ2?oIH6PD}3(PIS&A zZBg{&P6x&(+m3ZVt%&6ClyiMysqdG?GZf{Pu6V#&nUj=j~jE^dBbjm`Ba_HO`4hOd4demj>H!a`njx_W`dCGQXtz2YXOdV&m~rlkF%PQmKk{{d3|oL&F` diff --git a/test/gl/gl_functions.test.cpp b/test/gl/gl_functions.test.cpp index 3ecf22756..762146ca9 100644 --- a/test/gl/gl_functions.test.cpp +++ b/test/gl/gl_functions.test.cpp @@ -5,6 +5,9 @@ using namespace mbgl::platform; TEST(GLFunctions, OpenGLES) { + + /* OpenGL ES 2.0 */ + EXPECT_NE(glActiveTexture, nullptr); EXPECT_NE(glAttachShader, nullptr); EXPECT_NE(glBindAttribLocation, nullptr); @@ -74,6 +77,7 @@ TEST(GLFunctions, OpenGLES) { EXPECT_NE(glGetRenderbufferParameteriv, nullptr); EXPECT_NE(glGetShaderInfoLog, nullptr); EXPECT_NE(glGetShaderiv, nullptr); + EXPECT_NE(glGetShaderPrecisionFormat, nullptr); EXPECT_NE(glGetShaderSource, nullptr); EXPECT_NE(glGetString, nullptr); EXPECT_NE(glGetTexParameterfv, nullptr); @@ -97,9 +101,11 @@ TEST(GLFunctions, OpenGLES) { EXPECT_NE(glPixelStorei, nullptr); EXPECT_NE(glPolygonOffset, nullptr); EXPECT_NE(glReadPixels, nullptr); + EXPECT_NE(glReleaseShaderCompiler, nullptr); EXPECT_NE(glRenderbufferStorage, nullptr); EXPECT_NE(glSampleCoverage, nullptr); EXPECT_NE(glScissor, nullptr); + EXPECT_NE(glShaderBinary, nullptr); EXPECT_NE(glShaderSource, nullptr); EXPECT_NE(glStencilFunc, nullptr); EXPECT_NE(glStencilFuncSeparate, nullptr); @@ -144,4 +150,111 @@ TEST(GLFunctions, OpenGLES) { EXPECT_NE(glVertexAttrib4fv, nullptr); EXPECT_NE(glVertexAttribPointer, nullptr); EXPECT_NE(glViewport, nullptr); + + /* OpenGL ES 3.0 */ + + EXPECT_NE(glReadBuffer, nullptr); + EXPECT_NE(glDrawRangeElements, nullptr); + EXPECT_NE(glTexImage3D, nullptr); + EXPECT_NE(glTexSubImage3D, nullptr); + EXPECT_NE(glCopyTexSubImage3D, nullptr); + EXPECT_NE(glCompressedTexImage3D, nullptr); + EXPECT_NE(glCompressedTexSubImage3D, nullptr); + EXPECT_NE(glGenQueries, nullptr); + EXPECT_NE(glDeleteQueries, nullptr); + EXPECT_NE(glIsQuery, nullptr); + EXPECT_NE(glBeginQuery, nullptr); + EXPECT_NE(glEndQuery, nullptr); + EXPECT_NE(glGetQueryiv, nullptr); + EXPECT_NE(glGetQueryObjectuiv, nullptr); + EXPECT_NE(glUnmapBuffer, nullptr); + EXPECT_NE(glGetBufferPointerv, nullptr); + EXPECT_NE(glDrawBuffers, nullptr); + EXPECT_NE(glUniformMatrix2x3fv, nullptr); + EXPECT_NE(glUniformMatrix3x2fv, nullptr); + EXPECT_NE(glUniformMatrix2x4fv, nullptr); + EXPECT_NE(glUniformMatrix4x2fv, nullptr); + EXPECT_NE(glUniformMatrix3x4fv, nullptr); + EXPECT_NE(glUniformMatrix4x3fv, nullptr); + EXPECT_NE(glBlitFramebuffer, nullptr); + EXPECT_NE(glRenderbufferStorageMultisample, nullptr); + EXPECT_NE(glFramebufferTextureLayer, nullptr); + EXPECT_NE(glMapBufferRange, nullptr); + EXPECT_NE(glFlushMappedBufferRange, nullptr); + EXPECT_NE(glBindVertexArray, nullptr); + EXPECT_NE(glDeleteVertexArrays, nullptr); + EXPECT_NE(glGenVertexArrays, nullptr); + EXPECT_NE(glIsVertexArray, nullptr); + EXPECT_NE(glGetIntegeri_v, nullptr); + EXPECT_NE(glBeginTransformFeedback, nullptr); + EXPECT_NE(glEndTransformFeedback, nullptr); + EXPECT_NE(glBindBufferRange, nullptr); + EXPECT_NE(glBindBufferBase, nullptr); + EXPECT_NE(glTransformFeedbackVaryings, nullptr); + EXPECT_NE(glGetTransformFeedbackVarying, nullptr); + EXPECT_NE(glVertexAttribIPointer, nullptr); + EXPECT_NE(glGetVertexAttribIiv, nullptr); + EXPECT_NE(glGetVertexAttribIuiv, nullptr); + EXPECT_NE(glVertexAttribI4i, nullptr); + EXPECT_NE(glVertexAttribI4ui, nullptr); + EXPECT_NE(glVertexAttribI4iv, nullptr); + EXPECT_NE(glVertexAttribI4uiv, nullptr); + EXPECT_NE(glGetUniformuiv, nullptr); + EXPECT_NE(glGetFragDataLocation, nullptr); + EXPECT_NE(glUniform1ui, nullptr); + EXPECT_NE(glUniform2ui, nullptr); + EXPECT_NE(glUniform3ui, nullptr); + EXPECT_NE(glUniform4ui, nullptr); + EXPECT_NE(glUniform1uiv, nullptr); + EXPECT_NE(glUniform2uiv, nullptr); + EXPECT_NE(glUniform3uiv, nullptr); + EXPECT_NE(glUniform4uiv, nullptr); + EXPECT_NE(glClearBufferiv, nullptr); + EXPECT_NE(glClearBufferuiv, nullptr); + EXPECT_NE(glClearBufferfv, nullptr); + EXPECT_NE(glClearBufferfi, nullptr); + EXPECT_NE(glGetStringi, nullptr); + EXPECT_NE(glCopyBufferSubData, nullptr); + EXPECT_NE(glGetUniformIndices, nullptr); + EXPECT_NE(glGetActiveUniformsiv, nullptr); + EXPECT_NE(glGetUniformBlockIndex, nullptr); + EXPECT_NE(glGetActiveUniformBlockiv, nullptr); + EXPECT_NE(glGetActiveUniformBlockName, nullptr); + EXPECT_NE(glUniformBlockBinding, nullptr); + EXPECT_NE(glDrawArraysInstanced, nullptr); + EXPECT_NE(glDrawElementsInstanced, nullptr); + EXPECT_NE(glFenceSync, nullptr); + EXPECT_NE(glIsSync, nullptr); + EXPECT_NE(glDeleteSync, nullptr); + EXPECT_NE(glClientWaitSync, nullptr); + EXPECT_NE(glWaitSync, nullptr); + EXPECT_NE(glGetInteger64v, nullptr); + EXPECT_NE(glGetSynciv, nullptr); + EXPECT_NE(glGetInteger64i_v, nullptr); + EXPECT_NE(glGetBufferParameteri64v, nullptr); + EXPECT_NE(glGenSamplers, nullptr); + EXPECT_NE(glDeleteSamplers, nullptr); + EXPECT_NE(glIsSampler, nullptr); + EXPECT_NE(glBindSampler, nullptr); + EXPECT_NE(glSamplerParameteri, nullptr); + EXPECT_NE(glSamplerParameteriv, nullptr); + EXPECT_NE(glSamplerParameterf, nullptr); + EXPECT_NE(glSamplerParameterfv, nullptr); + EXPECT_NE(glGetSamplerParameteriv, nullptr); + EXPECT_NE(glGetSamplerParameterfv, nullptr); + EXPECT_NE(glVertexAttribDivisor, nullptr); + EXPECT_NE(glBindTransformFeedback, nullptr); + EXPECT_NE(glDeleteTransformFeedbacks, nullptr); + EXPECT_NE(glGenTransformFeedbacks, nullptr); + EXPECT_NE(glIsTransformFeedback, nullptr); + EXPECT_NE(glPauseTransformFeedback, nullptr); + EXPECT_NE(glResumeTransformFeedback, nullptr); + EXPECT_NE(glGetProgramBinary, nullptr); + EXPECT_NE(glProgramBinary, nullptr); + EXPECT_NE(glProgramParameteri, nullptr); + EXPECT_NE(glInvalidateFramebuffer, nullptr); + EXPECT_NE(glInvalidateSubFramebuffer, nullptr); + EXPECT_NE(glTexStorage2D, nullptr); + EXPECT_NE(glTexStorage3D, nullptr); + EXPECT_NE(glGetInternalformativ, nullptr); } diff --git a/test/map/map.test.cpp b/test/map/map.test.cpp index ee9a7eeb6..b03d2aee1 100644 --- a/test/map/map.test.cpp +++ b/test/map/map.test.cpp @@ -727,21 +727,6 @@ TEST(Map, AddLayer) { test::checkImage("test/fixtures/map/add_layer", test.frontend.render(test.map).image); } -TEST(Map, WithoutVAOExtension) { - if (gfx::Backend::GetType() != gfx::Backend::Type::OpenGL) { - return; - } - - MapTest test{":memory:", "test/fixtures/api/assets"}; - - gfx::BackendScope scope { *test.frontend.getBackend() }; - static_cast(test.frontend.getBackend()->getContext()).disableVAOExtension = true; - - test.map.getStyle().loadJSON(util::read_file("test/fixtures/api/water.json")); - - test::checkImage("test/fixtures/map/no_vao", test.frontend.render(test.map).image, 0.002); -} - TEST(Map, RemoveLayer) { MapTest<> test; @@ -1596,4 +1581,4 @@ TEST(Map, ObserveShaderRegistration) { observedRegistry = false; test.frontend.render(test.map); EXPECT_EQ(observedRegistry, false); -} \ No newline at end of file +}