2021-03-16 06:48:47 +00:00
|
|
|
/*
|
|
|
|
* This file was generated with gl3w_gen.py, part of gl3w
|
|
|
|
* (hosted at https://github.com/skaslev/gl3w)
|
|
|
|
*
|
|
|
|
* This is free and unencumbered software released into the public domain.
|
|
|
|
*
|
|
|
|
* Anyone is free to copy, modify, publish, use, compile, sell, or
|
|
|
|
* distribute this software, either in source code form or as a compiled
|
|
|
|
* binary, for any purpose, commercial or non-commercial, and by any
|
|
|
|
* means.
|
|
|
|
*
|
|
|
|
* In jurisdictions that recognize copyright laws, the author or authors
|
|
|
|
* of this software dedicate any and all copyright interest in the
|
|
|
|
* software to the public domain. We make this dedication for the benefit
|
|
|
|
* of the public at large and to the detriment of our heirs and
|
|
|
|
* successors. We intend this dedication to be an overt act of
|
|
|
|
* relinquishment in perpetuity of all present and future rights to this
|
|
|
|
* software under copyright law.
|
|
|
|
*
|
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
|
|
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
|
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
|
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
|
|
* OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
*/
|
|
|
|
|
2017-09-15 19:25:47 +00:00
|
|
|
#include <GL/gl3w.h>
|
2021-03-16 06:48:47 +00:00
|
|
|
#include <stdlib.h>
|
2017-09-15 19:25:47 +00:00
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
|
2017-09-15 19:25:47 +00:00
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
#if defined(_WIN32)
|
|
|
|
#ifndef WIN32_LEAN_AND_MEAN
|
|
|
|
#define WIN32_LEAN_AND_MEAN 1 // Exclude advanced Windows headers
|
|
|
|
#endif // WIN32_LEAN_AND_MEAN
|
2017-09-15 19:25:47 +00:00
|
|
|
#include <windows.h>
|
|
|
|
|
|
|
|
static HMODULE libgl;
|
2021-03-16 06:48:47 +00:00
|
|
|
typedef PROC(__stdcall* GL3WglGetProcAddr)(LPCSTR);
|
|
|
|
static GL3WglGetProcAddr wgl_get_proc_address;
|
2017-09-15 19:25:47 +00:00
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
static int open_libgl(void)
|
2017-09-15 19:25:47 +00:00
|
|
|
{
|
|
|
|
libgl = LoadLibraryA("opengl32.dll");
|
2021-03-16 06:48:47 +00:00
|
|
|
if (!libgl)
|
|
|
|
return GL3W_ERROR_LIBRARY_OPEN;
|
|
|
|
|
|
|
|
wgl_get_proc_address = (GL3WglGetProcAddr)GetProcAddress(libgl, "wglGetProcAddress");
|
|
|
|
return GL3W_OK;
|
2017-09-15 19:25:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void close_libgl(void)
|
|
|
|
{
|
|
|
|
FreeLibrary(libgl);
|
|
|
|
}
|
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
static GL3WglProc get_proc(const char *proc)
|
2017-09-15 19:25:47 +00:00
|
|
|
{
|
2021-03-16 06:48:47 +00:00
|
|
|
GL3WglProc res;
|
2017-09-15 19:25:47 +00:00
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
res = (GL3WglProc)wgl_get_proc_address(proc);
|
2017-09-15 19:25:47 +00:00
|
|
|
if (!res)
|
2021-03-16 06:48:47 +00:00
|
|
|
res = (GL3WglProc)GetProcAddress(libgl, proc);
|
2017-09-15 19:25:47 +00:00
|
|
|
return res;
|
|
|
|
}
|
2021-03-16 06:48:47 +00:00
|
|
|
#elif defined(__APPLE__)
|
|
|
|
#include <dlfcn.h>
|
2017-09-15 19:25:47 +00:00
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
static void *libgl;
|
2017-09-15 19:25:47 +00:00
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
static int open_libgl(void)
|
2017-09-15 19:25:47 +00:00
|
|
|
{
|
2021-03-16 06:48:47 +00:00
|
|
|
libgl = dlopen("/System/Library/Frameworks/OpenGL.framework/OpenGL", RTLD_LAZY | RTLD_LOCAL);
|
|
|
|
if (!libgl)
|
|
|
|
return GL3W_ERROR_LIBRARY_OPEN;
|
2017-09-15 19:25:47 +00:00
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
return GL3W_OK;
|
2017-09-15 19:25:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void close_libgl(void)
|
|
|
|
{
|
2021-03-16 06:48:47 +00:00
|
|
|
dlclose(libgl);
|
2017-09-15 19:25:47 +00:00
|
|
|
}
|
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
static GL3WglProc get_proc(const char *proc)
|
2017-09-15 19:25:47 +00:00
|
|
|
{
|
2021-03-16 06:48:47 +00:00
|
|
|
GL3WglProc res;
|
2017-09-15 19:25:47 +00:00
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
*(void **)(&res) = dlsym(libgl, proc);
|
2017-09-15 19:25:47 +00:00
|
|
|
return res;
|
|
|
|
}
|
|
|
|
#else
|
|
|
|
#include <dlfcn.h>
|
|
|
|
|
|
|
|
static void *libgl;
|
2021-03-16 06:48:47 +00:00
|
|
|
static GL3WglProc (*glx_get_proc_address)(const GLubyte *);
|
2017-09-15 19:25:47 +00:00
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
static int open_libgl(void)
|
2017-09-15 19:25:47 +00:00
|
|
|
{
|
2021-03-16 06:48:47 +00:00
|
|
|
libgl = dlopen("libGL.so.1", RTLD_LAZY | RTLD_LOCAL);
|
|
|
|
if (!libgl)
|
|
|
|
return GL3W_ERROR_LIBRARY_OPEN;
|
|
|
|
|
|
|
|
*(void **)(&glx_get_proc_address) = dlsym(libgl, "glXGetProcAddressARB");
|
|
|
|
return GL3W_OK;
|
2017-09-15 19:25:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void close_libgl(void)
|
|
|
|
{
|
|
|
|
dlclose(libgl);
|
|
|
|
}
|
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
static GL3WglProc get_proc(const char *proc)
|
2017-09-15 19:25:47 +00:00
|
|
|
{
|
2021-03-16 06:48:47 +00:00
|
|
|
GL3WglProc res;
|
2017-09-15 19:25:47 +00:00
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
res = glx_get_proc_address((const GLubyte *)proc);
|
2017-09-15 19:25:47 +00:00
|
|
|
if (!res)
|
2021-03-16 06:48:47 +00:00
|
|
|
*(void **)(&res) = dlsym(libgl, proc);
|
2017-09-15 19:25:47 +00:00
|
|
|
return res;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
static struct {
|
|
|
|
int major, minor;
|
|
|
|
} version;
|
|
|
|
|
|
|
|
static int parse_version(void)
|
|
|
|
{
|
|
|
|
if (!glGetIntegerv)
|
2021-03-16 06:48:47 +00:00
|
|
|
return GL3W_ERROR_INIT;
|
2017-09-15 19:25:47 +00:00
|
|
|
|
|
|
|
glGetIntegerv(GL_MAJOR_VERSION, &version.major);
|
|
|
|
glGetIntegerv(GL_MINOR_VERSION, &version.minor);
|
|
|
|
|
|
|
|
if (version.major < 3)
|
2021-03-16 06:48:47 +00:00
|
|
|
return GL3W_ERROR_OPENGL_VERSION;
|
|
|
|
return GL3W_OK;
|
2017-09-15 19:25:47 +00:00
|
|
|
}
|
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
static void load_procs(GL3WGetProcAddressProc proc);
|
2017-09-15 19:25:47 +00:00
|
|
|
|
|
|
|
int gl3wInit(void)
|
|
|
|
{
|
2021-03-16 06:48:47 +00:00
|
|
|
int res;
|
|
|
|
|
|
|
|
res = open_libgl();
|
|
|
|
if (res)
|
|
|
|
return res;
|
|
|
|
|
|
|
|
atexit(close_libgl);
|
|
|
|
return gl3wInit2(get_proc);
|
|
|
|
}
|
|
|
|
|
|
|
|
int gl3wInit2(GL3WGetProcAddressProc proc)
|
|
|
|
{
|
|
|
|
load_procs(proc);
|
2017-09-15 19:25:47 +00:00
|
|
|
return parse_version();
|
|
|
|
}
|
|
|
|
|
|
|
|
int gl3wIsSupported(int major, int minor)
|
|
|
|
{
|
|
|
|
if (major < 3)
|
|
|
|
return 0;
|
|
|
|
if (version.major == major)
|
|
|
|
return version.minor >= minor;
|
|
|
|
return version.major >= major;
|
|
|
|
}
|
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
GL3WglProc gl3wGetProcAddress(const char *proc)
|
2017-09-15 19:25:47 +00:00
|
|
|
{
|
|
|
|
return get_proc(proc);
|
|
|
|
}
|
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
static const char *proc_names[] = {
|
|
|
|
"glActiveShaderProgram",
|
|
|
|
"glActiveTexture",
|
|
|
|
"glAttachShader",
|
|
|
|
"glBeginConditionalRender",
|
|
|
|
"glBeginQuery",
|
|
|
|
"glBeginQueryIndexed",
|
|
|
|
"glBeginTransformFeedback",
|
|
|
|
"glBindAttribLocation",
|
|
|
|
"glBindBuffer",
|
|
|
|
"glBindBufferBase",
|
|
|
|
"glBindBufferRange",
|
|
|
|
"glBindBuffersBase",
|
|
|
|
"glBindBuffersRange",
|
|
|
|
"glBindFragDataLocation",
|
|
|
|
"glBindFragDataLocationIndexed",
|
|
|
|
"glBindFramebuffer",
|
|
|
|
"glBindImageTexture",
|
|
|
|
"glBindImageTextures",
|
|
|
|
"glBindProgramPipeline",
|
|
|
|
"glBindRenderbuffer",
|
|
|
|
"glBindSampler",
|
|
|
|
"glBindSamplers",
|
|
|
|
"glBindTexture",
|
|
|
|
"glBindTextureUnit",
|
|
|
|
"glBindTextures",
|
|
|
|
"glBindTransformFeedback",
|
|
|
|
"glBindVertexArray",
|
|
|
|
"glBindVertexBuffer",
|
|
|
|
"glBindVertexBuffers",
|
|
|
|
"glBlendColor",
|
|
|
|
"glBlendEquation",
|
|
|
|
"glBlendEquationSeparate",
|
|
|
|
"glBlendEquationSeparatei",
|
|
|
|
"glBlendEquationi",
|
|
|
|
"glBlendFunc",
|
|
|
|
"glBlendFuncSeparate",
|
|
|
|
"glBlendFuncSeparatei",
|
|
|
|
"glBlendFunci",
|
|
|
|
"glBlitFramebuffer",
|
|
|
|
"glBlitNamedFramebuffer",
|
|
|
|
"glBufferData",
|
|
|
|
"glBufferStorage",
|
|
|
|
"glBufferSubData",
|
|
|
|
"glCheckFramebufferStatus",
|
|
|
|
"glCheckNamedFramebufferStatus",
|
|
|
|
"glClampColor",
|
|
|
|
"glClear",
|
|
|
|
"glClearBufferData",
|
|
|
|
"glClearBufferSubData",
|
|
|
|
"glClearBufferfi",
|
|
|
|
"glClearBufferfv",
|
|
|
|
"glClearBufferiv",
|
|
|
|
"glClearBufferuiv",
|
|
|
|
"glClearColor",
|
|
|
|
"glClearDepth",
|
|
|
|
"glClearDepthf",
|
|
|
|
"glClearNamedBufferData",
|
|
|
|
"glClearNamedBufferSubData",
|
|
|
|
"glClearNamedFramebufferfi",
|
|
|
|
"glClearNamedFramebufferfv",
|
|
|
|
"glClearNamedFramebufferiv",
|
|
|
|
"glClearNamedFramebufferuiv",
|
|
|
|
"glClearStencil",
|
|
|
|
"glClearTexImage",
|
|
|
|
"glClearTexSubImage",
|
|
|
|
"glClientWaitSync",
|
|
|
|
"glClipControl",
|
|
|
|
"glColorMask",
|
|
|
|
"glColorMaski",
|
|
|
|
"glCompileShader",
|
|
|
|
"glCompressedTexImage1D",
|
|
|
|
"glCompressedTexImage2D",
|
|
|
|
"glCompressedTexImage3D",
|
|
|
|
"glCompressedTexSubImage1D",
|
|
|
|
"glCompressedTexSubImage2D",
|
|
|
|
"glCompressedTexSubImage3D",
|
|
|
|
"glCompressedTextureSubImage1D",
|
|
|
|
"glCompressedTextureSubImage2D",
|
|
|
|
"glCompressedTextureSubImage3D",
|
|
|
|
"glCopyBufferSubData",
|
|
|
|
"glCopyImageSubData",
|
|
|
|
"glCopyNamedBufferSubData",
|
|
|
|
"glCopyTexImage1D",
|
|
|
|
"glCopyTexImage2D",
|
|
|
|
"glCopyTexSubImage1D",
|
|
|
|
"glCopyTexSubImage2D",
|
|
|
|
"glCopyTexSubImage3D",
|
|
|
|
"glCopyTextureSubImage1D",
|
|
|
|
"glCopyTextureSubImage2D",
|
|
|
|
"glCopyTextureSubImage3D",
|
|
|
|
"glCreateBuffers",
|
|
|
|
"glCreateFramebuffers",
|
|
|
|
"glCreateProgram",
|
|
|
|
"glCreateProgramPipelines",
|
|
|
|
"glCreateQueries",
|
|
|
|
"glCreateRenderbuffers",
|
|
|
|
"glCreateSamplers",
|
|
|
|
"glCreateShader",
|
|
|
|
"glCreateShaderProgramv",
|
|
|
|
"glCreateTextures",
|
|
|
|
"glCreateTransformFeedbacks",
|
|
|
|
"glCreateVertexArrays",
|
|
|
|
"glCullFace",
|
|
|
|
"glDebugMessageCallback",
|
|
|
|
"glDebugMessageControl",
|
|
|
|
"glDebugMessageInsert",
|
|
|
|
"glDeleteBuffers",
|
|
|
|
"glDeleteFramebuffers",
|
|
|
|
"glDeleteProgram",
|
|
|
|
"glDeleteProgramPipelines",
|
|
|
|
"glDeleteQueries",
|
|
|
|
"glDeleteRenderbuffers",
|
|
|
|
"glDeleteSamplers",
|
|
|
|
"glDeleteShader",
|
|
|
|
"glDeleteSync",
|
|
|
|
"glDeleteTextures",
|
|
|
|
"glDeleteTransformFeedbacks",
|
|
|
|
"glDeleteVertexArrays",
|
|
|
|
"glDepthFunc",
|
|
|
|
"glDepthMask",
|
|
|
|
"glDepthRange",
|
|
|
|
"glDepthRangeArrayv",
|
|
|
|
"glDepthRangeIndexed",
|
|
|
|
"glDepthRangef",
|
|
|
|
"glDetachShader",
|
|
|
|
"glDisable",
|
|
|
|
"glDisableVertexArrayAttrib",
|
|
|
|
"glDisableVertexAttribArray",
|
|
|
|
"glDisablei",
|
|
|
|
"glDispatchCompute",
|
|
|
|
"glDispatchComputeIndirect",
|
|
|
|
"glDrawArrays",
|
|
|
|
"glDrawArraysIndirect",
|
|
|
|
"glDrawArraysInstanced",
|
|
|
|
"glDrawArraysInstancedBaseInstance",
|
|
|
|
"glDrawBuffer",
|
|
|
|
"glDrawBuffers",
|
|
|
|
"glDrawElements",
|
|
|
|
"glDrawElementsBaseVertex",
|
|
|
|
"glDrawElementsIndirect",
|
|
|
|
"glDrawElementsInstanced",
|
|
|
|
"glDrawElementsInstancedBaseInstance",
|
|
|
|
"glDrawElementsInstancedBaseVertex",
|
|
|
|
"glDrawElementsInstancedBaseVertexBaseInstance",
|
|
|
|
"glDrawRangeElements",
|
|
|
|
"glDrawRangeElementsBaseVertex",
|
|
|
|
"glDrawTransformFeedback",
|
|
|
|
"glDrawTransformFeedbackInstanced",
|
|
|
|
"glDrawTransformFeedbackStream",
|
|
|
|
"glDrawTransformFeedbackStreamInstanced",
|
|
|
|
"glEnable",
|
|
|
|
"glEnableVertexArrayAttrib",
|
|
|
|
"glEnableVertexAttribArray",
|
|
|
|
"glEnablei",
|
|
|
|
"glEndConditionalRender",
|
|
|
|
"glEndQuery",
|
|
|
|
"glEndQueryIndexed",
|
|
|
|
"glEndTransformFeedback",
|
|
|
|
"glFenceSync",
|
|
|
|
"glFinish",
|
|
|
|
"glFlush",
|
|
|
|
"glFlushMappedBufferRange",
|
|
|
|
"glFlushMappedNamedBufferRange",
|
|
|
|
"glFramebufferParameteri",
|
|
|
|
"glFramebufferParameteriMESA",
|
|
|
|
"glFramebufferRenderbuffer",
|
|
|
|
"glFramebufferTexture",
|
|
|
|
"glFramebufferTexture1D",
|
|
|
|
"glFramebufferTexture2D",
|
|
|
|
"glFramebufferTexture3D",
|
|
|
|
"glFramebufferTextureLayer",
|
|
|
|
"glFrontFace",
|
|
|
|
"glGenBuffers",
|
|
|
|
"glGenFramebuffers",
|
|
|
|
"glGenProgramPipelines",
|
|
|
|
"glGenQueries",
|
|
|
|
"glGenRenderbuffers",
|
|
|
|
"glGenSamplers",
|
|
|
|
"glGenTextures",
|
|
|
|
"glGenTransformFeedbacks",
|
|
|
|
"glGenVertexArrays",
|
|
|
|
"glGenerateMipmap",
|
|
|
|
"glGenerateTextureMipmap",
|
|
|
|
"glGetActiveAtomicCounterBufferiv",
|
|
|
|
"glGetActiveAttrib",
|
|
|
|
"glGetActiveSubroutineName",
|
|
|
|
"glGetActiveSubroutineUniformName",
|
|
|
|
"glGetActiveSubroutineUniformiv",
|
|
|
|
"glGetActiveUniform",
|
|
|
|
"glGetActiveUniformBlockName",
|
|
|
|
"glGetActiveUniformBlockiv",
|
|
|
|
"glGetActiveUniformName",
|
|
|
|
"glGetActiveUniformsiv",
|
|
|
|
"glGetAttachedShaders",
|
|
|
|
"glGetAttribLocation",
|
|
|
|
"glGetBooleani_v",
|
|
|
|
"glGetBooleanv",
|
|
|
|
"glGetBufferParameteri64v",
|
|
|
|
"glGetBufferParameteriv",
|
|
|
|
"glGetBufferPointerv",
|
|
|
|
"glGetBufferSubData",
|
|
|
|
"glGetCompressedTexImage",
|
|
|
|
"glGetCompressedTextureImage",
|
|
|
|
"glGetCompressedTextureSubImage",
|
|
|
|
"glGetDebugMessageLog",
|
|
|
|
"glGetDoublei_v",
|
|
|
|
"glGetDoublev",
|
|
|
|
"glGetError",
|
|
|
|
"glGetFloati_v",
|
|
|
|
"glGetFloatv",
|
|
|
|
"glGetFragDataIndex",
|
|
|
|
"glGetFragDataLocation",
|
|
|
|
"glGetFramebufferAttachmentParameteriv",
|
|
|
|
"glGetFramebufferParameteriv",
|
|
|
|
"glGetFramebufferParameterivMESA",
|
|
|
|
"glGetGraphicsResetStatus",
|
|
|
|
"glGetInteger64i_v",
|
|
|
|
"glGetInteger64v",
|
|
|
|
"glGetIntegeri_v",
|
|
|
|
"glGetIntegerv",
|
|
|
|
"glGetInternalformati64v",
|
|
|
|
"glGetInternalformativ",
|
|
|
|
"glGetMultisamplefv",
|
|
|
|
"glGetNamedBufferParameteri64v",
|
|
|
|
"glGetNamedBufferParameteriv",
|
|
|
|
"glGetNamedBufferPointerv",
|
|
|
|
"glGetNamedBufferSubData",
|
|
|
|
"glGetNamedFramebufferAttachmentParameteriv",
|
|
|
|
"glGetNamedFramebufferParameteriv",
|
|
|
|
"glGetNamedRenderbufferParameteriv",
|
|
|
|
"glGetObjectLabel",
|
|
|
|
"glGetObjectPtrLabel",
|
|
|
|
"glGetPointerv",
|
|
|
|
"glGetProgramBinary",
|
|
|
|
"glGetProgramInfoLog",
|
|
|
|
"glGetProgramInterfaceiv",
|
|
|
|
"glGetProgramPipelineInfoLog",
|
|
|
|
"glGetProgramPipelineiv",
|
|
|
|
"glGetProgramResourceIndex",
|
|
|
|
"glGetProgramResourceLocation",
|
|
|
|
"glGetProgramResourceLocationIndex",
|
|
|
|
"glGetProgramResourceName",
|
|
|
|
"glGetProgramResourceiv",
|
|
|
|
"glGetProgramStageiv",
|
|
|
|
"glGetProgramiv",
|
|
|
|
"glGetQueryBufferObjecti64v",
|
|
|
|
"glGetQueryBufferObjectiv",
|
|
|
|
"glGetQueryBufferObjectui64v",
|
|
|
|
"glGetQueryBufferObjectuiv",
|
|
|
|
"glGetQueryIndexediv",
|
|
|
|
"glGetQueryObjecti64v",
|
|
|
|
"glGetQueryObjectiv",
|
|
|
|
"glGetQueryObjectui64v",
|
|
|
|
"glGetQueryObjectuiv",
|
|
|
|
"glGetQueryiv",
|
|
|
|
"glGetRenderbufferParameteriv",
|
|
|
|
"glGetSamplerParameterIiv",
|
|
|
|
"glGetSamplerParameterIuiv",
|
|
|
|
"glGetSamplerParameterfv",
|
|
|
|
"glGetSamplerParameteriv",
|
|
|
|
"glGetShaderInfoLog",
|
|
|
|
"glGetShaderPrecisionFormat",
|
|
|
|
"glGetShaderSource",
|
|
|
|
"glGetShaderiv",
|
|
|
|
"glGetString",
|
|
|
|
"glGetStringi",
|
|
|
|
"glGetSubroutineIndex",
|
|
|
|
"glGetSubroutineUniformLocation",
|
|
|
|
"glGetSynciv",
|
|
|
|
"glGetTexImage",
|
|
|
|
"glGetTexLevelParameterfv",
|
|
|
|
"glGetTexLevelParameteriv",
|
|
|
|
"glGetTexParameterIiv",
|
|
|
|
"glGetTexParameterIuiv",
|
|
|
|
"glGetTexParameterfv",
|
|
|
|
"glGetTexParameteriv",
|
|
|
|
"glGetTextureImage",
|
|
|
|
"glGetTextureLevelParameterfv",
|
|
|
|
"glGetTextureLevelParameteriv",
|
|
|
|
"glGetTextureParameterIiv",
|
|
|
|
"glGetTextureParameterIuiv",
|
|
|
|
"glGetTextureParameterfv",
|
|
|
|
"glGetTextureParameteriv",
|
|
|
|
"glGetTextureSubImage",
|
|
|
|
"glGetTransformFeedbackVarying",
|
|
|
|
"glGetTransformFeedbacki64_v",
|
|
|
|
"glGetTransformFeedbacki_v",
|
|
|
|
"glGetTransformFeedbackiv",
|
|
|
|
"glGetUniformBlockIndex",
|
|
|
|
"glGetUniformIndices",
|
|
|
|
"glGetUniformLocation",
|
|
|
|
"glGetUniformSubroutineuiv",
|
|
|
|
"glGetUniformdv",
|
|
|
|
"glGetUniformfv",
|
|
|
|
"glGetUniformiv",
|
|
|
|
"glGetUniformuiv",
|
|
|
|
"glGetVertexArrayIndexed64iv",
|
|
|
|
"glGetVertexArrayIndexediv",
|
|
|
|
"glGetVertexArrayiv",
|
|
|
|
"glGetVertexAttribIiv",
|
|
|
|
"glGetVertexAttribIuiv",
|
|
|
|
"glGetVertexAttribLdv",
|
|
|
|
"glGetVertexAttribPointerv",
|
|
|
|
"glGetVertexAttribdv",
|
|
|
|
"glGetVertexAttribfv",
|
|
|
|
"glGetVertexAttribiv",
|
|
|
|
"glGetnCompressedTexImage",
|
|
|
|
"glGetnTexImage",
|
|
|
|
"glGetnUniformdv",
|
|
|
|
"glGetnUniformfv",
|
|
|
|
"glGetnUniformiv",
|
|
|
|
"glGetnUniformuiv",
|
|
|
|
"glHint",
|
|
|
|
"glInvalidateBufferData",
|
|
|
|
"glInvalidateBufferSubData",
|
|
|
|
"glInvalidateFramebuffer",
|
|
|
|
"glInvalidateNamedFramebufferData",
|
|
|
|
"glInvalidateNamedFramebufferSubData",
|
|
|
|
"glInvalidateSubFramebuffer",
|
|
|
|
"glInvalidateTexImage",
|
|
|
|
"glInvalidateTexSubImage",
|
|
|
|
"glIsBuffer",
|
|
|
|
"glIsEnabled",
|
|
|
|
"glIsEnabledi",
|
|
|
|
"glIsFramebuffer",
|
|
|
|
"glIsProgram",
|
|
|
|
"glIsProgramPipeline",
|
|
|
|
"glIsQuery",
|
|
|
|
"glIsRenderbuffer",
|
|
|
|
"glIsSampler",
|
|
|
|
"glIsShader",
|
|
|
|
"glIsSync",
|
|
|
|
"glIsTexture",
|
|
|
|
"glIsTransformFeedback",
|
|
|
|
"glIsVertexArray",
|
|
|
|
"glLineWidth",
|
|
|
|
"glLinkProgram",
|
|
|
|
"glLogicOp",
|
|
|
|
"glMapBuffer",
|
|
|
|
"glMapBufferRange",
|
|
|
|
"glMapNamedBuffer",
|
|
|
|
"glMapNamedBufferRange",
|
|
|
|
"glMemoryBarrier",
|
|
|
|
"glMemoryBarrierByRegion",
|
|
|
|
"glMinSampleShading",
|
|
|
|
"glMultiDrawArrays",
|
|
|
|
"glMultiDrawArraysIndirect",
|
|
|
|
"glMultiDrawArraysIndirectCount",
|
|
|
|
"glMultiDrawElements",
|
|
|
|
"glMultiDrawElementsBaseVertex",
|
|
|
|
"glMultiDrawElementsIndirect",
|
|
|
|
"glMultiDrawElementsIndirectCount",
|
|
|
|
"glNamedBufferData",
|
|
|
|
"glNamedBufferStorage",
|
|
|
|
"glNamedBufferSubData",
|
|
|
|
"glNamedFramebufferDrawBuffer",
|
|
|
|
"glNamedFramebufferDrawBuffers",
|
|
|
|
"glNamedFramebufferParameteri",
|
|
|
|
"glNamedFramebufferReadBuffer",
|
|
|
|
"glNamedFramebufferRenderbuffer",
|
|
|
|
"glNamedFramebufferTexture",
|
|
|
|
"glNamedFramebufferTextureLayer",
|
|
|
|
"glNamedRenderbufferStorage",
|
|
|
|
"glNamedRenderbufferStorageMultisample",
|
|
|
|
"glObjectLabel",
|
|
|
|
"glObjectPtrLabel",
|
|
|
|
"glPatchParameterfv",
|
|
|
|
"glPatchParameteri",
|
|
|
|
"glPauseTransformFeedback",
|
|
|
|
"glPixelStoref",
|
|
|
|
"glPixelStorei",
|
|
|
|
"glPointParameterf",
|
|
|
|
"glPointParameterfv",
|
|
|
|
"glPointParameteri",
|
|
|
|
"glPointParameteriv",
|
|
|
|
"glPointSize",
|
|
|
|
"glPolygonMode",
|
|
|
|
"glPolygonOffset",
|
|
|
|
"glPolygonOffsetClamp",
|
|
|
|
"glPopDebugGroup",
|
|
|
|
"glPrimitiveRestartIndex",
|
|
|
|
"glProgramBinary",
|
|
|
|
"glProgramParameteri",
|
|
|
|
"glProgramUniform1d",
|
|
|
|
"glProgramUniform1dv",
|
|
|
|
"glProgramUniform1f",
|
|
|
|
"glProgramUniform1fv",
|
|
|
|
"glProgramUniform1i",
|
|
|
|
"glProgramUniform1iv",
|
|
|
|
"glProgramUniform1ui",
|
|
|
|
"glProgramUniform1uiv",
|
|
|
|
"glProgramUniform2d",
|
|
|
|
"glProgramUniform2dv",
|
|
|
|
"glProgramUniform2f",
|
|
|
|
"glProgramUniform2fv",
|
|
|
|
"glProgramUniform2i",
|
|
|
|
"glProgramUniform2iv",
|
|
|
|
"glProgramUniform2ui",
|
|
|
|
"glProgramUniform2uiv",
|
|
|
|
"glProgramUniform3d",
|
|
|
|
"glProgramUniform3dv",
|
|
|
|
"glProgramUniform3f",
|
|
|
|
"glProgramUniform3fv",
|
|
|
|
"glProgramUniform3i",
|
|
|
|
"glProgramUniform3iv",
|
|
|
|
"glProgramUniform3ui",
|
|
|
|
"glProgramUniform3uiv",
|
|
|
|
"glProgramUniform4d",
|
|
|
|
"glProgramUniform4dv",
|
|
|
|
"glProgramUniform4f",
|
|
|
|
"glProgramUniform4fv",
|
|
|
|
"glProgramUniform4i",
|
|
|
|
"glProgramUniform4iv",
|
|
|
|
"glProgramUniform4ui",
|
|
|
|
"glProgramUniform4uiv",
|
|
|
|
"glProgramUniformMatrix2dv",
|
|
|
|
"glProgramUniformMatrix2fv",
|
|
|
|
"glProgramUniformMatrix2x3dv",
|
|
|
|
"glProgramUniformMatrix2x3fv",
|
|
|
|
"glProgramUniformMatrix2x4dv",
|
|
|
|
"glProgramUniformMatrix2x4fv",
|
|
|
|
"glProgramUniformMatrix3dv",
|
|
|
|
"glProgramUniformMatrix3fv",
|
|
|
|
"glProgramUniformMatrix3x2dv",
|
|
|
|
"glProgramUniformMatrix3x2fv",
|
|
|
|
"glProgramUniformMatrix3x4dv",
|
|
|
|
"glProgramUniformMatrix3x4fv",
|
|
|
|
"glProgramUniformMatrix4dv",
|
|
|
|
"glProgramUniformMatrix4fv",
|
|
|
|
"glProgramUniformMatrix4x2dv",
|
|
|
|
"glProgramUniformMatrix4x2fv",
|
|
|
|
"glProgramUniformMatrix4x3dv",
|
|
|
|
"glProgramUniformMatrix4x3fv",
|
|
|
|
"glProvokingVertex",
|
|
|
|
"glPushDebugGroup",
|
|
|
|
"glQueryCounter",
|
|
|
|
"glReadBuffer",
|
|
|
|
"glReadPixels",
|
|
|
|
"glReadnPixels",
|
|
|
|
"glReleaseShaderCompiler",
|
|
|
|
"glRenderbufferStorage",
|
|
|
|
"glRenderbufferStorageMultisample",
|
|
|
|
"glResumeTransformFeedback",
|
|
|
|
"glSampleCoverage",
|
|
|
|
"glSampleMaski",
|
|
|
|
"glSamplerParameterIiv",
|
|
|
|
"glSamplerParameterIuiv",
|
|
|
|
"glSamplerParameterf",
|
|
|
|
"glSamplerParameterfv",
|
|
|
|
"glSamplerParameteri",
|
|
|
|
"glSamplerParameteriv",
|
|
|
|
"glScissor",
|
|
|
|
"glScissorArrayv",
|
|
|
|
"glScissorIndexed",
|
|
|
|
"glScissorIndexedv",
|
|
|
|
"glShaderBinary",
|
|
|
|
"glShaderSource",
|
|
|
|
"glShaderStorageBlockBinding",
|
|
|
|
"glSpecializeShader",
|
|
|
|
"glStencilFunc",
|
|
|
|
"glStencilFuncSeparate",
|
|
|
|
"glStencilMask",
|
|
|
|
"glStencilMaskSeparate",
|
|
|
|
"glStencilOp",
|
|
|
|
"glStencilOpSeparate",
|
|
|
|
"glTexBuffer",
|
|
|
|
"glTexBufferRange",
|
|
|
|
"glTexImage1D",
|
|
|
|
"glTexImage2D",
|
|
|
|
"glTexImage2DMultisample",
|
|
|
|
"glTexImage3D",
|
|
|
|
"glTexImage3DMultisample",
|
|
|
|
"glTexParameterIiv",
|
|
|
|
"glTexParameterIuiv",
|
|
|
|
"glTexParameterf",
|
|
|
|
"glTexParameterfv",
|
|
|
|
"glTexParameteri",
|
|
|
|
"glTexParameteriv",
|
|
|
|
"glTexStorage1D",
|
|
|
|
"glTexStorage2D",
|
|
|
|
"glTexStorage2DMultisample",
|
|
|
|
"glTexStorage3D",
|
|
|
|
"glTexStorage3DMultisample",
|
|
|
|
"glTexSubImage1D",
|
|
|
|
"glTexSubImage2D",
|
|
|
|
"glTexSubImage3D",
|
|
|
|
"glTextureBarrier",
|
|
|
|
"glTextureBuffer",
|
|
|
|
"glTextureBufferRange",
|
|
|
|
"glTextureParameterIiv",
|
|
|
|
"glTextureParameterIuiv",
|
|
|
|
"glTextureParameterf",
|
|
|
|
"glTextureParameterfv",
|
|
|
|
"glTextureParameteri",
|
|
|
|
"glTextureParameteriv",
|
|
|
|
"glTextureStorage1D",
|
|
|
|
"glTextureStorage2D",
|
|
|
|
"glTextureStorage2DMultisample",
|
|
|
|
"glTextureStorage3D",
|
|
|
|
"glTextureStorage3DMultisample",
|
|
|
|
"glTextureSubImage1D",
|
|
|
|
"glTextureSubImage2D",
|
|
|
|
"glTextureSubImage3D",
|
|
|
|
"glTextureView",
|
|
|
|
"glTransformFeedbackBufferBase",
|
|
|
|
"glTransformFeedbackBufferRange",
|
|
|
|
"glTransformFeedbackVaryings",
|
|
|
|
"glUniform1d",
|
|
|
|
"glUniform1dv",
|
|
|
|
"glUniform1f",
|
|
|
|
"glUniform1fv",
|
|
|
|
"glUniform1i",
|
|
|
|
"glUniform1iv",
|
|
|
|
"glUniform1ui",
|
|
|
|
"glUniform1uiv",
|
|
|
|
"glUniform2d",
|
|
|
|
"glUniform2dv",
|
|
|
|
"glUniform2f",
|
|
|
|
"glUniform2fv",
|
|
|
|
"glUniform2i",
|
|
|
|
"glUniform2iv",
|
|
|
|
"glUniform2ui",
|
|
|
|
"glUniform2uiv",
|
|
|
|
"glUniform3d",
|
|
|
|
"glUniform3dv",
|
|
|
|
"glUniform3f",
|
|
|
|
"glUniform3fv",
|
|
|
|
"glUniform3i",
|
|
|
|
"glUniform3iv",
|
|
|
|
"glUniform3ui",
|
|
|
|
"glUniform3uiv",
|
|
|
|
"glUniform4d",
|
|
|
|
"glUniform4dv",
|
|
|
|
"glUniform4f",
|
|
|
|
"glUniform4fv",
|
|
|
|
"glUniform4i",
|
|
|
|
"glUniform4iv",
|
|
|
|
"glUniform4ui",
|
|
|
|
"glUniform4uiv",
|
|
|
|
"glUniformBlockBinding",
|
|
|
|
"glUniformMatrix2dv",
|
|
|
|
"glUniformMatrix2fv",
|
|
|
|
"glUniformMatrix2x3dv",
|
|
|
|
"glUniformMatrix2x3fv",
|
|
|
|
"glUniformMatrix2x4dv",
|
|
|
|
"glUniformMatrix2x4fv",
|
|
|
|
"glUniformMatrix3dv",
|
|
|
|
"glUniformMatrix3fv",
|
|
|
|
"glUniformMatrix3x2dv",
|
|
|
|
"glUniformMatrix3x2fv",
|
|
|
|
"glUniformMatrix3x4dv",
|
|
|
|
"glUniformMatrix3x4fv",
|
|
|
|
"glUniformMatrix4dv",
|
|
|
|
"glUniformMatrix4fv",
|
|
|
|
"glUniformMatrix4x2dv",
|
|
|
|
"glUniformMatrix4x2fv",
|
|
|
|
"glUniformMatrix4x3dv",
|
|
|
|
"glUniformMatrix4x3fv",
|
|
|
|
"glUniformSubroutinesuiv",
|
|
|
|
"glUnmapBuffer",
|
|
|
|
"glUnmapNamedBuffer",
|
|
|
|
"glUseProgram",
|
|
|
|
"glUseProgramStages",
|
|
|
|
"glValidateProgram",
|
|
|
|
"glValidateProgramPipeline",
|
|
|
|
"glVertexArrayAttribBinding",
|
|
|
|
"glVertexArrayAttribFormat",
|
|
|
|
"glVertexArrayAttribIFormat",
|
|
|
|
"glVertexArrayAttribLFormat",
|
|
|
|
"glVertexArrayBindingDivisor",
|
|
|
|
"glVertexArrayElementBuffer",
|
|
|
|
"glVertexArrayVertexBuffer",
|
|
|
|
"glVertexArrayVertexBuffers",
|
|
|
|
"glVertexAttrib1d",
|
|
|
|
"glVertexAttrib1dv",
|
|
|
|
"glVertexAttrib1f",
|
|
|
|
"glVertexAttrib1fv",
|
|
|
|
"glVertexAttrib1s",
|
|
|
|
"glVertexAttrib1sv",
|
|
|
|
"glVertexAttrib2d",
|
|
|
|
"glVertexAttrib2dv",
|
|
|
|
"glVertexAttrib2f",
|
|
|
|
"glVertexAttrib2fv",
|
|
|
|
"glVertexAttrib2s",
|
|
|
|
"glVertexAttrib2sv",
|
|
|
|
"glVertexAttrib3d",
|
|
|
|
"glVertexAttrib3dv",
|
|
|
|
"glVertexAttrib3f",
|
|
|
|
"glVertexAttrib3fv",
|
|
|
|
"glVertexAttrib3s",
|
|
|
|
"glVertexAttrib3sv",
|
|
|
|
"glVertexAttrib4Nbv",
|
|
|
|
"glVertexAttrib4Niv",
|
|
|
|
"glVertexAttrib4Nsv",
|
|
|
|
"glVertexAttrib4Nub",
|
|
|
|
"glVertexAttrib4Nubv",
|
|
|
|
"glVertexAttrib4Nuiv",
|
|
|
|
"glVertexAttrib4Nusv",
|
|
|
|
"glVertexAttrib4bv",
|
|
|
|
"glVertexAttrib4d",
|
|
|
|
"glVertexAttrib4dv",
|
|
|
|
"glVertexAttrib4f",
|
|
|
|
"glVertexAttrib4fv",
|
|
|
|
"glVertexAttrib4iv",
|
|
|
|
"glVertexAttrib4s",
|
|
|
|
"glVertexAttrib4sv",
|
|
|
|
"glVertexAttrib4ubv",
|
|
|
|
"glVertexAttrib4uiv",
|
|
|
|
"glVertexAttrib4usv",
|
|
|
|
"glVertexAttribBinding",
|
|
|
|
"glVertexAttribDivisor",
|
|
|
|
"glVertexAttribFormat",
|
|
|
|
"glVertexAttribI1i",
|
|
|
|
"glVertexAttribI1iv",
|
|
|
|
"glVertexAttribI1ui",
|
|
|
|
"glVertexAttribI1uiv",
|
|
|
|
"glVertexAttribI2i",
|
|
|
|
"glVertexAttribI2iv",
|
|
|
|
"glVertexAttribI2ui",
|
|
|
|
"glVertexAttribI2uiv",
|
|
|
|
"glVertexAttribI3i",
|
|
|
|
"glVertexAttribI3iv",
|
|
|
|
"glVertexAttribI3ui",
|
|
|
|
"glVertexAttribI3uiv",
|
|
|
|
"glVertexAttribI4bv",
|
|
|
|
"glVertexAttribI4i",
|
|
|
|
"glVertexAttribI4iv",
|
|
|
|
"glVertexAttribI4sv",
|
|
|
|
"glVertexAttribI4ubv",
|
|
|
|
"glVertexAttribI4ui",
|
|
|
|
"glVertexAttribI4uiv",
|
|
|
|
"glVertexAttribI4usv",
|
|
|
|
"glVertexAttribIFormat",
|
|
|
|
"glVertexAttribIPointer",
|
|
|
|
"glVertexAttribL1d",
|
|
|
|
"glVertexAttribL1dv",
|
|
|
|
"glVertexAttribL2d",
|
|
|
|
"glVertexAttribL2dv",
|
|
|
|
"glVertexAttribL3d",
|
|
|
|
"glVertexAttribL3dv",
|
|
|
|
"glVertexAttribL4d",
|
|
|
|
"glVertexAttribL4dv",
|
|
|
|
"glVertexAttribLFormat",
|
|
|
|
"glVertexAttribLPointer",
|
|
|
|
"glVertexAttribP1ui",
|
|
|
|
"glVertexAttribP1uiv",
|
|
|
|
"glVertexAttribP2ui",
|
|
|
|
"glVertexAttribP2uiv",
|
|
|
|
"glVertexAttribP3ui",
|
|
|
|
"glVertexAttribP3uiv",
|
|
|
|
"glVertexAttribP4ui",
|
|
|
|
"glVertexAttribP4uiv",
|
|
|
|
"glVertexAttribPointer",
|
|
|
|
"glVertexBindingDivisor",
|
|
|
|
"glViewport",
|
|
|
|
"glViewportArrayv",
|
|
|
|
"glViewportIndexedf",
|
|
|
|
"glViewportIndexedfv",
|
|
|
|
"glWaitSync",
|
|
|
|
};
|
|
|
|
|
|
|
|
union GL3WProcs gl3wProcs;
|
2017-09-15 19:25:47 +00:00
|
|
|
|
2021-03-16 06:48:47 +00:00
|
|
|
static void load_procs(GL3WGetProcAddressProc proc)
|
2017-09-15 19:25:47 +00:00
|
|
|
{
|
2021-03-16 06:48:47 +00:00
|
|
|
size_t i;
|
|
|
|
|
|
|
|
for (i = 0; i < ARRAY_SIZE(proc_names); i++)
|
|
|
|
gl3wProcs.ptr[i] = proc(proc_names[i]);
|
2017-09-15 19:25:47 +00:00
|
|
|
}
|