paulxstretch/deps/juce/modules/juce_opengl/opengl/juce_gles2.cpp

1419 lines
112 KiB
C++
Raw Permalink Normal View History

/*
==============================================================================
This file is part of the JUCE library.
Copyright (c) 2020 - Raw Material Software Limited
JUCE is an open source library subject to commercial or open-source
licensing.
By using JUCE, you agree to the terms of both the JUCE 6 End-User License
Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020).
End User License Agreement: www.juce.com/juce-6-licence
Privacy Policy: www.juce.com/juce-privacy-policy
Or: You may also use this code under the terms of the GPL v3 (see
www.gnu.org/licenses).
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
DISCLAIMED.
==============================================================================
*/
// This file was generated automatically using data from the opengl-registry
// https://github.com/KhronosGroup/OpenGL-Registry
// This file's corresponding header contains a reference to a function pointer
// for each command in the GL spec. The functions from earlier GL versions are
// (pretty much) guaranteed to be available in the platform GL library. For
// these functions, the references will be initialised to point directly at the
// library implementations. This behaviour is somewhat configurable:
// preprocessor defs of the form `JUCE_STATIC_LINK_<some gl version>` will
// ensure that the functions from a particular GL version are linked
// statically. Of course, this may fail to link if the platform doesn't
// implement the requested GL version. Any GL versions that are not explicitly
// requested for static linking, along with all known GL extensions, are loaded
// at runtime using gl::loadFunctions(). Again, these functions can be accessed
// via the references in the header.
// You should be aware that *any* of the functions declared in the header may
// be nullptr if the implementation does not supply that function. If you
// depend on specific GL features/extensions, it's probably a good idea to
// check each function pointer to ensure that the function was loaded
// successfully.
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_2_0 \
X (void , glActiveTexture, (GLenum texture)) \
X (void , glAttachShader, (GLuint program, GLuint shader)) \
X (void , glBindAttribLocation, (GLuint program, GLuint index, const GLchar *name)) \
X (void , glBindBuffer, (GLenum target, GLuint buffer)) \
X (void , glBindFramebuffer, (GLenum target, GLuint framebuffer)) \
X (void , glBindRenderbuffer, (GLenum target, GLuint renderbuffer)) \
X (void , glBindTexture, (GLenum target, GLuint texture)) \
X (void , glBlendColor, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) \
X (void , glBlendEquation, (GLenum mode)) \
X (void , glBlendEquationSeparate, (GLenum modeRGB, GLenum modeAlpha)) \
X (void , glBlendFunc, (GLenum sfactor, GLenum dfactor)) \
X (void , glBlendFuncSeparate, (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)) \
X (void , glBufferData, (GLenum target, GLsizeiptr size, const void *data, GLenum usage)) \
X (void , glBufferSubData, (GLenum target, GLintptr offset, GLsizeiptr size, const void *data)) \
X (GLenum , glCheckFramebufferStatus, (GLenum target)) \
X (void , glClear, (GLbitfield mask)) \
X (void , glClearColor, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)) \
X (void , glClearDepthf, (GLfloat d)) \
X (void , glClearStencil, (GLint s)) \
X (void , glColorMask, (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)) \
X (void , glCompileShader, (GLuint shader)) \
X (void , glCompressedTexImage2D, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data)) \
X (void , glCompressedTexSubImage2D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)) \
X (void , glCopyTexImage2D, (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)) \
X (void , glCopyTexSubImage2D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)) \
X (GLuint , glCreateProgram, ()) \
X (GLuint , glCreateShader, (GLenum type)) \
X (void , glCullFace, (GLenum mode)) \
X (void , glDeleteBuffers, (GLsizei n, const GLuint *buffers)) \
X (void , glDeleteFramebuffers, (GLsizei n, const GLuint *framebuffers)) \
X (void , glDeleteProgram, (GLuint program)) \
X (void , glDeleteRenderbuffers, (GLsizei n, const GLuint *renderbuffers)) \
X (void , glDeleteShader, (GLuint shader)) \
X (void , glDeleteTextures, (GLsizei n, const GLuint *textures)) \
X (void , glDepthFunc, (GLenum func)) \
X (void , glDepthMask, (GLboolean flag)) \
X (void , glDepthRangef, (GLfloat n, GLfloat f)) \
X (void , glDetachShader, (GLuint program, GLuint shader)) \
X (void , glDisable, (GLenum cap)) \
X (void , glDisableVertexAttribArray, (GLuint index)) \
X (void , glDrawArrays, (GLenum mode, GLint first, GLsizei count)) \
X (void , glDrawElements, (GLenum mode, GLsizei count, GLenum type, const void *indices)) \
X (void , glEnable, (GLenum cap)) \
X (void , glEnableVertexAttribArray, (GLuint index)) \
X (void , glFinish, ()) \
X (void , glFlush, ()) \
X (void , glFramebufferRenderbuffer, (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) \
X (void , glFramebufferTexture2D, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) \
X (void , glFrontFace, (GLenum mode)) \
X (void , glGenBuffers, (GLsizei n, GLuint *buffers)) \
X (void , glGenerateMipmap, (GLenum target)) \
X (void , glGenFramebuffers, (GLsizei n, GLuint *framebuffers)) \
X (void , glGenRenderbuffers, (GLsizei n, GLuint *renderbuffers)) \
X (void , glGenTextures, (GLsizei n, GLuint *textures)) \
X (void , glGetActiveAttrib, (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)) \
X (void , glGetActiveUniform, (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)) \
X (void , glGetAttachedShaders, (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders)) \
X (GLint , glGetAttribLocation, (GLuint program, const GLchar *name)) \
X (void , glGetBooleanv, (GLenum pname, GLboolean *data)) \
X (void , glGetBufferParameteriv, (GLenum target, GLenum pname, GLint *params)) \
X (GLenum , glGetError, ()) \
X (void , glGetFloatv, (GLenum pname, GLfloat *data)) \
X (void , glGetFramebufferAttachmentParameteriv, (GLenum target, GLenum attachment, GLenum pname, GLint *params)) \
X (void , glGetIntegerv, (GLenum pname, GLint *data)) \
X (void , glGetProgramiv, (GLuint program, GLenum pname, GLint *params)) \
X (void , glGetProgramInfoLog, (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) \
X (void , glGetRenderbufferParameteriv, (GLenum target, GLenum pname, GLint *params)) \
X (void , glGetShaderiv, (GLuint shader, GLenum pname, GLint *params)) \
X (void , glGetShaderInfoLog, (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) \
X (void , glGetShaderPrecisionFormat, (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision)) \
X (void , glGetShaderSource, (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source)) \
X (const GLubyte *, glGetString, (GLenum name)) \
X (void , glGetTexParameterfv, (GLenum target, GLenum pname, GLfloat *params)) \
X (void , glGetTexParameteriv, (GLenum target, GLenum pname, GLint *params)) \
X (void , glGetUniformfv, (GLuint program, GLint location, GLfloat *params)) \
X (void , glGetUniformiv, (GLuint program, GLint location, GLint *params)) \
X (GLint , glGetUniformLocation, (GLuint program, const GLchar *name)) \
X (void , glGetVertexAttribfv, (GLuint index, GLenum pname, GLfloat *params)) \
X (void , glGetVertexAttribiv, (GLuint index, GLenum pname, GLint *params)) \
X (void , glGetVertexAttribPointerv, (GLuint index, GLenum pname, void **pointer)) \
X (void , glHint, (GLenum target, GLenum mode)) \
X (GLboolean , glIsBuffer, (GLuint buffer)) \
X (GLboolean , glIsEnabled, (GLenum cap)) \
X (GLboolean , glIsFramebuffer, (GLuint framebuffer)) \
X (GLboolean , glIsProgram, (GLuint program)) \
X (GLboolean , glIsRenderbuffer, (GLuint renderbuffer)) \
X (GLboolean , glIsShader, (GLuint shader)) \
X (GLboolean , glIsTexture, (GLuint texture)) \
X (void , glLineWidth, (GLfloat width)) \
X (void , glLinkProgram, (GLuint program)) \
X (void , glPixelStorei, (GLenum pname, GLint param)) \
X (void , glPolygonOffset, (GLfloat factor, GLfloat units)) \
X (void , glReadPixels, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels)) \
X (void , glReleaseShaderCompiler, ()) \
X (void , glRenderbufferStorage, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)) \
X (void , glSampleCoverage, (GLfloat value, GLboolean invert)) \
X (void , glScissor, (GLint x, GLint y, GLsizei width, GLsizei height)) \
X (void , glShaderBinary, (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length)) \
X (void , glShaderSource, (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length)) \
X (void , glStencilFunc, (GLenum func, GLint ref, GLuint mask)) \
X (void , glStencilFuncSeparate, (GLenum face, GLenum func, GLint ref, GLuint mask)) \
X (void , glStencilMask, (GLuint mask)) \
X (void , glStencilMaskSeparate, (GLenum face, GLuint mask)) \
X (void , glStencilOp, (GLenum fail, GLenum zfail, GLenum zpass)) \
X (void , glStencilOpSeparate, (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)) \
X (void , glTexImage2D, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)) \
X (void , glTexParameterf, (GLenum target, GLenum pname, GLfloat param)) \
X (void , glTexParameterfv, (GLenum target, GLenum pname, const GLfloat *params)) \
X (void , glTexParameteri, (GLenum target, GLenum pname, GLint param)) \
X (void , glTexParameteriv, (GLenum target, GLenum pname, const GLint *params)) \
X (void , glTexSubImage2D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)) \
X (void , glUniform1f, (GLint location, GLfloat v0)) \
X (void , glUniform1fv, (GLint location, GLsizei count, const GLfloat *value)) \
X (void , glUniform1i, (GLint location, GLint v0)) \
X (void , glUniform1iv, (GLint location, GLsizei count, const GLint *value)) \
X (void , glUniform2f, (GLint location, GLfloat v0, GLfloat v1)) \
X (void , glUniform2fv, (GLint location, GLsizei count, const GLfloat *value)) \
X (void , glUniform2i, (GLint location, GLint v0, GLint v1)) \
X (void , glUniform2iv, (GLint location, GLsizei count, const GLint *value)) \
X (void , glUniform3f, (GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) \
X (void , glUniform3fv, (GLint location, GLsizei count, const GLfloat *value)) \
X (void , glUniform3i, (GLint location, GLint v0, GLint v1, GLint v2)) \
X (void , glUniform3iv, (GLint location, GLsizei count, const GLint *value)) \
X (void , glUniform4f, (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) \
X (void , glUniform4fv, (GLint location, GLsizei count, const GLfloat *value)) \
X (void , glUniform4i, (GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) \
X (void , glUniform4iv, (GLint location, GLsizei count, const GLint *value)) \
X (void , glUniformMatrix2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUniformMatrix3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUniformMatrix4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUseProgram, (GLuint program)) \
X (void , glValidateProgram, (GLuint program)) \
X (void , glVertexAttrib1f, (GLuint index, GLfloat x)) \
X (void , glVertexAttrib1fv, (GLuint index, const GLfloat *v)) \
X (void , glVertexAttrib2f, (GLuint index, GLfloat x, GLfloat y)) \
X (void , glVertexAttrib2fv, (GLuint index, const GLfloat *v)) \
X (void , glVertexAttrib3f, (GLuint index, GLfloat x, GLfloat y, GLfloat z)) \
X (void , glVertexAttrib3fv, (GLuint index, const GLfloat *v)) \
X (void , glVertexAttrib4f, (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) \
X (void , glVertexAttrib4fv, (GLuint index, const GLfloat *v)) \
X (void , glVertexAttribPointer, (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer)) \
X (void , glViewport, (GLint x, GLint y, GLsizei width, GLsizei height))
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_0 \
X (void , glReadBuffer, (GLenum src)) \
X (void , glDrawRangeElements, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)) \
X (void , glTexImage3D, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)) \
X (void , glTexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)) \
X (void , glCopyTexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) \
X (void , glCompressedTexImage3D, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)) \
X (void , glCompressedTexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)) \
X (void , glGenQueries, (GLsizei n, GLuint *ids)) \
X (void , glDeleteQueries, (GLsizei n, const GLuint *ids)) \
X (GLboolean , glIsQuery, (GLuint id)) \
X (void , glBeginQuery, (GLenum target, GLuint id)) \
X (void , glEndQuery, (GLenum target)) \
X (void , glGetQueryiv, (GLenum target, GLenum pname, GLint *params)) \
X (void , glGetQueryObjectuiv, (GLuint id, GLenum pname, GLuint *params)) \
X (GLboolean , glUnmapBuffer, (GLenum target)) \
X (void , glGetBufferPointerv, (GLenum target, GLenum pname, void **params)) \
X (void , glDrawBuffers, (GLsizei n, const GLenum *bufs)) \
X (void , glUniformMatrix2x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUniformMatrix3x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUniformMatrix2x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUniformMatrix4x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUniformMatrix3x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUniformMatrix4x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glBlitFramebuffer, (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) \
X (void , glRenderbufferStorageMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \
X (void , glFramebufferTextureLayer, (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) \
X (void * , glMapBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)) \
X (void , glFlushMappedBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length)) \
X (void , glBindVertexArray, (GLuint array)) \
X (void , glDeleteVertexArrays, (GLsizei n, const GLuint *arrays)) \
X (void , glGenVertexArrays, (GLsizei n, GLuint *arrays)) \
X (GLboolean , glIsVertexArray, (GLuint array)) \
X (void , glGetIntegeri_v, (GLenum target, GLuint index, GLint *data)) \
X (void , glBeginTransformFeedback, (GLenum primitiveMode)) \
X (void , glEndTransformFeedback, ()) \
X (void , glBindBufferRange, (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) \
X (void , glBindBufferBase, (GLenum target, GLuint index, GLuint buffer)) \
X (void , glTransformFeedbackVaryings, (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode)) \
X (void , glGetTransformFeedbackVarying, (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)) \
X (void , glVertexAttribIPointer, (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)) \
X (void , glGetVertexAttribIiv, (GLuint index, GLenum pname, GLint *params)) \
X (void , glGetVertexAttribIuiv, (GLuint index, GLenum pname, GLuint *params)) \
X (void , glVertexAttribI4i, (GLuint index, GLint x, GLint y, GLint z, GLint w)) \
X (void , glVertexAttribI4ui, (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) \
X (void , glVertexAttribI4iv, (GLuint index, const GLint *v)) \
X (void , glVertexAttribI4uiv, (GLuint index, const GLuint *v)) \
X (void , glGetUniformuiv, (GLuint program, GLint location, GLuint *params)) \
X (GLint , glGetFragDataLocation, (GLuint program, const GLchar *name)) \
X (void , glUniform1ui, (GLint location, GLuint v0)) \
X (void , glUniform2ui, (GLint location, GLuint v0, GLuint v1)) \
X (void , glUniform3ui, (GLint location, GLuint v0, GLuint v1, GLuint v2)) \
X (void , glUniform4ui, (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) \
X (void , glUniform1uiv, (GLint location, GLsizei count, const GLuint *value)) \
X (void , glUniform2uiv, (GLint location, GLsizei count, const GLuint *value)) \
X (void , glUniform3uiv, (GLint location, GLsizei count, const GLuint *value)) \
X (void , glUniform4uiv, (GLint location, GLsizei count, const GLuint *value)) \
X (void , glClearBufferiv, (GLenum buffer, GLint drawbuffer, const GLint *value)) \
X (void , glClearBufferuiv, (GLenum buffer, GLint drawbuffer, const GLuint *value)) \
X (void , glClearBufferfv, (GLenum buffer, GLint drawbuffer, const GLfloat *value)) \
X (void , glClearBufferfi, (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)) \
X (const GLubyte *, glGetStringi, (GLenum name, GLuint index)) \
X (void , glCopyBufferSubData, (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)) \
X (void , glGetUniformIndices, (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices)) \
X (void , glGetActiveUniformsiv, (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)) \
X (GLuint , glGetUniformBlockIndex, (GLuint program, const GLchar *uniformBlockName)) \
X (void , glGetActiveUniformBlockiv, (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)) \
X (void , glGetActiveUniformBlockName, (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)) \
X (void , glUniformBlockBinding, (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)) \
X (void , glDrawArraysInstanced, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount)) \
X (void , glDrawElementsInstanced, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount)) \
X (GLsync , glFenceSync, (GLenum condition, GLbitfield flags)) \
X (GLboolean , glIsSync, (GLsync sync)) \
X (void , glDeleteSync, (GLsync sync)) \
X (GLenum , glClientWaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \
X (void , glWaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \
X (void , glGetInteger64v, (GLenum pname, GLint64 *data)) \
X (void , glGetSynciv, (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values)) \
X (void , glGetInteger64i_v, (GLenum target, GLuint index, GLint64 *data)) \
X (void , glGetBufferParameteri64v, (GLenum target, GLenum pname, GLint64 *params)) \
X (void , glGenSamplers, (GLsizei count, GLuint *samplers)) \
X (void , glDeleteSamplers, (GLsizei count, const GLuint *samplers)) \
X (GLboolean , glIsSampler, (GLuint sampler)) \
X (void , glBindSampler, (GLuint unit, GLuint sampler)) \
X (void , glSamplerParameteri, (GLuint sampler, GLenum pname, GLint param)) \
X (void , glSamplerParameteriv, (GLuint sampler, GLenum pname, const GLint *param)) \
X (void , glSamplerParameterf, (GLuint sampler, GLenum pname, GLfloat param)) \
X (void , glSamplerParameterfv, (GLuint sampler, GLenum pname, const GLfloat *param)) \
X (void , glGetSamplerParameteriv, (GLuint sampler, GLenum pname, GLint *params)) \
X (void , glGetSamplerParameterfv, (GLuint sampler, GLenum pname, GLfloat *params)) \
X (void , glVertexAttribDivisor, (GLuint index, GLuint divisor)) \
X (void , glBindTransformFeedback, (GLenum target, GLuint id)) \
X (void , glDeleteTransformFeedbacks, (GLsizei n, const GLuint *ids)) \
X (void , glGenTransformFeedbacks, (GLsizei n, GLuint *ids)) \
X (GLboolean , glIsTransformFeedback, (GLuint id)) \
X (void , glPauseTransformFeedback, ()) \
X (void , glResumeTransformFeedback, ()) \
X (void , glGetProgramBinary, (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)) \
X (void , glProgramBinary, (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)) \
X (void , glProgramParameteri, (GLuint program, GLenum pname, GLint value)) \
X (void , glInvalidateFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments)) \
X (void , glInvalidateSubFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)) \
X (void , glTexStorage2D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) \
X (void , glTexStorage3D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) \
X (void , glGetInternalformativ, (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params))
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_1 \
X (void , glDispatchCompute, (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)) \
X (void , glDispatchComputeIndirect, (GLintptr indirect)) \
X (void , glDrawArraysIndirect, (GLenum mode, const void *indirect)) \
X (void , glDrawElementsIndirect, (GLenum mode, GLenum type, const void *indirect)) \
X (void , glFramebufferParameteri, (GLenum target, GLenum pname, GLint param)) \
X (void , glGetFramebufferParameteriv, (GLenum target, GLenum pname, GLint *params)) \
X (void , glGetProgramInterfaceiv, (GLuint program, GLenum programInterface, GLenum pname, GLint *params)) \
X (GLuint , glGetProgramResourceIndex, (GLuint program, GLenum programInterface, const GLchar *name)) \
X (void , glGetProgramResourceName, (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name)) \
X (void , glGetProgramResourceiv, (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params)) \
X (GLint , glGetProgramResourceLocation, (GLuint program, GLenum programInterface, const GLchar *name)) \
X (void , glUseProgramStages, (GLuint pipeline, GLbitfield stages, GLuint program)) \
X (void , glActiveShaderProgram, (GLuint pipeline, GLuint program)) \
X (GLuint , glCreateShaderProgramv, (GLenum type, GLsizei count, const GLchar *const*strings)) \
X (void , glBindProgramPipeline, (GLuint pipeline)) \
X (void , glDeleteProgramPipelines, (GLsizei n, const GLuint *pipelines)) \
X (void , glGenProgramPipelines, (GLsizei n, GLuint *pipelines)) \
X (GLboolean , glIsProgramPipeline, (GLuint pipeline)) \
X (void , glGetProgramPipelineiv, (GLuint pipeline, GLenum pname, GLint *params)) \
X (void , glProgramUniform1i, (GLuint program, GLint location, GLint v0)) \
X (void , glProgramUniform2i, (GLuint program, GLint location, GLint v0, GLint v1)) \
X (void , glProgramUniform3i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2)) \
X (void , glProgramUniform4i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) \
X (void , glProgramUniform1ui, (GLuint program, GLint location, GLuint v0)) \
X (void , glProgramUniform2ui, (GLuint program, GLint location, GLuint v0, GLuint v1)) \
X (void , glProgramUniform3ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)) \
X (void , glProgramUniform4ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) \
X (void , glProgramUniform1f, (GLuint program, GLint location, GLfloat v0)) \
X (void , glProgramUniform2f, (GLuint program, GLint location, GLfloat v0, GLfloat v1)) \
X (void , glProgramUniform3f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) \
X (void , glProgramUniform4f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) \
X (void , glProgramUniform1iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
X (void , glProgramUniform2iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
X (void , glProgramUniform3iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
X (void , glProgramUniform4iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
X (void , glProgramUniform1uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
X (void , glProgramUniform2uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
X (void , glProgramUniform3uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
X (void , glProgramUniform4uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
X (void , glProgramUniform1fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
X (void , glProgramUniform2fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
X (void , glProgramUniform3fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
X (void , glProgramUniform4fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
X (void , glProgramUniformMatrix2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix2x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix3x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix2x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix4x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix3x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix4x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glValidateProgramPipeline, (GLuint pipeline)) \
X (void , glGetProgramPipelineInfoLog, (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) \
X (void , glBindImageTexture, (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)) \
X (void , glGetBooleani_v, (GLenum target, GLuint index, GLboolean *data)) \
X (void , glMemoryBarrier, (GLbitfield barriers)) \
X (void , glMemoryBarrierByRegion, (GLbitfield barriers)) \
X (void , glTexStorage2DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)) \
X (void , glGetMultisamplefv, (GLenum pname, GLuint index, GLfloat *val)) \
X (void , glSampleMaski, (GLuint maskNumber, GLbitfield mask)) \
X (void , glGetTexLevelParameteriv, (GLenum target, GLint level, GLenum pname, GLint *params)) \
X (void , glGetTexLevelParameterfv, (GLenum target, GLint level, GLenum pname, GLfloat *params)) \
X (void , glBindVertexBuffer, (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)) \
X (void , glVertexAttribFormat, (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)) \
X (void , glVertexAttribIFormat, (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) \
X (void , glVertexAttribBinding, (GLuint attribindex, GLuint bindingindex)) \
X (void , glVertexBindingDivisor, (GLuint bindingindex, GLuint divisor))
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_2 \
X (void , glBlendBarrier, ()) \
X (void , glCopyImageSubData, (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)) \
X (void , glDebugMessageControl, (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled)) \
X (void , glDebugMessageInsert, (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf)) \
X (void , glDebugMessageCallback, (GLDEBUGPROC callback, const void *userParam)) \
X (GLuint , glGetDebugMessageLog, (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog)) \
X (void , glPushDebugGroup, (GLenum source, GLuint id, GLsizei length, const GLchar *message)) \
X (void , glPopDebugGroup, ()) \
X (void , glObjectLabel, (GLenum identifier, GLuint name, GLsizei length, const GLchar *label)) \
X (void , glGetObjectLabel, (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label)) \
X (void , glObjectPtrLabel, (const void *ptr, GLsizei length, const GLchar *label)) \
X (void , glGetObjectPtrLabel, (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label)) \
X (void , glGetPointerv, (GLenum pname, void **params)) \
X (void , glEnablei, (GLenum target, GLuint index)) \
X (void , glDisablei, (GLenum target, GLuint index)) \
X (void , glBlendEquationi, (GLuint buf, GLenum mode)) \
X (void , glBlendEquationSeparatei, (GLuint buf, GLenum modeRGB, GLenum modeAlpha)) \
X (void , glBlendFunci, (GLuint buf, GLenum src, GLenum dst)) \
X (void , glBlendFuncSeparatei, (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)) \
X (void , glColorMaski, (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)) \
X (GLboolean , glIsEnabledi, (GLenum target, GLuint index)) \
X (void , glDrawElementsBaseVertex, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex)) \
X (void , glDrawRangeElementsBaseVertex, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex)) \
X (void , glDrawElementsInstancedBaseVertex, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex)) \
X (void , glFramebufferTexture, (GLenum target, GLenum attachment, GLuint texture, GLint level)) \
X (void , glPrimitiveBoundingBox, (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)) \
X (GLenum , glGetGraphicsResetStatus, ()) \
X (void , glReadnPixels, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data)) \
X (void , glGetnUniformfv, (GLuint program, GLint location, GLsizei bufSize, GLfloat *params)) \
X (void , glGetnUniformiv, (GLuint program, GLint location, GLsizei bufSize, GLint *params)) \
X (void , glGetnUniformuiv, (GLuint program, GLint location, GLsizei bufSize, GLuint *params)) \
X (void , glMinSampleShading, (GLfloat value)) \
X (void , glPatchParameteri, (GLenum pname, GLint value)) \
X (void , glTexParameterIiv, (GLenum target, GLenum pname, const GLint *params)) \
X (void , glTexParameterIuiv, (GLenum target, GLenum pname, const GLuint *params)) \
X (void , glGetTexParameterIiv, (GLenum target, GLenum pname, GLint *params)) \
X (void , glGetTexParameterIuiv, (GLenum target, GLenum pname, GLuint *params)) \
X (void , glSamplerParameterIiv, (GLuint sampler, GLenum pname, const GLint *param)) \
X (void , glSamplerParameterIuiv, (GLuint sampler, GLenum pname, const GLuint *param)) \
X (void , glGetSamplerParameterIiv, (GLuint sampler, GLenum pname, GLint *params)) \
X (void , glGetSamplerParameterIuiv, (GLuint sampler, GLenum pname, GLuint *params)) \
X (void , glTexBuffer, (GLenum target, GLenum internalformat, GLuint buffer)) \
X (void , glTexBufferRange, (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)) \
X (void , glTexStorage3DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations))
#define JUCE_GL_FUNCTIONS_GL_AMD_framebuffer_multisample_advanced \
X (void , glRenderbufferStorageMultisampleAdvancedAMD, (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height)) \
X (void , glNamedRenderbufferStorageMultisampleAdvancedAMD, (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height))
#define JUCE_GL_FUNCTIONS_GL_AMD_performance_monitor \
X (void , glGetPerfMonitorGroupsAMD, (GLint *numGroups, GLsizei groupsSize, GLuint *groups)) \
X (void , glGetPerfMonitorCountersAMD, (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters)) \
X (void , glGetPerfMonitorGroupStringAMD, (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString)) \
X (void , glGetPerfMonitorCounterStringAMD, (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString)) \
X (void , glGetPerfMonitorCounterInfoAMD, (GLuint group, GLuint counter, GLenum pname, void *data)) \
X (void , glGenPerfMonitorsAMD, (GLsizei n, GLuint *monitors)) \
X (void , glDeletePerfMonitorsAMD, (GLsizei n, GLuint *monitors)) \
X (void , glSelectPerfMonitorCountersAMD, (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList)) \
X (void , glBeginPerfMonitorAMD, (GLuint monitor)) \
X (void , glEndPerfMonitorAMD, (GLuint monitor)) \
X (void , glGetPerfMonitorCounterDataAMD, (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten))
#define JUCE_GL_FUNCTIONS_GL_ANGLE_framebuffer_blit \
X (void , glBlitFramebufferANGLE, (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter))
#define JUCE_GL_FUNCTIONS_GL_ANGLE_framebuffer_multisample \
X (void , glRenderbufferStorageMultisampleANGLE, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height))
#define JUCE_GL_FUNCTIONS_GL_ANGLE_instanced_arrays \
X (void , glDrawArraysInstancedANGLE, (GLenum mode, GLint first, GLsizei count, GLsizei primcount)) \
X (void , glDrawElementsInstancedANGLE, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount)) \
X (void , glVertexAttribDivisorANGLE, (GLuint index, GLuint divisor))
#define JUCE_GL_FUNCTIONS_GL_ANGLE_translated_shader_source \
X (void , glGetTranslatedShaderSourceANGLE, (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source))
#define JUCE_GL_FUNCTIONS_GL_APPLE_copy_texture_levels \
X (void , glCopyTextureLevelsAPPLE, (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount))
#define JUCE_GL_FUNCTIONS_GL_APPLE_framebuffer_multisample \
X (void , glRenderbufferStorageMultisampleAPPLE, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \
X (void , glResolveMultisampleFramebufferAPPLE, ())
#define JUCE_GL_FUNCTIONS_GL_APPLE_sync \
X (GLsync , glFenceSyncAPPLE, (GLenum condition, GLbitfield flags)) \
X (GLboolean , glIsSyncAPPLE, (GLsync sync)) \
X (void , glDeleteSyncAPPLE, (GLsync sync)) \
X (GLenum , glClientWaitSyncAPPLE, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \
X (void , glWaitSyncAPPLE, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \
X (void , glGetInteger64vAPPLE, (GLenum pname, GLint64 *params)) \
X (void , glGetSyncivAPPLE, (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values))
#define JUCE_GL_FUNCTIONS_GL_EXT_EGL_image_storage \
X (void , glEGLImageTargetTexStorageEXT, (GLenum target, GLeglImageOES image, const GLint* attrib_list)) \
X (void , glEGLImageTargetTextureStorageEXT, (GLuint texture, GLeglImageOES image, const GLint* attrib_list))
#define JUCE_GL_FUNCTIONS_GL_EXT_base_instance \
X (void , glDrawArraysInstancedBaseInstanceEXT, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance)) \
X (void , glDrawElementsInstancedBaseInstanceEXT, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance)) \
X (void , glDrawElementsInstancedBaseVertexBaseInstanceEXT, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance))
#define JUCE_GL_FUNCTIONS_GL_EXT_blend_func_extended \
X (void , glBindFragDataLocationIndexedEXT, (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name)) \
X (void , glBindFragDataLocationEXT, (GLuint program, GLuint color, const GLchar *name)) \
X (GLint , glGetProgramResourceLocationIndexEXT, (GLuint program, GLenum programInterface, const GLchar *name)) \
X (GLint , glGetFragDataIndexEXT, (GLuint program, const GLchar *name))
#define JUCE_GL_FUNCTIONS_GL_EXT_blend_minmax \
X (void , glBlendEquationEXT, (GLenum mode))
#define JUCE_GL_FUNCTIONS_GL_EXT_buffer_storage \
X (void , glBufferStorageEXT, (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags))
#define JUCE_GL_FUNCTIONS_GL_EXT_clear_texture \
X (void , glClearTexImageEXT, (GLuint texture, GLint level, GLenum format, GLenum type, const void *data)) \
X (void , glClearTexSubImageEXT, (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data))
#define JUCE_GL_FUNCTIONS_GL_EXT_clip_control \
X (void , glClipControlEXT, (GLenum origin, GLenum depth))
#define JUCE_GL_FUNCTIONS_GL_EXT_copy_image \
X (void , glCopyImageSubDataEXT, (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth))
#define JUCE_GL_FUNCTIONS_GL_EXT_debug_label \
X (void , glLabelObjectEXT, (GLenum type, GLuint object, GLsizei length, const GLchar *label)) \
X (void , glGetObjectLabelEXT, (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label))
#define JUCE_GL_FUNCTIONS_GL_EXT_debug_marker \
X (void , glInsertEventMarkerEXT, (GLsizei length, const GLchar *marker)) \
X (void , glPushGroupMarkerEXT, (GLsizei length, const GLchar *marker)) \
X (void , glPopGroupMarkerEXT, ())
#define JUCE_GL_FUNCTIONS_GL_EXT_discard_framebuffer \
X (void , glDiscardFramebufferEXT, (GLenum target, GLsizei numAttachments, const GLenum *attachments))
#define JUCE_GL_FUNCTIONS_GL_EXT_disjoint_timer_query \
X (void , glGenQueriesEXT, (GLsizei n, GLuint *ids)) \
X (void , glDeleteQueriesEXT, (GLsizei n, const GLuint *ids)) \
X (GLboolean , glIsQueryEXT, (GLuint id)) \
X (void , glBeginQueryEXT, (GLenum target, GLuint id)) \
X (void , glEndQueryEXT, (GLenum target)) \
X (void , glQueryCounterEXT, (GLuint id, GLenum target)) \
X (void , glGetQueryivEXT, (GLenum target, GLenum pname, GLint *params)) \
X (void , glGetQueryObjectivEXT, (GLuint id, GLenum pname, GLint *params)) \
X (void , glGetQueryObjectuivEXT, (GLuint id, GLenum pname, GLuint *params)) \
X (void , glGetQueryObjecti64vEXT, (GLuint id, GLenum pname, GLint64 *params)) \
X (void , glGetQueryObjectui64vEXT, (GLuint id, GLenum pname, GLuint64 *params)) \
X (void , glGetInteger64vEXT, (GLenum pname, GLint64 *data))
#define JUCE_GL_FUNCTIONS_GL_EXT_draw_buffers \
X (void , glDrawBuffersEXT, (GLsizei n, const GLenum *bufs))
#define JUCE_GL_FUNCTIONS_GL_EXT_draw_buffers_indexed \
X (void , glEnableiEXT, (GLenum target, GLuint index)) \
X (void , glDisableiEXT, (GLenum target, GLuint index)) \
X (void , glBlendEquationiEXT, (GLuint buf, GLenum mode)) \
X (void , glBlendEquationSeparateiEXT, (GLuint buf, GLenum modeRGB, GLenum modeAlpha)) \
X (void , glBlendFunciEXT, (GLuint buf, GLenum src, GLenum dst)) \
X (void , glBlendFuncSeparateiEXT, (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)) \
X (void , glColorMaskiEXT, (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)) \
X (GLboolean , glIsEnablediEXT, (GLenum target, GLuint index))
#define JUCE_GL_FUNCTIONS_GL_EXT_draw_elements_base_vertex \
X (void , glDrawElementsBaseVertexEXT, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex)) \
X (void , glDrawRangeElementsBaseVertexEXT, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex)) \
X (void , glDrawElementsInstancedBaseVertexEXT, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex)) \
X (void , glMultiDrawElementsBaseVertexEXT, (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex))
#define JUCE_GL_FUNCTIONS_GL_EXT_draw_instanced \
X (void , glDrawArraysInstancedEXT, (GLenum mode, GLint start, GLsizei count, GLsizei primcount)) \
X (void , glDrawElementsInstancedEXT, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount))
#define JUCE_GL_FUNCTIONS_GL_EXT_draw_transform_feedback \
X (void , glDrawTransformFeedbackEXT, (GLenum mode, GLuint id)) \
X (void , glDrawTransformFeedbackInstancedEXT, (GLenum mode, GLuint id, GLsizei instancecount))
#define JUCE_GL_FUNCTIONS_GL_EXT_external_buffer \
X (void , glBufferStorageExternalEXT, (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags)) \
X (void , glNamedBufferStorageExternalEXT, (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags))
#define JUCE_GL_FUNCTIONS_GL_EXT_geometry_shader \
X (void , glFramebufferTextureEXT, (GLenum target, GLenum attachment, GLuint texture, GLint level))
#define JUCE_GL_FUNCTIONS_GL_EXT_instanced_arrays \
X (void , glVertexAttribDivisorEXT, (GLuint index, GLuint divisor))
#define JUCE_GL_FUNCTIONS_GL_EXT_map_buffer_range \
X (void * , glMapBufferRangeEXT, (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)) \
X (void , glFlushMappedBufferRangeEXT, (GLenum target, GLintptr offset, GLsizeiptr length))
#define JUCE_GL_FUNCTIONS_GL_EXT_memory_object \
X (void , glGetUnsignedBytevEXT, (GLenum pname, GLubyte *data)) \
X (void , glGetUnsignedBytei_vEXT, (GLenum target, GLuint index, GLubyte *data)) \
X (void , glDeleteMemoryObjectsEXT, (GLsizei n, const GLuint *memoryObjects)) \
X (GLboolean , glIsMemoryObjectEXT, (GLuint memoryObject)) \
X (void , glCreateMemoryObjectsEXT, (GLsizei n, GLuint *memoryObjects)) \
X (void , glMemoryObjectParameterivEXT, (GLuint memoryObject, GLenum pname, const GLint *params)) \
X (void , glGetMemoryObjectParameterivEXT, (GLuint memoryObject, GLenum pname, GLint *params)) \
X (void , glTexStorageMem2DEXT, (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset)) \
X (void , glTexStorageMem2DMultisampleEXT, (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset)) \
X (void , glTexStorageMem3DEXT, (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset)) \
X (void , glTexStorageMem3DMultisampleEXT, (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset)) \
X (void , glBufferStorageMemEXT, (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset)) \
X (void , glTextureStorageMem2DEXT, (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset)) \
X (void , glTextureStorageMem2DMultisampleEXT, (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset)) \
X (void , glTextureStorageMem3DEXT, (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset)) \
X (void , glTextureStorageMem3DMultisampleEXT, (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset)) \
X (void , glNamedBufferStorageMemEXT, (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset)) \
X (void , glTexStorageMem1DEXT, (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset)) \
X (void , glTextureStorageMem1DEXT, (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset))
#define JUCE_GL_FUNCTIONS_GL_EXT_memory_object_fd \
X (void , glImportMemoryFdEXT, (GLuint memory, GLuint64 size, GLenum handleType, GLint fd))
#define JUCE_GL_FUNCTIONS_GL_EXT_memory_object_win32 \
X (void , glImportMemoryWin32HandleEXT, (GLuint memory, GLuint64 size, GLenum handleType, void *handle)) \
X (void , glImportMemoryWin32NameEXT, (GLuint memory, GLuint64 size, GLenum handleType, const void *name))
#define JUCE_GL_FUNCTIONS_GL_EXT_multi_draw_arrays \
X (void , glMultiDrawArraysEXT, (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount)) \
X (void , glMultiDrawElementsEXT, (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount))
#define JUCE_GL_FUNCTIONS_GL_EXT_multi_draw_indirect \
X (void , glMultiDrawArraysIndirectEXT, (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride)) \
X (void , glMultiDrawElementsIndirectEXT, (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride))
#define JUCE_GL_FUNCTIONS_GL_EXT_multisampled_render_to_texture \
X (void , glRenderbufferStorageMultisampleEXT, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \
X (void , glFramebufferTexture2DMultisampleEXT, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples))
#define JUCE_GL_FUNCTIONS_GL_EXT_multiview_draw_buffers \
X (void , glReadBufferIndexedEXT, (GLenum src, GLint index)) \
X (void , glDrawBuffersIndexedEXT, (GLint n, const GLenum *location, const GLint *indices)) \
X (void , glGetIntegeri_vEXT, (GLenum target, GLuint index, GLint *data))
#define JUCE_GL_FUNCTIONS_GL_EXT_polygon_offset_clamp \
X (void , glPolygonOffsetClampEXT, (GLfloat factor, GLfloat units, GLfloat clamp))
#define JUCE_GL_FUNCTIONS_GL_EXT_primitive_bounding_box \
X (void , glPrimitiveBoundingBoxEXT, (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW))
#define JUCE_GL_FUNCTIONS_GL_EXT_raster_multisample \
X (void , glRasterSamplesEXT, (GLuint samples, GLboolean fixedsamplelocations))
#define JUCE_GL_FUNCTIONS_GL_EXT_robustness \
X (GLenum , glGetGraphicsResetStatusEXT, ()) \
X (void , glReadnPixelsEXT, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data)) \
X (void , glGetnUniformfvEXT, (GLuint program, GLint location, GLsizei bufSize, GLfloat *params)) \
X (void , glGetnUniformivEXT, (GLuint program, GLint location, GLsizei bufSize, GLint *params))
#define JUCE_GL_FUNCTIONS_GL_EXT_semaphore \
X (void , glGenSemaphoresEXT, (GLsizei n, GLuint *semaphores)) \
X (void , glDeleteSemaphoresEXT, (GLsizei n, const GLuint *semaphores)) \
X (GLboolean , glIsSemaphoreEXT, (GLuint semaphore)) \
X (void , glSemaphoreParameterui64vEXT, (GLuint semaphore, GLenum pname, const GLuint64 *params)) \
X (void , glGetSemaphoreParameterui64vEXT, (GLuint semaphore, GLenum pname, GLuint64 *params)) \
X (void , glWaitSemaphoreEXT, (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts)) \
X (void , glSignalSemaphoreEXT, (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts))
#define JUCE_GL_FUNCTIONS_GL_EXT_semaphore_fd \
X (void , glImportSemaphoreFdEXT, (GLuint semaphore, GLenum handleType, GLint fd))
#define JUCE_GL_FUNCTIONS_GL_EXT_semaphore_win32 \
X (void , glImportSemaphoreWin32HandleEXT, (GLuint semaphore, GLenum handleType, void *handle)) \
X (void , glImportSemaphoreWin32NameEXT, (GLuint semaphore, GLenum handleType, const void *name))
#define JUCE_GL_FUNCTIONS_GL_EXT_separate_shader_objects \
X (void , glUseShaderProgramEXT, (GLenum type, GLuint program)) \
X (void , glActiveProgramEXT, (GLuint program)) \
X (GLuint , glCreateShaderProgramEXT, (GLenum type, const GLchar *string)) \
X (void , glActiveShaderProgramEXT, (GLuint pipeline, GLuint program)) \
X (void , glBindProgramPipelineEXT, (GLuint pipeline)) \
X (GLuint , glCreateShaderProgramvEXT, (GLenum type, GLsizei count, const GLchar **strings)) \
X (void , glDeleteProgramPipelinesEXT, (GLsizei n, const GLuint *pipelines)) \
X (void , glGenProgramPipelinesEXT, (GLsizei n, GLuint *pipelines)) \
X (void , glGetProgramPipelineInfoLogEXT, (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) \
X (void , glGetProgramPipelineivEXT, (GLuint pipeline, GLenum pname, GLint *params)) \
X (GLboolean , glIsProgramPipelineEXT, (GLuint pipeline)) \
X (void , glProgramParameteriEXT, (GLuint program, GLenum pname, GLint value)) \
X (void , glProgramUniform1fEXT, (GLuint program, GLint location, GLfloat v0)) \
X (void , glProgramUniform1fvEXT, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
X (void , glProgramUniform1iEXT, (GLuint program, GLint location, GLint v0)) \
X (void , glProgramUniform1ivEXT, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
X (void , glProgramUniform2fEXT, (GLuint program, GLint location, GLfloat v0, GLfloat v1)) \
X (void , glProgramUniform2fvEXT, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
X (void , glProgramUniform2iEXT, (GLuint program, GLint location, GLint v0, GLint v1)) \
X (void , glProgramUniform2ivEXT, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
X (void , glProgramUniform3fEXT, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) \
X (void , glProgramUniform3fvEXT, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
X (void , glProgramUniform3iEXT, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2)) \
X (void , glProgramUniform3ivEXT, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
X (void , glProgramUniform4fEXT, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) \
X (void , glProgramUniform4fvEXT, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
X (void , glProgramUniform4iEXT, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) \
X (void , glProgramUniform4ivEXT, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
X (void , glProgramUniformMatrix2fvEXT, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix3fvEXT, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix4fvEXT, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUseProgramStagesEXT, (GLuint pipeline, GLbitfield stages, GLuint program)) \
X (void , glValidateProgramPipelineEXT, (GLuint pipeline)) \
X (void , glProgramUniform1uiEXT, (GLuint program, GLint location, GLuint v0)) \
X (void , glProgramUniform2uiEXT, (GLuint program, GLint location, GLuint v0, GLuint v1)) \
X (void , glProgramUniform3uiEXT, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)) \
X (void , glProgramUniform4uiEXT, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) \
X (void , glProgramUniform1uivEXT, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
X (void , glProgramUniform2uivEXT, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
X (void , glProgramUniform3uivEXT, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
X (void , glProgramUniform4uivEXT, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
X (void , glProgramUniformMatrix2x3fvEXT, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix3x2fvEXT, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix2x4fvEXT, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix4x2fvEXT, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix3x4fvEXT, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glProgramUniformMatrix4x3fvEXT, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
#define JUCE_GL_FUNCTIONS_GL_EXT_shader_framebuffer_fetch_non_coherent \
X (void , glFramebufferFetchBarrierEXT, ())
#define JUCE_GL_FUNCTIONS_GL_EXT_shader_pixel_local_storage2 \
X (void , glFramebufferPixelLocalStorageSizeEXT, (GLuint target, GLsizei size)) \
X (GLsizei , glGetFramebufferPixelLocalStorageSizeEXT, (GLuint target)) \
X (void , glClearPixelLocalStorageuiEXT, (GLsizei offset, GLsizei n, const GLuint *values))
#define JUCE_GL_FUNCTIONS_GL_EXT_sparse_texture \
X (void , glTexPageCommitmentEXT, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit))
#define JUCE_GL_FUNCTIONS_GL_EXT_tessellation_shader \
X (void , glPatchParameteriEXT, (GLenum pname, GLint value))
#define JUCE_GL_FUNCTIONS_GL_EXT_texture_border_clamp \
X (void , glTexParameterIivEXT, (GLenum target, GLenum pname, const GLint *params)) \
X (void , glTexParameterIuivEXT, (GLenum target, GLenum pname, const GLuint *params)) \
X (void , glGetTexParameterIivEXT, (GLenum target, GLenum pname, GLint *params)) \
X (void , glGetTexParameterIuivEXT, (GLenum target, GLenum pname, GLuint *params)) \
X (void , glSamplerParameterIivEXT, (GLuint sampler, GLenum pname, const GLint *param)) \
X (void , glSamplerParameterIuivEXT, (GLuint sampler, GLenum pname, const GLuint *param)) \
X (void , glGetSamplerParameterIivEXT, (GLuint sampler, GLenum pname, GLint *params)) \
X (void , glGetSamplerParameterIuivEXT, (GLuint sampler, GLenum pname, GLuint *params))
#define JUCE_GL_FUNCTIONS_GL_EXT_texture_buffer \
X (void , glTexBufferEXT, (GLenum target, GLenum internalformat, GLuint buffer)) \
X (void , glTexBufferRangeEXT, (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size))
#define JUCE_GL_FUNCTIONS_GL_EXT_texture_storage \
X (void , glTexStorage1DEXT, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)) \
X (void , glTexStorage2DEXT, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) \
X (void , glTexStorage3DEXT, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) \
X (void , glTextureStorage1DEXT, (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)) \
X (void , glTextureStorage2DEXT, (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) \
X (void , glTextureStorage3DEXT, (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth))
#define JUCE_GL_FUNCTIONS_GL_EXT_texture_view \
X (void , glTextureViewEXT, (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers))
#define JUCE_GL_FUNCTIONS_GL_NV_timeline_semaphore \
X (void , glCreateSemaphoresNV, (GLsizei n, GLuint *semaphores)) \
X (void , glSemaphoreParameterivNV, (GLuint semaphore, GLenum pname, const GLint *params)) \
X (void , glGetSemaphoreParameterivNV, (GLuint semaphore, GLenum pname, GLint *params))
#define JUCE_GL_FUNCTIONS_GL_EXT_win32_keyed_mutex \
X (GLboolean , glAcquireKeyedMutexWin32EXT, (GLuint memory, GLuint64 key, GLuint timeout)) \
X (GLboolean , glReleaseKeyedMutexWin32EXT, (GLuint memory, GLuint64 key))
#define JUCE_GL_FUNCTIONS_GL_EXT_window_rectangles \
X (void , glWindowRectanglesEXT, (GLenum mode, GLsizei count, const GLint *box))
#define JUCE_GL_FUNCTIONS_GL_IMG_bindless_texture \
X (GLuint64 , glGetTextureHandleIMG, (GLuint texture)) \
X (GLuint64 , glGetTextureSamplerHandleIMG, (GLuint texture, GLuint sampler)) \
X (void , glUniformHandleui64IMG, (GLint location, GLuint64 value)) \
X (void , glUniformHandleui64vIMG, (GLint location, GLsizei count, const GLuint64 *value)) \
X (void , glProgramUniformHandleui64IMG, (GLuint program, GLint location, GLuint64 value)) \
X (void , glProgramUniformHandleui64vIMG, (GLuint program, GLint location, GLsizei count, const GLuint64 *values))
#define JUCE_GL_FUNCTIONS_GL_IMG_framebuffer_downsample \
X (void , glFramebufferTexture2DDownsampleIMG, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale)) \
X (void , glFramebufferTextureLayerDownsampleIMG, (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale))
#define JUCE_GL_FUNCTIONS_GL_IMG_multisampled_render_to_texture \
X (void , glRenderbufferStorageMultisampleIMG, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \
X (void , glFramebufferTexture2DMultisampleIMG, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples))
#define JUCE_GL_FUNCTIONS_GL_INTEL_framebuffer_CMAA \
X (void , glApplyFramebufferAttachmentCMAAINTEL, ())
#define JUCE_GL_FUNCTIONS_GL_INTEL_performance_query \
X (void , glBeginPerfQueryINTEL, (GLuint queryHandle)) \
X (void , glCreatePerfQueryINTEL, (GLuint queryId, GLuint *queryHandle)) \
X (void , glDeletePerfQueryINTEL, (GLuint queryHandle)) \
X (void , glEndPerfQueryINTEL, (GLuint queryHandle)) \
X (void , glGetFirstPerfQueryIdINTEL, (GLuint *queryId)) \
X (void , glGetNextPerfQueryIdINTEL, (GLuint queryId, GLuint *nextQueryId)) \
X (void , glGetPerfCounterInfoINTEL, (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue)) \
X (void , glGetPerfQueryDataINTEL, (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten)) \
X (void , glGetPerfQueryIdByNameINTEL, (GLchar *queryName, GLuint *queryId)) \
X (void , glGetPerfQueryInfoINTEL, (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask))
#define JUCE_GL_FUNCTIONS_GL_KHR_blend_equation_advanced \
X (void , glBlendBarrierKHR, ())
#define JUCE_GL_FUNCTIONS_GL_KHR_debug \
X (void , glDebugMessageControlKHR, (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled)) \
X (void , glDebugMessageInsertKHR, (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf)) \
X (void , glDebugMessageCallbackKHR, (GLDEBUGPROCKHR callback, const void *userParam)) \
X (GLuint , glGetDebugMessageLogKHR, (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog)) \
X (void , glPushDebugGroupKHR, (GLenum source, GLuint id, GLsizei length, const GLchar *message)) \
X (void , glPopDebugGroupKHR, ()) \
X (void , glObjectLabelKHR, (GLenum identifier, GLuint name, GLsizei length, const GLchar *label)) \
X (void , glGetObjectLabelKHR, (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label)) \
X (void , glObjectPtrLabelKHR, (const void *ptr, GLsizei length, const GLchar *label)) \
X (void , glGetObjectPtrLabelKHR, (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label)) \
X (void , glGetPointervKHR, (GLenum pname, void **params))
#define JUCE_GL_FUNCTIONS_GL_KHR_robustness \
X (GLenum , glGetGraphicsResetStatusKHR, ()) \
X (void , glReadnPixelsKHR, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data)) \
X (void , glGetnUniformfvKHR, (GLuint program, GLint location, GLsizei bufSize, GLfloat *params)) \
X (void , glGetnUniformivKHR, (GLuint program, GLint location, GLsizei bufSize, GLint *params)) \
X (void , glGetnUniformuivKHR, (GLuint program, GLint location, GLsizei bufSize, GLuint *params))
#define JUCE_GL_FUNCTIONS_GL_KHR_parallel_shader_compile \
X (void , glMaxShaderCompilerThreadsKHR, (GLuint count))
#define JUCE_GL_FUNCTIONS_GL_MESA_framebuffer_flip_y \
X (void , glFramebufferParameteriMESA, (GLenum target, GLenum pname, GLint param)) \
X (void , glGetFramebufferParameterivMESA, (GLenum target, GLenum pname, GLint *params))
#define JUCE_GL_FUNCTIONS_GL_NV_bindless_texture \
X (GLuint64 , glGetTextureHandleNV, (GLuint texture)) \
X (GLuint64 , glGetTextureSamplerHandleNV, (GLuint texture, GLuint sampler)) \
X (void , glMakeTextureHandleResidentNV, (GLuint64 handle)) \
X (void , glMakeTextureHandleNonResidentNV, (GLuint64 handle)) \
X (GLuint64 , glGetImageHandleNV, (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format)) \
X (void , glMakeImageHandleResidentNV, (GLuint64 handle, GLenum access)) \
X (void , glMakeImageHandleNonResidentNV, (GLuint64 handle)) \
X (void , glUniformHandleui64NV, (GLint location, GLuint64 value)) \
X (void , glUniformHandleui64vNV, (GLint location, GLsizei count, const GLuint64 *value)) \
X (void , glProgramUniformHandleui64NV, (GLuint program, GLint location, GLuint64 value)) \
X (void , glProgramUniformHandleui64vNV, (GLuint program, GLint location, GLsizei count, const GLuint64 *values)) \
X (GLboolean , glIsTextureHandleResidentNV, (GLuint64 handle)) \
X (GLboolean , glIsImageHandleResidentNV, (GLuint64 handle))
#define JUCE_GL_FUNCTIONS_GL_NV_blend_equation_advanced \
X (void , glBlendParameteriNV, (GLenum pname, GLint value)) \
X (void , glBlendBarrierNV, ())
#define JUCE_GL_FUNCTIONS_GL_NV_clip_space_w_scaling \
X (void , glViewportPositionWScaleNV, (GLuint index, GLfloat xcoeff, GLfloat ycoeff))
#define JUCE_GL_FUNCTIONS_GL_NV_conditional_render \
X (void , glBeginConditionalRenderNV, (GLuint id, GLenum mode)) \
X (void , glEndConditionalRenderNV, ())
#define JUCE_GL_FUNCTIONS_GL_NV_conservative_raster \
X (void , glSubpixelPrecisionBiasNV, (GLuint xbits, GLuint ybits))
#define JUCE_GL_FUNCTIONS_GL_NV_conservative_raster_pre_snap_triangles \
X (void , glConservativeRasterParameteriNV, (GLenum pname, GLint param))
#define JUCE_GL_FUNCTIONS_GL_NV_copy_buffer \
X (void , glCopyBufferSubDataNV, (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size))
#define JUCE_GL_FUNCTIONS_GL_NV_coverage_sample \
X (void , glCoverageMaskNV, (GLboolean mask)) \
X (void , glCoverageOperationNV, (GLenum operation))
#define JUCE_GL_FUNCTIONS_GL_NV_draw_buffers \
X (void , glDrawBuffersNV, (GLsizei n, const GLenum *bufs))
#define JUCE_GL_FUNCTIONS_GL_NV_draw_instanced \
X (void , glDrawArraysInstancedNV, (GLenum mode, GLint first, GLsizei count, GLsizei primcount)) \
X (void , glDrawElementsInstancedNV, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount))
#define JUCE_GL_FUNCTIONS_GL_NV_draw_vulkan_image \
X (void , glDrawVkImageNV, (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1)) \
X (GLVULKANPROCNV, glGetVkProcAddrNV, (const GLchar *name)) \
X (void , glWaitVkSemaphoreNV, (GLuint64 vkSemaphore)) \
X (void , glSignalVkSemaphoreNV, (GLuint64 vkSemaphore)) \
X (void , glSignalVkFenceNV, (GLuint64 vkFence))
#define JUCE_GL_FUNCTIONS_GL_NV_fence \
X (void , glDeleteFencesNV, (GLsizei n, const GLuint *fences)) \
X (void , glGenFencesNV, (GLsizei n, GLuint *fences)) \
X (GLboolean , glIsFenceNV, (GLuint fence)) \
X (GLboolean , glTestFenceNV, (GLuint fence)) \
X (void , glGetFenceivNV, (GLuint fence, GLenum pname, GLint *params)) \
X (void , glFinishFenceNV, (GLuint fence)) \
X (void , glSetFenceNV, (GLuint fence, GLenum condition))
#define JUCE_GL_FUNCTIONS_GL_NV_fragment_coverage_to_color \
X (void , glFragmentCoverageColorNV, (GLuint color))
#define JUCE_GL_FUNCTIONS_GL_NV_framebuffer_blit \
X (void , glBlitFramebufferNV, (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter))
#define JUCE_GL_FUNCTIONS_GL_NV_framebuffer_mixed_samples \
X (void , glCoverageModulationTableNV, (GLsizei n, const GLfloat *v)) \
X (void , glGetCoverageModulationTableNV, (GLsizei bufSize, GLfloat *v)) \
X (void , glCoverageModulationNV, (GLenum components))
#define JUCE_GL_FUNCTIONS_GL_NV_framebuffer_multisample \
X (void , glRenderbufferStorageMultisampleNV, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height))
#define JUCE_GL_FUNCTIONS_GL_NV_gpu_shader5 \
X (void , glUniform1i64NV, (GLint location, GLint64EXT x)) \
X (void , glUniform2i64NV, (GLint location, GLint64EXT x, GLint64EXT y)) \
X (void , glUniform3i64NV, (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z)) \
X (void , glUniform4i64NV, (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w)) \
X (void , glUniform1i64vNV, (GLint location, GLsizei count, const GLint64EXT *value)) \
X (void , glUniform2i64vNV, (GLint location, GLsizei count, const GLint64EXT *value)) \
X (void , glUniform3i64vNV, (GLint location, GLsizei count, const GLint64EXT *value)) \
X (void , glUniform4i64vNV, (GLint location, GLsizei count, const GLint64EXT *value)) \
X (void , glUniform1ui64NV, (GLint location, GLuint64EXT x)) \
X (void , glUniform2ui64NV, (GLint location, GLuint64EXT x, GLuint64EXT y)) \
X (void , glUniform3ui64NV, (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z)) \
X (void , glUniform4ui64NV, (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w)) \
X (void , glUniform1ui64vNV, (GLint location, GLsizei count, const GLuint64EXT *value)) \
X (void , glUniform2ui64vNV, (GLint location, GLsizei count, const GLuint64EXT *value)) \
X (void , glUniform3ui64vNV, (GLint location, GLsizei count, const GLuint64EXT *value)) \
X (void , glUniform4ui64vNV, (GLint location, GLsizei count, const GLuint64EXT *value)) \
X (void , glGetUniformi64vNV, (GLuint program, GLint location, GLint64EXT *params)) \
X (void , glProgramUniform1i64NV, (GLuint program, GLint location, GLint64EXT x)) \
X (void , glProgramUniform2i64NV, (GLuint program, GLint location, GLint64EXT x, GLint64EXT y)) \
X (void , glProgramUniform3i64NV, (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z)) \
X (void , glProgramUniform4i64NV, (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w)) \
X (void , glProgramUniform1i64vNV, (GLuint program, GLint location, GLsizei count, const GLint64EXT *value)) \
X (void , glProgramUniform2i64vNV, (GLuint program, GLint location, GLsizei count, const GLint64EXT *value)) \
X (void , glProgramUniform3i64vNV, (GLuint program, GLint location, GLsizei count, const GLint64EXT *value)) \
X (void , glProgramUniform4i64vNV, (GLuint program, GLint location, GLsizei count, const GLint64EXT *value)) \
X (void , glProgramUniform1ui64NV, (GLuint program, GLint location, GLuint64EXT x)) \
X (void , glProgramUniform2ui64NV, (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y)) \
X (void , glProgramUniform3ui64NV, (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z)) \
X (void , glProgramUniform4ui64NV, (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w)) \
X (void , glProgramUniform1ui64vNV, (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value)) \
X (void , glProgramUniform2ui64vNV, (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value)) \
X (void , glProgramUniform3ui64vNV, (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value)) \
X (void , glProgramUniform4ui64vNV, (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value))
#define JUCE_GL_FUNCTIONS_GL_NV_instanced_arrays \
X (void , glVertexAttribDivisorNV, (GLuint index, GLuint divisor))
#define JUCE_GL_FUNCTIONS_GL_NV_internalformat_sample_query \
X (void , glGetInternalformatSampleivNV, (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params))
#define JUCE_GL_FUNCTIONS_GL_NV_memory_attachment \
X (void , glGetMemoryObjectDetachedResourcesuivNV, (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params)) \
X (void , glResetMemoryObjectParameterNV, (GLuint memory, GLenum pname)) \
X (void , glTexAttachMemoryNV, (GLenum target, GLuint memory, GLuint64 offset)) \
X (void , glBufferAttachMemoryNV, (GLenum target, GLuint memory, GLuint64 offset)) \
X (void , glTextureAttachMemoryNV, (GLuint texture, GLuint memory, GLuint64 offset)) \
X (void , glNamedBufferAttachMemoryNV, (GLuint buffer, GLuint memory, GLuint64 offset))
#define JUCE_GL_FUNCTIONS_GL_NV_memory_object_sparse \
X (void , glBufferPageCommitmentMemNV, (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit)) \
X (void , glTexPageCommitmentMemNV, (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit)) \
X (void , glNamedBufferPageCommitmentMemNV, (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit)) \
X (void , glTexturePageCommitmentMemNV, (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit))
#define JUCE_GL_FUNCTIONS_GL_NV_mesh_shader \
X (void , glDrawMeshTasksNV, (GLuint first, GLuint count)) \
X (void , glDrawMeshTasksIndirectNV, (GLintptr indirect)) \
X (void , glMultiDrawMeshTasksIndirectNV, (GLintptr indirect, GLsizei drawcount, GLsizei stride)) \
X (void , glMultiDrawMeshTasksIndirectCountNV, (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride))
#define JUCE_GL_FUNCTIONS_GL_NV_non_square_matrices \
X (void , glUniformMatrix2x3fvNV, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUniformMatrix3x2fvNV, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUniformMatrix2x4fvNV, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUniformMatrix4x2fvNV, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUniformMatrix3x4fvNV, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
X (void , glUniformMatrix4x3fvNV, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
#define JUCE_GL_FUNCTIONS_GL_NV_path_rendering \
X (GLuint , glGenPathsNV, (GLsizei range)) \
X (void , glDeletePathsNV, (GLuint path, GLsizei range)) \
X (GLboolean , glIsPathNV, (GLuint path)) \
X (void , glPathCommandsNV, (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords)) \
X (void , glPathCoordsNV, (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords)) \
X (void , glPathSubCommandsNV, (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords)) \
X (void , glPathSubCoordsNV, (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords)) \
X (void , glPathStringNV, (GLuint path, GLenum format, GLsizei length, const void *pathString)) \
X (void , glPathGlyphsNV, (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)) \
X (void , glPathGlyphRangeNV, (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale)) \
X (void , glWeightPathsNV, (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights)) \
X (void , glCopyPathNV, (GLuint resultPath, GLuint srcPath)) \
X (void , glInterpolatePathsNV, (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight)) \
X (void , glTransformPathNV, (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues)) \
X (void , glPathParameterivNV, (GLuint path, GLenum pname, const GLint *value)) \
X (void , glPathParameteriNV, (GLuint path, GLenum pname, GLint value)) \
X (void , glPathParameterfvNV, (GLuint path, GLenum pname, const GLfloat *value)) \
X (void , glPathParameterfNV, (GLuint path, GLenum pname, GLfloat value)) \
X (void , glPathDashArrayNV, (GLuint path, GLsizei dashCount, const GLfloat *dashArray)) \
X (void , glPathStencilFuncNV, (GLenum func, GLint ref, GLuint mask)) \
X (void , glPathStencilDepthOffsetNV, (GLfloat factor, GLfloat units)) \
X (void , glStencilFillPathNV, (GLuint path, GLenum fillMode, GLuint mask)) \
X (void , glStencilStrokePathNV, (GLuint path, GLint reference, GLuint mask)) \
X (void , glStencilFillPathInstancedNV, (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues)) \
X (void , glStencilStrokePathInstancedNV, (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues)) \
X (void , glPathCoverDepthFuncNV, (GLenum func)) \
X (void , glCoverFillPathNV, (GLuint path, GLenum coverMode)) \
X (void , glCoverStrokePathNV, (GLuint path, GLenum coverMode)) \
X (void , glCoverFillPathInstancedNV, (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)) \
X (void , glCoverStrokePathInstancedNV, (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)) \
X (void , glGetPathParameterivNV, (GLuint path, GLenum pname, GLint *value)) \
X (void , glGetPathParameterfvNV, (GLuint path, GLenum pname, GLfloat *value)) \
X (void , glGetPathCommandsNV, (GLuint path, GLubyte *commands)) \
X (void , glGetPathCoordsNV, (GLuint path, GLfloat *coords)) \
X (void , glGetPathDashArrayNV, (GLuint path, GLfloat *dashArray)) \
X (void , glGetPathMetricsNV, (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics)) \
X (void , glGetPathMetricRangeNV, (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics)) \
X (void , glGetPathSpacingNV, (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing)) \
X (GLboolean , glIsPointInFillPathNV, (GLuint path, GLuint mask, GLfloat x, GLfloat y)) \
X (GLboolean , glIsPointInStrokePathNV, (GLuint path, GLfloat x, GLfloat y)) \
X (GLfloat , glGetPathLengthNV, (GLuint path, GLsizei startSegment, GLsizei numSegments)) \
X (GLboolean , glPointAlongPathNV, (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY)) \
X (void , glMatrixLoad3x2fNV, (GLenum matrixMode, const GLfloat *m)) \
X (void , glMatrixLoad3x3fNV, (GLenum matrixMode, const GLfloat *m)) \
X (void , glMatrixLoadTranspose3x3fNV, (GLenum matrixMode, const GLfloat *m)) \
X (void , glMatrixMult3x2fNV, (GLenum matrixMode, const GLfloat *m)) \
X (void , glMatrixMult3x3fNV, (GLenum matrixMode, const GLfloat *m)) \
X (void , glMatrixMultTranspose3x3fNV, (GLenum matrixMode, const GLfloat *m)) \
X (void , glStencilThenCoverFillPathNV, (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode)) \
X (void , glStencilThenCoverStrokePathNV, (GLuint path, GLint reference, GLuint mask, GLenum coverMode)) \
X (void , glStencilThenCoverFillPathInstancedNV, (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)) \
X (void , glStencilThenCoverStrokePathInstancedNV, (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues)) \
X (GLenum , glPathGlyphIndexRangeNV, (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount)) \
X (GLenum , glPathGlyphIndexArrayNV, (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)) \
X (GLenum , glPathMemoryGlyphIndexArrayNV, (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale)) \
X (void , glProgramPathFragmentInputGenNV, (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs)) \
X (void , glGetProgramResourcefvNV, (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params)) \
X (void , glPathColorGenNV, (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs)) \
X (void , glPathTexGenNV, (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs)) \
X (void , glPathFogGenNV, (GLenum genMode)) \
X (void , glGetPathColorGenivNV, (GLenum color, GLenum pname, GLint *value)) \
X (void , glGetPathColorGenfvNV, (GLenum color, GLenum pname, GLfloat *value)) \
X (void , glGetPathTexGenivNV, (GLenum texCoordSet, GLenum pname, GLint *value)) \
X (void , glGetPathTexGenfvNV, (GLenum texCoordSet, GLenum pname, GLfloat *value)) \
X (void , glMatrixFrustumEXT, (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)) \
X (void , glMatrixLoadIdentityEXT, (GLenum mode)) \
X (void , glMatrixLoadTransposefEXT, (GLenum mode, const GLfloat *m)) \
X (void , glMatrixLoadTransposedEXT, (GLenum mode, const GLdouble *m)) \
X (void , glMatrixLoadfEXT, (GLenum mode, const GLfloat *m)) \
X (void , glMatrixLoaddEXT, (GLenum mode, const GLdouble *m)) \
X (void , glMatrixMultTransposefEXT, (GLenum mode, const GLfloat *m)) \
X (void , glMatrixMultTransposedEXT, (GLenum mode, const GLdouble *m)) \
X (void , glMatrixMultfEXT, (GLenum mode, const GLfloat *m)) \
X (void , glMatrixMultdEXT, (GLenum mode, const GLdouble *m)) \
X (void , glMatrixOrthoEXT, (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)) \
X (void , glMatrixPopEXT, (GLenum mode)) \
X (void , glMatrixPushEXT, (GLenum mode)) \
X (void , glMatrixRotatefEXT, (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z)) \
X (void , glMatrixRotatedEXT, (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z)) \
X (void , glMatrixScalefEXT, (GLenum mode, GLfloat x, GLfloat y, GLfloat z)) \
X (void , glMatrixScaledEXT, (GLenum mode, GLdouble x, GLdouble y, GLdouble z)) \
X (void , glMatrixTranslatefEXT, (GLenum mode, GLfloat x, GLfloat y, GLfloat z)) \
X (void , glMatrixTranslatedEXT, (GLenum mode, GLdouble x, GLdouble y, GLdouble z))
#define JUCE_GL_FUNCTIONS_GL_NV_polygon_mode \
X (void , glPolygonModeNV, (GLenum face, GLenum mode))
#define JUCE_GL_FUNCTIONS_GL_NV_read_buffer \
X (void , glReadBufferNV, (GLenum mode))
#define JUCE_GL_FUNCTIONS_GL_NV_sample_locations \
X (void , glFramebufferSampleLocationsfvNV, (GLenum target, GLuint start, GLsizei count, const GLfloat *v)) \
X (void , glNamedFramebufferSampleLocationsfvNV, (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v)) \
X (void , glResolveDepthValuesNV, ())
#define JUCE_GL_FUNCTIONS_GL_NV_scissor_exclusive \
X (void , glScissorExclusiveNV, (GLint x, GLint y, GLsizei width, GLsizei height)) \
X (void , glScissorExclusiveArrayvNV, (GLuint first, GLsizei count, const GLint *v))
#define JUCE_GL_FUNCTIONS_GL_NV_shading_rate_image \
X (void , glBindShadingRateImageNV, (GLuint texture)) \
X (void , glGetShadingRateImagePaletteNV, (GLuint viewport, GLuint entry, GLenum *rate)) \
X (void , glGetShadingRateSampleLocationivNV, (GLenum rate, GLuint samples, GLuint index, GLint *location)) \
X (void , glShadingRateImageBarrierNV, (GLboolean synchronize)) \
X (void , glShadingRateImagePaletteNV, (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates)) \
X (void , glShadingRateSampleOrderNV, (GLenum order)) \
X (void , glShadingRateSampleOrderCustomNV, (GLenum rate, GLuint samples, const GLint *locations))
#define JUCE_GL_FUNCTIONS_GL_NV_viewport_array \
X (void , glViewportArrayvNV, (GLuint first, GLsizei count, const GLfloat *v)) \
X (void , glViewportIndexedfNV, (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h)) \
X (void , glViewportIndexedfvNV, (GLuint index, const GLfloat *v)) \
X (void , glScissorArrayvNV, (GLuint first, GLsizei count, const GLint *v)) \
X (void , glScissorIndexedNV, (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height)) \
X (void , glScissorIndexedvNV, (GLuint index, const GLint *v)) \
X (void , glDepthRangeArrayfvNV, (GLuint first, GLsizei count, const GLfloat *v)) \
X (void , glDepthRangeIndexedfNV, (GLuint index, GLfloat n, GLfloat f)) \
X (void , glGetFloati_vNV, (GLenum target, GLuint index, GLfloat *data)) \
X (void , glEnableiNV, (GLenum target, GLuint index)) \
X (void , glDisableiNV, (GLenum target, GLuint index)) \
X (GLboolean , glIsEnablediNV, (GLenum target, GLuint index))
#define JUCE_GL_FUNCTIONS_GL_NV_viewport_swizzle \
X (void , glViewportSwizzleNV, (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew))
#define JUCE_GL_FUNCTIONS_GL_OES_EGL_image \
X (void , glEGLImageTargetTexture2DOES, (GLenum target, GLeglImageOES image)) \
X (void , glEGLImageTargetRenderbufferStorageOES, (GLenum target, GLeglImageOES image))
#define JUCE_GL_FUNCTIONS_GL_OES_copy_image \
X (void , glCopyImageSubDataOES, (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth))
#define JUCE_GL_FUNCTIONS_GL_OES_draw_buffers_indexed \
X (void , glEnableiOES, (GLenum target, GLuint index)) \
X (void , glDisableiOES, (GLenum target, GLuint index)) \
X (void , glBlendEquationiOES, (GLuint buf, GLenum mode)) \
X (void , glBlendEquationSeparateiOES, (GLuint buf, GLenum modeRGB, GLenum modeAlpha)) \
X (void , glBlendFunciOES, (GLuint buf, GLenum src, GLenum dst)) \
X (void , glBlendFuncSeparateiOES, (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)) \
X (void , glColorMaskiOES, (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)) \
X (GLboolean , glIsEnablediOES, (GLenum target, GLuint index))
#define JUCE_GL_FUNCTIONS_GL_OES_draw_elements_base_vertex \
X (void , glDrawElementsBaseVertexOES, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex)) \
X (void , glDrawRangeElementsBaseVertexOES, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex)) \
X (void , glDrawElementsInstancedBaseVertexOES, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex))
#define JUCE_GL_FUNCTIONS_GL_OES_geometry_shader \
X (void , glFramebufferTextureOES, (GLenum target, GLenum attachment, GLuint texture, GLint level))
#define JUCE_GL_FUNCTIONS_GL_OES_get_program_binary \
X (void , glGetProgramBinaryOES, (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)) \
X (void , glProgramBinaryOES, (GLuint program, GLenum binaryFormat, const void *binary, GLint length))
#define JUCE_GL_FUNCTIONS_GL_OES_mapbuffer \
X (void * , glMapBufferOES, (GLenum target, GLenum access)) \
X (GLboolean , glUnmapBufferOES, (GLenum target)) \
X (void , glGetBufferPointervOES, (GLenum target, GLenum pname, void **params))
#define JUCE_GL_FUNCTIONS_GL_OES_primitive_bounding_box \
X (void , glPrimitiveBoundingBoxOES, (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW))
#define JUCE_GL_FUNCTIONS_GL_OES_sample_shading \
X (void , glMinSampleShadingOES, (GLfloat value))
#define JUCE_GL_FUNCTIONS_GL_OES_tessellation_shader \
X (void , glPatchParameteriOES, (GLenum pname, GLint value))
#define JUCE_GL_FUNCTIONS_GL_OES_texture_3D \
X (void , glTexImage3DOES, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)) \
X (void , glTexSubImage3DOES, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)) \
X (void , glCopyTexSubImage3DOES, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) \
X (void , glCompressedTexImage3DOES, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)) \
X (void , glCompressedTexSubImage3DOES, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)) \
X (void , glFramebufferTexture3DOES, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset))
#define JUCE_GL_FUNCTIONS_GL_OES_texture_border_clamp \
X (void , glTexParameterIivOES, (GLenum target, GLenum pname, const GLint *params)) \
X (void , glTexParameterIuivOES, (GLenum target, GLenum pname, const GLuint *params)) \
X (void , glGetTexParameterIivOES, (GLenum target, GLenum pname, GLint *params)) \
X (void , glGetTexParameterIuivOES, (GLenum target, GLenum pname, GLuint *params)) \
X (void , glSamplerParameterIivOES, (GLuint sampler, GLenum pname, const GLint *param)) \
X (void , glSamplerParameterIuivOES, (GLuint sampler, GLenum pname, const GLuint *param)) \
X (void , glGetSamplerParameterIivOES, (GLuint sampler, GLenum pname, GLint *params)) \
X (void , glGetSamplerParameterIuivOES, (GLuint sampler, GLenum pname, GLuint *params))
#define JUCE_GL_FUNCTIONS_GL_OES_texture_buffer \
X (void , glTexBufferOES, (GLenum target, GLenum internalformat, GLuint buffer)) \
X (void , glTexBufferRangeOES, (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size))
#define JUCE_GL_FUNCTIONS_GL_OES_texture_storage_multisample_2d_array \
X (void , glTexStorage3DMultisampleOES, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations))
#define JUCE_GL_FUNCTIONS_GL_OES_texture_view \
X (void , glTextureViewOES, (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers))
#define JUCE_GL_FUNCTIONS_GL_OES_vertex_array_object \
X (void , glBindVertexArrayOES, (GLuint array)) \
X (void , glDeleteVertexArraysOES, (GLsizei n, const GLuint *arrays)) \
X (void , glGenVertexArraysOES, (GLsizei n, GLuint *arrays)) \
X (GLboolean , glIsVertexArrayOES, (GLuint array))
#define JUCE_GL_FUNCTIONS_GL_OES_viewport_array \
X (void , glViewportArrayvOES, (GLuint first, GLsizei count, const GLfloat *v)) \
X (void , glViewportIndexedfOES, (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h)) \
X (void , glViewportIndexedfvOES, (GLuint index, const GLfloat *v)) \
X (void , glScissorArrayvOES, (GLuint first, GLsizei count, const GLint *v)) \
X (void , glScissorIndexedOES, (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height)) \
X (void , glScissorIndexedvOES, (GLuint index, const GLint *v)) \
X (void , glDepthRangeArrayfvOES, (GLuint first, GLsizei count, const GLfloat *v)) \
X (void , glDepthRangeIndexedfOES, (GLuint index, GLfloat n, GLfloat f)) \
X (void , glGetFloati_vOES, (GLenum target, GLuint index, GLfloat *data))
#define JUCE_GL_FUNCTIONS_GL_OVR_multiview \
X (void , glFramebufferTextureMultiviewOVR, (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews))
#define JUCE_GL_FUNCTIONS_GL_OVR_multiview_multisampled_render_to_texture \
X (void , glFramebufferTextureMultisampleMultiviewOVR, (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews))
#define JUCE_GL_FUNCTIONS_GL_QCOM_alpha_test \
X (void , glAlphaFuncQCOM, (GLenum func, GLclampf ref))
#define JUCE_GL_FUNCTIONS_GL_QCOM_driver_control \
X (void , glGetDriverControlsQCOM, (GLint *num, GLsizei size, GLuint *driverControls)) \
X (void , glGetDriverControlStringQCOM, (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString)) \
X (void , glEnableDriverControlQCOM, (GLuint driverControl)) \
X (void , glDisableDriverControlQCOM, (GLuint driverControl))
#define JUCE_GL_FUNCTIONS_GL_QCOM_extended_get \
X (void , glExtGetTexturesQCOM, (GLuint *textures, GLint maxTextures, GLint *numTextures)) \
X (void , glExtGetBuffersQCOM, (GLuint *buffers, GLint maxBuffers, GLint *numBuffers)) \
X (void , glExtGetRenderbuffersQCOM, (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers)) \
X (void , glExtGetFramebuffersQCOM, (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers)) \
X (void , glExtGetTexLevelParameterivQCOM, (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params)) \
X (void , glExtTexObjectStateOverrideiQCOM, (GLenum target, GLenum pname, GLint param)) \
X (void , glExtGetTexSubImageQCOM, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels)) \
X (void , glExtGetBufferPointervQCOM, (GLenum target, void **params))
#define JUCE_GL_FUNCTIONS_GL_QCOM_extended_get2 \
X (void , glExtGetShadersQCOM, (GLuint *shaders, GLint maxShaders, GLint *numShaders)) \
X (void , glExtGetProgramsQCOM, (GLuint *programs, GLint maxPrograms, GLint *numPrograms)) \
X (GLboolean , glExtIsProgramBinaryQCOM, (GLuint program)) \
X (void , glExtGetProgramBinarySourceQCOM, (GLuint program, GLenum shadertype, GLchar *source, GLint *length))
#define JUCE_GL_FUNCTIONS_GL_QCOM_framebuffer_foveated \
X (void , glFramebufferFoveationConfigQCOM, (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures)) \
X (void , glFramebufferFoveationParametersQCOM, (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea))
#define JUCE_GL_FUNCTIONS_GL_QCOM_motion_estimation \
X (void , glTexEstimateMotionQCOM, (GLuint ref, GLuint target, GLuint output)) \
X (void , glTexEstimateMotionRegionsQCOM, (GLuint ref, GLuint target, GLuint output, GLuint mask))
#define JUCE_GL_FUNCTIONS_GL_QCOM_frame_extrapolation \
X (void , glExtrapolateTex2DQCOM, (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor))
#define JUCE_GL_FUNCTIONS_GL_QCOM_texture_foveated \
X (void , glTextureFoveationParametersQCOM, (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea))
#define JUCE_GL_FUNCTIONS_GL_QCOM_shader_framebuffer_fetch_noncoherent \
X (void , glFramebufferFetchBarrierQCOM, ())
#define JUCE_GL_FUNCTIONS_GL_QCOM_shading_rate \
X (void , glShadingRateQCOM, (GLenum rate))
#define JUCE_GL_FUNCTIONS_GL_QCOM_tiled_rendering \
X (void , glStartTilingQCOM, (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask)) \
X (void , glEndTilingQCOM, (GLbitfield preserveMask))
#if JUCE_STATIC_LINK_GL_ES_VERSION_2_0
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_2_0_STATIC JUCE_GL_FUNCTIONS_GL_ES_VERSION_2_0
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_2_0_DYNAMIC
#else
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_2_0_STATIC
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_2_0_DYNAMIC JUCE_GL_FUNCTIONS_GL_ES_VERSION_2_0
#endif
#if JUCE_STATIC_LINK_GL_ES_VERSION_3_0
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_0_STATIC JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_0
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_0_DYNAMIC
#else
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_0_STATIC
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_0_DYNAMIC JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_0
#endif
#if JUCE_STATIC_LINK_GL_ES_VERSION_3_1
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_1_STATIC JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_1
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_1_DYNAMIC
#else
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_1_STATIC
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_1_DYNAMIC JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_1
#endif
#if JUCE_STATIC_LINK_GL_ES_VERSION_3_2
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_2_STATIC JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_2
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_2_DYNAMIC
#else
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_2_STATIC
#define JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_2_DYNAMIC JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_2
#endif
#define JUCE_STATIC_GL_FUNCTIONS \
JUCE_GL_FUNCTIONS_GL_ES_VERSION_2_0_STATIC \
JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_0_STATIC \
JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_1_STATIC \
JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_2_STATIC
#define JUCE_DYNAMIC_GL_FUNCTIONS \
JUCE_GL_FUNCTIONS_GL_ES_VERSION_2_0_DYNAMIC \
JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_0_DYNAMIC \
JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_1_DYNAMIC \
JUCE_GL_FUNCTIONS_GL_ES_VERSION_3_2_DYNAMIC
#define JUCE_EXTENSION_GL_FUNCTIONS \
JUCE_GL_FUNCTIONS_GL_AMD_framebuffer_multisample_advanced \
JUCE_GL_FUNCTIONS_GL_AMD_performance_monitor \
JUCE_GL_FUNCTIONS_GL_ANGLE_framebuffer_blit \
JUCE_GL_FUNCTIONS_GL_ANGLE_framebuffer_multisample \
JUCE_GL_FUNCTIONS_GL_ANGLE_instanced_arrays \
JUCE_GL_FUNCTIONS_GL_ANGLE_translated_shader_source \
JUCE_GL_FUNCTIONS_GL_APPLE_copy_texture_levels \
JUCE_GL_FUNCTIONS_GL_APPLE_framebuffer_multisample \
JUCE_GL_FUNCTIONS_GL_APPLE_sync \
JUCE_GL_FUNCTIONS_GL_EXT_EGL_image_storage \
JUCE_GL_FUNCTIONS_GL_EXT_base_instance \
JUCE_GL_FUNCTIONS_GL_EXT_blend_func_extended \
JUCE_GL_FUNCTIONS_GL_EXT_blend_minmax \
JUCE_GL_FUNCTIONS_GL_EXT_buffer_storage \
JUCE_GL_FUNCTIONS_GL_EXT_clear_texture \
JUCE_GL_FUNCTIONS_GL_EXT_clip_control \
JUCE_GL_FUNCTIONS_GL_EXT_copy_image \
JUCE_GL_FUNCTIONS_GL_EXT_debug_label \
JUCE_GL_FUNCTIONS_GL_EXT_debug_marker \
JUCE_GL_FUNCTIONS_GL_EXT_discard_framebuffer \
JUCE_GL_FUNCTIONS_GL_EXT_disjoint_timer_query \
JUCE_GL_FUNCTIONS_GL_EXT_draw_buffers \
JUCE_GL_FUNCTIONS_GL_EXT_draw_buffers_indexed \
JUCE_GL_FUNCTIONS_GL_EXT_draw_elements_base_vertex \
JUCE_GL_FUNCTIONS_GL_EXT_draw_instanced \
JUCE_GL_FUNCTIONS_GL_EXT_draw_transform_feedback \
JUCE_GL_FUNCTIONS_GL_EXT_external_buffer \
JUCE_GL_FUNCTIONS_GL_EXT_geometry_shader \
JUCE_GL_FUNCTIONS_GL_EXT_instanced_arrays \
JUCE_GL_FUNCTIONS_GL_EXT_map_buffer_range \
JUCE_GL_FUNCTIONS_GL_EXT_memory_object \
JUCE_GL_FUNCTIONS_GL_EXT_memory_object_fd \
JUCE_GL_FUNCTIONS_GL_EXT_memory_object_win32 \
JUCE_GL_FUNCTIONS_GL_EXT_multi_draw_arrays \
JUCE_GL_FUNCTIONS_GL_EXT_multi_draw_indirect \
JUCE_GL_FUNCTIONS_GL_EXT_multisampled_render_to_texture \
JUCE_GL_FUNCTIONS_GL_EXT_multiview_draw_buffers \
JUCE_GL_FUNCTIONS_GL_EXT_polygon_offset_clamp \
JUCE_GL_FUNCTIONS_GL_EXT_primitive_bounding_box \
JUCE_GL_FUNCTIONS_GL_EXT_raster_multisample \
JUCE_GL_FUNCTIONS_GL_EXT_robustness \
JUCE_GL_FUNCTIONS_GL_EXT_semaphore \
JUCE_GL_FUNCTIONS_GL_EXT_semaphore_fd \
JUCE_GL_FUNCTIONS_GL_EXT_semaphore_win32 \
JUCE_GL_FUNCTIONS_GL_EXT_separate_shader_objects \
JUCE_GL_FUNCTIONS_GL_EXT_shader_framebuffer_fetch_non_coherent \
JUCE_GL_FUNCTIONS_GL_EXT_shader_pixel_local_storage2 \
JUCE_GL_FUNCTIONS_GL_EXT_sparse_texture \
JUCE_GL_FUNCTIONS_GL_EXT_tessellation_shader \
JUCE_GL_FUNCTIONS_GL_EXT_texture_border_clamp \
JUCE_GL_FUNCTIONS_GL_EXT_texture_buffer \
JUCE_GL_FUNCTIONS_GL_EXT_texture_storage \
JUCE_GL_FUNCTIONS_GL_EXT_texture_view \
JUCE_GL_FUNCTIONS_GL_NV_timeline_semaphore \
JUCE_GL_FUNCTIONS_GL_EXT_win32_keyed_mutex \
JUCE_GL_FUNCTIONS_GL_EXT_window_rectangles \
JUCE_GL_FUNCTIONS_GL_IMG_bindless_texture \
JUCE_GL_FUNCTIONS_GL_IMG_framebuffer_downsample \
JUCE_GL_FUNCTIONS_GL_IMG_multisampled_render_to_texture \
JUCE_GL_FUNCTIONS_GL_INTEL_framebuffer_CMAA \
JUCE_GL_FUNCTIONS_GL_INTEL_performance_query \
JUCE_GL_FUNCTIONS_GL_KHR_blend_equation_advanced \
JUCE_GL_FUNCTIONS_GL_KHR_debug \
JUCE_GL_FUNCTIONS_GL_KHR_robustness \
JUCE_GL_FUNCTIONS_GL_KHR_parallel_shader_compile \
JUCE_GL_FUNCTIONS_GL_MESA_framebuffer_flip_y \
JUCE_GL_FUNCTIONS_GL_NV_bindless_texture \
JUCE_GL_FUNCTIONS_GL_NV_blend_equation_advanced \
JUCE_GL_FUNCTIONS_GL_NV_clip_space_w_scaling \
JUCE_GL_FUNCTIONS_GL_NV_conditional_render \
JUCE_GL_FUNCTIONS_GL_NV_conservative_raster \
JUCE_GL_FUNCTIONS_GL_NV_conservative_raster_pre_snap_triangles \
JUCE_GL_FUNCTIONS_GL_NV_copy_buffer \
JUCE_GL_FUNCTIONS_GL_NV_coverage_sample \
JUCE_GL_FUNCTIONS_GL_NV_draw_buffers \
JUCE_GL_FUNCTIONS_GL_NV_draw_instanced \
JUCE_GL_FUNCTIONS_GL_NV_draw_vulkan_image \
JUCE_GL_FUNCTIONS_GL_NV_fence \
JUCE_GL_FUNCTIONS_GL_NV_fragment_coverage_to_color \
JUCE_GL_FUNCTIONS_GL_NV_framebuffer_blit \
JUCE_GL_FUNCTIONS_GL_NV_framebuffer_mixed_samples \
JUCE_GL_FUNCTIONS_GL_NV_framebuffer_multisample \
JUCE_GL_FUNCTIONS_GL_NV_gpu_shader5 \
JUCE_GL_FUNCTIONS_GL_NV_instanced_arrays \
JUCE_GL_FUNCTIONS_GL_NV_internalformat_sample_query \
JUCE_GL_FUNCTIONS_GL_NV_memory_attachment \
JUCE_GL_FUNCTIONS_GL_NV_memory_object_sparse \
JUCE_GL_FUNCTIONS_GL_NV_mesh_shader \
JUCE_GL_FUNCTIONS_GL_NV_non_square_matrices \
JUCE_GL_FUNCTIONS_GL_NV_path_rendering \
JUCE_GL_FUNCTIONS_GL_NV_polygon_mode \
JUCE_GL_FUNCTIONS_GL_NV_read_buffer \
JUCE_GL_FUNCTIONS_GL_NV_sample_locations \
JUCE_GL_FUNCTIONS_GL_NV_scissor_exclusive \
JUCE_GL_FUNCTIONS_GL_NV_shading_rate_image \
JUCE_GL_FUNCTIONS_GL_NV_viewport_array \
JUCE_GL_FUNCTIONS_GL_NV_viewport_swizzle \
JUCE_GL_FUNCTIONS_GL_OES_EGL_image \
JUCE_GL_FUNCTIONS_GL_OES_copy_image \
JUCE_GL_FUNCTIONS_GL_OES_draw_buffers_indexed \
JUCE_GL_FUNCTIONS_GL_OES_draw_elements_base_vertex \
JUCE_GL_FUNCTIONS_GL_OES_geometry_shader \
JUCE_GL_FUNCTIONS_GL_OES_get_program_binary \
JUCE_GL_FUNCTIONS_GL_OES_mapbuffer \
JUCE_GL_FUNCTIONS_GL_OES_primitive_bounding_box \
JUCE_GL_FUNCTIONS_GL_OES_sample_shading \
JUCE_GL_FUNCTIONS_GL_OES_tessellation_shader \
JUCE_GL_FUNCTIONS_GL_OES_texture_3D \
JUCE_GL_FUNCTIONS_GL_OES_texture_border_clamp \
JUCE_GL_FUNCTIONS_GL_OES_texture_buffer \
JUCE_GL_FUNCTIONS_GL_OES_texture_storage_multisample_2d_array \
JUCE_GL_FUNCTIONS_GL_OES_texture_view \
JUCE_GL_FUNCTIONS_GL_OES_vertex_array_object \
JUCE_GL_FUNCTIONS_GL_OES_viewport_array \
JUCE_GL_FUNCTIONS_GL_OVR_multiview \
JUCE_GL_FUNCTIONS_GL_OVR_multiview_multisampled_render_to_texture \
JUCE_GL_FUNCTIONS_GL_QCOM_alpha_test \
JUCE_GL_FUNCTIONS_GL_QCOM_driver_control \
JUCE_GL_FUNCTIONS_GL_QCOM_extended_get \
JUCE_GL_FUNCTIONS_GL_QCOM_extended_get2 \
JUCE_GL_FUNCTIONS_GL_QCOM_framebuffer_foveated \
JUCE_GL_FUNCTIONS_GL_QCOM_motion_estimation \
JUCE_GL_FUNCTIONS_GL_QCOM_frame_extrapolation \
JUCE_GL_FUNCTIONS_GL_QCOM_texture_foveated \
JUCE_GL_FUNCTIONS_GL_QCOM_shader_framebuffer_fetch_noncoherent \
JUCE_GL_FUNCTIONS_GL_QCOM_shading_rate \
JUCE_GL_FUNCTIONS_GL_QCOM_tiled_rendering
#define X(returns, name, params) \
extern "C" KHRONOS_APICALL returns KHRONOS_APIENTRY name params; \
returns (KHRONOS_APIENTRY* const& ::juce::gl::name) params = ::name;
JUCE_STATIC_GL_FUNCTIONS
#undef X
#define X(returns, name, params) \
static returns (KHRONOS_APIENTRY* juce_ ## name) params = nullptr; \
returns (KHRONOS_APIENTRY* const& ::juce::gl::name) params = juce_ ## name;
JUCE_DYNAMIC_GL_FUNCTIONS
JUCE_EXTENSION_GL_FUNCTIONS
#undef X
void juce::gl::loadFunctions()
{
#define X(returns, name, params) \
juce_ ## name = reinterpret_cast<returns (KHRONOS_APIENTRY*) params> (::juce::OpenGLHelpers::getExtensionFunction (#name));
JUCE_DYNAMIC_GL_FUNCTIONS
#undef X
}
void juce::gl::loadExtensions()
{
#define X(returns, name, params) \
juce_ ## name = reinterpret_cast<returns (KHRONOS_APIENTRY*) params> (::juce::OpenGLHelpers::getExtensionFunction (#name));
JUCE_EXTENSION_GL_FUNCTIONS
#undef X
}
#undef JUCE_STATIC_GL_FUNCTIONS
#undef JUCE_DYNAMIC_GL_FUNCTIONS
#undef JUCE_EXTENSION_GL_FUNCTIONS