1#include "GLFuncPointers.h"
2#include "Foundation/StringView.h"
4#include "Foundation/Logging/Logger.h"
6#if defined(__EMSCRIPTEN__)
18 void glClipControl(GLenum origin, GLenum depth)
25 for (
const item of Object.values(Module.GL.contexts)) {
26 if (item && item.hasOwnProperty(
'GLctx')) {
27 const ext = item.GLctx.getExtension(
"EXT_clip_control");
29 ext.clipControlEXT(origin, depth);
38bool has_glClipControl()
40 int numExtensions = 0;
41 glGetIntegerv(GL_NUM_EXTENSIONS, &numExtensions);
42 for (
int i = 0; i < numExtensions; i++) {
44 case Cogs::hash(
"GL_EXT_clip_control"): return true;
51#elif !defined(__APPLE__)
58PFNGLACTIVETEXTUREPROC glActiveTexture =
nullptr;
59PFNGLATTACHSHADERPROC glAttachShader =
nullptr;
60PFNGLBINDBUFFERBASEPROC glBindBufferBase =
nullptr;
61PFNGLBINDBUFFERPROC glBindBuffer =
nullptr;
62PFNGLBINDBUFFERRANGEPROC glBindBufferRange =
nullptr;
63PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer =
nullptr;
64PFNGLBINDIMAGETEXTUREPROC glBindImageTexture =
nullptr;
65PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer =
nullptr;
66PFNGLBINDSAMPLERPROC glBindSampler =
nullptr;
67PFNGLBINDTEXTUREPROC glBindTexture =
nullptr;
68PFNGLBINDVERTEXARRAYPROC glBindVertexArray =
nullptr;
69PFNGLBLENDCOLORPROC glBlendColor =
nullptr;
70PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate =
nullptr;
71PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate =
nullptr;
72PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer =
nullptr;
73PFNGLBUFFERDATAPROC glBufferData =
nullptr;
74PFNGLBUFFERSUBDATAPROC glBufferSubData =
nullptr;
75PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus =
nullptr;
76PFNGLCLEARBUFFERDATAPROC glClearBufferData =
nullptr;
77PFNGLCLEARBUFFERFVPROC glClearBufferfv =
nullptr;
78PFNGLCLEARBUFFERIVPROC glClearBufferiv =
nullptr;
79PFNGLCLEARBUFFERUIVPROC glClearBufferuiv =
nullptr;
80PFNGLCLEARCOLORPROC glClearColor =
nullptr;
81PFNGLCLEARDEPTHFPROC glClearDepthf =
nullptr;
82PFNGLCLEARDEPTHPROC glClearDepth =
nullptr;
83PFNGLCLEARNAMEDBUFFERDATAPROC glClearNamedBufferData =
nullptr;
84PFNGLCLEARPROC glClear =
nullptr;
85PFNGLCLIENTWAITSYNCPROC glClientWaitSync =
nullptr;
86#if defined(COGS_OPENGLES30)
87PFNGLCLIPCONTROLEXTPROC glClipControl =
nullptr;
89PFNGLCLIPCONTROLPROC glClipControl =
nullptr;
91PFNGLCOMPILESHADERPROC glCompileShader =
nullptr;
92PFNGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2D =
nullptr;
93PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D =
nullptr;
94PFNGLCOPYBUFFERSUBDATAPROC glCopyBufferSubData =
nullptr;
95PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData =
nullptr;
96PFNGLCOPYNAMEDBUFFERSUBDATAPROC glCopyNamedBufferSubData =
nullptr;
97PFNGLCOPYTEXSUBIMAGE2DPROC glCopyTexSubImage2D =
nullptr;
98PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D =
nullptr;
99PFNGLCREATEPROGRAMPROC glCreateProgram =
nullptr;
100PFNGLCREATESHADERPROC glCreateShader =
nullptr;
101PFNGLCULLFACEPROC glCullFace =
nullptr;
102PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback =
nullptr;
103PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl =
nullptr;
104PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert =
nullptr;
105PFNGLDELETEBUFFERSPROC glDeleteBuffers =
nullptr;
106PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers =
nullptr;
107PFNGLDELETEPROGRAMPROC glDeleteProgram =
nullptr;
108PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers =
nullptr;
109PFNGLDELETESAMPLERSPROC glDeleteSamplers =
nullptr;
110PFNGLDELETESHADERPROC glDeleteShader =
nullptr;
111PFNGLDELETESYNCPROC glDeleteSync =
nullptr;
112PFNGLDELETETEXTURESPROC glDeleteTextures =
nullptr;
113PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays =
nullptr;
114PFNGLDEPTHFUNCPROC glDepthFunc =
nullptr;
115PFNGLDEPTHMASKPROC glDepthMask =
nullptr;
116PFNGLDISABLEIPROC glDisablei =
nullptr;
117PFNGLDISABLEPROC glDisable =
nullptr;
118PFNGLDISABLEVERTEXARRAYATTRIBPROC glDisableVertexArrayAttrib =
nullptr;
119PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray =
nullptr;
120PFNGLDISPATCHCOMPUTEPROC glDispatchCompute =
nullptr;
121PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glDrawArraysInstancedBaseInstance =
nullptr;
122PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced =
nullptr;
123PFNGLDRAWARRAYSPROC glDrawArrays =
nullptr;
124PFNGLDRAWBUFFERPROC glDrawBuffer =
nullptr;
125PFNGLDRAWBUFFERSPROC glDrawBuffers =
nullptr;
126PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex =
nullptr;
127PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glDrawElementsInstancedBaseInstance =
nullptr;
128PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced =
nullptr;
129PFNGLDRAWELEMENTSPROC glDrawElements =
nullptr;
130PFNGLENABLEIPROC glEnablei =
nullptr;
131PFNGLENABLEPROC glEnable =
nullptr;
132PFNGLENABLEVERTEXARRAYATTRIBPROC glEnableVertexArrayAttrib =
nullptr;
133PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray =
nullptr;
134PFNGLFENCESYNCPROC glFenceSync =
nullptr;
135PFNGLFINISHPROC glFinish =
nullptr;
136PFNGLFLUSHPROC glFlush =
nullptr;
137PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer =
nullptr;
138PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D =
nullptr;
139PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer =
nullptr;
140PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glFramebufferTextureMultiviewOVR =
nullptr;
141PFNGLFRONTFACEPROC glFrontFace =
nullptr;
142PFNGLGENBUFFERSPROC glGenBuffers =
nullptr;
143PFNGLGENERATEMIPMAPPROC glGenerateMipmap =
nullptr;
144PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers =
nullptr;
145PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers =
nullptr;
146PFNGLGENSAMPLERSPROC glGenSamplers =
nullptr;
147PFNGLGENTEXTURESPROC glGenTextures =
nullptr;
148PFNGLGENVERTEXARRAYSPROC glGenVertexArrays =
nullptr;
149PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glGetActiveAtomicCounterBufferiv =
nullptr;
150PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib =
nullptr;
151PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv =
nullptr;
152PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName =
nullptr;
153PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName =
nullptr;
154PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform =
nullptr;
155PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv =
nullptr;
156PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders =
nullptr;
157PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation =
nullptr;
158PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData =
nullptr;
159PFNGLGETERRORPROC glGetError =
nullptr;
160PFNGLGETFLOATVPROC glGetFloatv =
nullptr;
161PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv =
nullptr;
162PFNGLGETINTEGERI_VPROC glGetIntegeri_v =
nullptr;
163PFNGLGETINTEGERVPROC glGetIntegerv =
nullptr;
164PFNGLGETINTERNALFORMATIVPROC glGetInternalformativ =
nullptr;
165PFNGLGETNAMEDBUFFERSUBDATAPROC glGetNamedBufferSubData =
nullptr;
166PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog =
nullptr;
167PFNGLGETPROGRAMIVPROC glGetProgramiv =
nullptr;
168PFNGLGETPROGRAMRESOURCEINDEXPROC glGetProgramResourceIndex =
nullptr;
169PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv =
nullptr;
170PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog =
nullptr;
171PFNGLGETSHADERIVPROC glGetShaderiv =
nullptr;
172PFNGLGETSHADERSOURCEPROC glGetShaderSource =
nullptr;
173PFNGLGETSTRINGIPROC glGetStringi =
nullptr;
174PFNGLGETSTRINGPROC glGetString =
nullptr;
175PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex =
nullptr;
176PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation =
nullptr;
177PFNGLINVALIDATEFRAMEBUFFERPROC glInvalidateFramebuffer =
nullptr;
178PFNGLISENABLEDPROC glIsEnabled =
nullptr;
179PFNGLLINKPROGRAMPROC glLinkProgram =
nullptr;
180PFNGLMAPBUFFERRANGEPROC glMapBufferRange =
nullptr;
181PFNGLMEMORYBARRIERPROC glMemoryBarrier =
nullptr;
182PFNGLNAMEDBUFFERDATAPROC glNamedBufferData =
nullptr;
183PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glNamedFramebufferDrawBuffer =
nullptr;
184PFNGLOBJECTLABELPROC glObjectLabel =
nullptr;
185PFNGLPIXELSTOREIPROC glPixelStorei =
nullptr;
186PFNGLPOLYGONMODEPROC glPolygonMode =
nullptr;
187PFNGLPOLYGONOFFSETPROC glPolygonOffset =
nullptr;
188PFNGLPOPDEBUGGROUPPROC glPopDebugGroup =
nullptr;
189PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup =
nullptr;
190PFNGLREADBUFFERPROC glReadBuffer =
nullptr;
191PFNGLREADPIXELSPROC glReadPixels =
nullptr;
192PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample =
nullptr;
193PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage =
nullptr;
194PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf =
nullptr;
195PFNGLSAMPLERPARAMETERFVPROC glSamplerParameterfv =
nullptr;
196PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri =
nullptr;
197PFNGLSCISSORPROC glScissor =
nullptr;
198PFNGLSHADERSOURCEPROC glShaderSource =
nullptr;
199PFNGLTEXIMAGE2DPROC glTexImage2D =
nullptr;
200PFNGLTEXPARAMETERIPROC glTexParameteri =
nullptr;
201PFNGLTEXSTORAGE1DPROC glTexStorage1D =
nullptr;
202PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample =
nullptr;
203PFNGLTEXSTORAGE2DPROC glTexStorage2D =
nullptr;
204PFNGLTEXSTORAGE3DMULTISAMPLEPROC glTexStorage3DMultisample =
nullptr;
205PFNGLTEXSTORAGE3DPROC glTexStorage3D =
nullptr;
206PFNGLTEXSUBIMAGE1DPROC glTexSubImage1D =
nullptr;
207PFNGLTEXSUBIMAGE2DPROC glTexSubImage2D =
nullptr;
208PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D =
nullptr;
209PFNGLTEXTUREVIEWPROC glTextureView =
nullptr;
210PFNGLUNIFORM1FPROC glUniform1f =
nullptr;
211PFNGLUNIFORM1FVPROC glUniform1fv =
nullptr;
212PFNGLUNIFORM1IPROC glUniform1i =
nullptr;
213PFNGLUNIFORM1IVPROC glUniform1iv =
nullptr;
214PFNGLUNIFORM2FVPROC glUniform2fv =
nullptr;
215PFNGLUNIFORM3FVPROC glUniform3fv =
nullptr;
216PFNGLUNIFORM4FVPROC glUniform4fv =
nullptr;
217PFNGLUNIFORM4IVPROC glUniform4iv =
nullptr;
218PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding =
nullptr;
219PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv =
nullptr;
220PFNGLUNMAPBUFFERPROC glUnmapBuffer =
nullptr;
221PFNGLUSEPROGRAMPROC glUseProgram =
nullptr;
222PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor =
nullptr;
223PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer =
nullptr;
224PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer =
nullptr;
225PFNGLVIEWPORTPROC glViewport =
nullptr;
226PFNGLWAITSYNCPROC glWaitSync =
nullptr;
228#if defined(COGS_OPENGLES30)
229PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC glFramebufferTextureMultisampleMultiviewOVR =
nullptr;
231PFNGLDEBUGMESSAGECALLBACKKHRPROC glDebugMessageCallbackKHR =
nullptr;
232PFNGLDEBUGMESSAGECONTROLKHRPROC glDebugMessageControlKHR =
nullptr;
233PFNGLDEBUGMESSAGEINSERTKHRPROC glDebugMessageInsertKHR =
nullptr;
234PFNGLOBJECTLABELKHRPROC glObjectLabelKHR =
nullptr;
238extern PFNGLXGETPROCADDRESSPROC _glXGetProcAddress;
242extern PFNEGLGETPROCADDRESSPROC _eglGetProcAddress;
248 void* getProcAddress(
const char* name)
252 auto* f = (
void*)wglGetProcAddress(name);
253 if (f && (f != (
void*)1) && (f != (
void*)2) && (f != (
void*)3) && (f != (
void*)-1)) {
256 HMODULE module = LoadLibraryA(
"opengl32.dll");
258 f = (
void*)GetProcAddress(module, name);
266 void* getProcAddress(
const char* name)
268 auto f = (
void*)_glXGetProcAddress((
const GLubyte*)name);
276 void* getProcAddress(
const char* name)
278 auto f = (
void*)_eglGetProcAddress(name);
289 bool has_GL_NV_instanced_arrays =
false;
290 bool has_GL_KHR_debug =
false;
291 bool has_GL_OCULUS_multiview =
false;
292 bool has_GL_OVR_multiview =
false;
293 bool has_GL_EXT_clip_control =
false;
297 bool bootstrap(Version& version)
299 glGetStringi = (PFNGLGETSTRINGIPROC)getProcAddress(
"glGetStringi");
300 glGetIntegerv = (PFNGLGETINTEGERVPROC)getProcAddress(
"glGetIntegerv");
302 glGetIntegerv(GL_MAJOR_VERSION, &version.major);
303 glGetIntegerv(GL_MINOR_VERSION, &version.minor);
304 LOG_DEBUG(logger,
"Got OpenGL version %d.%d", version.major, version.minor);
305 if (version.major < 3) {
306 LOG_FATAL(logger,
"Insufficient OpenGL version");
310 int numExtensions = 0;
311 glGetIntegerv(GL_NUM_EXTENSIONS, &numExtensions);
312 for (
int i = 0; i < numExtensions; i++) {
314 case Cogs::hash(
"GL_KHR_debug"): version.has_GL_KHR_debug = true;
break;
315 case Cogs::hash(
"GL_OCULUS_multiview"): version.has_GL_OCULUS_multiview = true;
break;
316 case Cogs::hash(
"GL_OVR_multiview_multisampled_render_to_texture"): version.has_GL_OCULUS_multiview = true;
break;
317 case Cogs::hash(
"GL_OVR_multiview"): version.has_GL_OVR_multiview = true;
break;
318 case Cogs::hash(
"GL_OVR_multiview2"): version.has_GL_OVR_multiview = true;
break;
319 case Cogs::hash(
"GL_NV_instanced_arrays"): version.has_GL_NV_instanced_arrays = true;
break;
320 case Cogs::hash(
"GL_EXT_clip_control"): version.has_GL_EXT_clip_control = true;
break;
329bool Cogs::getGLES3FuncPointers(GLContextBase::Platform platform)
332 if (!bootstrap(version))
return false;
334 glActiveTexture = (PFNGLACTIVETEXTUREPROC)getProcAddress(
"glActiveTexture");
335 glAttachShader = (PFNGLATTACHSHADERPROC)getProcAddress(
"glAttachShader");
336 glBindBuffer = (PFNGLBINDBUFFERPROC)getProcAddress(
"glBindBuffer");
337 glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)getProcAddress(
"glBindBufferBase");
338 glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)getProcAddress(
"glBindBufferRange");
339 glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)getProcAddress(
"glBindFramebuffer");
340 glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)getProcAddress(
"glBindRenderbuffer");
341 glBindSampler = (PFNGLBINDSAMPLERPROC)getProcAddress(
"glBindSampler");
342 glBindTexture = (PFNGLBINDTEXTUREPROC)getProcAddress(
"glBindTexture");
343 glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)getProcAddress(
"glBindVertexArray");
344 glBlendColor = (PFNGLBLENDCOLORPROC)getProcAddress(
"glBlendColor");
345 glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)getProcAddress(
"glBlendEquationSeparate");
346 glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)getProcAddress(
"glBlendFuncSeparate");
347 glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)getProcAddress(
"glBlitFramebuffer");
348 glBufferData = (PFNGLBUFFERDATAPROC)getProcAddress(
"glBufferData");
349 glBufferSubData = (PFNGLBUFFERSUBDATAPROC)getProcAddress(
"glBufferSubData");
350 glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)getProcAddress(
"glCheckFramebufferStatus");
351 glClear = (PFNGLCLEARPROC)getProcAddress(
"glClear");
352 glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)getProcAddress(
"glClearBufferData");
353 glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)getProcAddress(
"glClearBufferfv");
354 glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)getProcAddress(
"glClearBufferiv");
355 glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)getProcAddress(
"glClearBufferuiv");
356 glClearColor = (PFNGLCLEARCOLORPROC)getProcAddress(
"glClearColor");
357 glClearDepth = (PFNGLCLEARDEPTHPROC)getProcAddress(
"glClearDepth");
358 glClearDepthf = (PFNGLCLEARDEPTHFPROC)getProcAddress(
"glClearDepthf");
359 glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)getProcAddress(
"glClientWaitSync");
360 glCompileShader = (PFNGLCOMPILESHADERPROC)getProcAddress(
"glCompileShader");
361 glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)getProcAddress(
"glCompressedTexImage2D");
362 glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)getProcAddress(
"glCompressedTexSubImage2D");
363 glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)getProcAddress(
"glCopyBufferSubData");
364 glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)getProcAddress(
"glCopyImageSubData");
365 glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)getProcAddress(
"glCopyTexSubImage2D");
366 glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)getProcAddress(
"glCopyTexSubImage3D");
367 glCreateProgram = (PFNGLCREATEPROGRAMPROC)getProcAddress(
"glCreateProgram");
368 glCreateShader = (PFNGLCREATESHADERPROC)getProcAddress(
"glCreateShader");
369 glCullFace = (PFNGLCULLFACEPROC)getProcAddress(
"glCullFace");
370 glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)getProcAddress(
"glDeleteBuffers");
371 glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)getProcAddress(
"glDeleteFramebuffers");
372 glDeleteProgram = (PFNGLDELETEPROGRAMPROC)getProcAddress(
"glDeleteProgram");
373 glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)getProcAddress(
"glDeleteRenderbuffers");
374 glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)getProcAddress(
"glDeleteSamplers");
375 glDeleteShader = (PFNGLDELETESHADERPROC)getProcAddress(
"glDeleteShader");
376 glDeleteSync = (PFNGLDELETESYNCPROC)getProcAddress(
"glDeleteSync");
377 glDeleteTextures = (PFNGLDELETETEXTURESPROC)getProcAddress(
"glDeleteTextures");
378 glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)getProcAddress(
"glDeleteVertexArrays");
379 glDepthFunc = (PFNGLDEPTHFUNCPROC)getProcAddress(
"glDepthFunc");
380 glDepthMask = (PFNGLDEPTHMASKPROC)getProcAddress(
"glDepthMask");
381 glDisable = (PFNGLDISABLEPROC)getProcAddress(
"glDisable");
382 glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)getProcAddress(
"glDisableVertexAttribArray");
383 glDrawArrays = (PFNGLDRAWARRAYSPROC)getProcAddress(
"glDrawArrays");
384 glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)getProcAddress(
"glDrawArraysInstanced");
385 glDrawBuffers = (PFNGLDRAWBUFFERSPROC)getProcAddress(
"glDrawBuffers");
386 glDrawElements = (PFNGLDRAWELEMENTSPROC)getProcAddress(
"glDrawElements");
387 glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)getProcAddress(
"glDrawElementsInstanced");
388 glEnable = (PFNGLENABLEPROC)getProcAddress(
"glEnable");
389 glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)getProcAddress(
"glEnableVertexAttribArray");
390 glFenceSync = (PFNGLFENCESYNCPROC)getProcAddress(
"glFenceSync");
391 glFinish = (PFNGLFINISHPROC)getProcAddress(
"glFinish");
392 glFlush = (PFNGLFLUSHPROC)getProcAddress(
"glFlush");
393 glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)getProcAddress(
"glFramebufferRenderbuffer");
394 glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)getProcAddress(
"glFramebufferTexture2D");
395 glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)getProcAddress(
"glFramebufferTextureLayer");
396 glFrontFace = (PFNGLFRONTFACEPROC)getProcAddress(
"glFrontFace");
397 glGenBuffers = (PFNGLGENBUFFERSPROC)getProcAddress(
"glGenBuffers");
398 glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)getProcAddress(
"glGenerateMipmap");
399 glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)getProcAddress(
"glGenFramebuffers");
400 glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)getProcAddress(
"glGenRenderbuffers");
401 glGenSamplers = (PFNGLGENSAMPLERSPROC)getProcAddress(
"glGenSamplers");
402 glGenTextures = (PFNGLGENTEXTURESPROC)getProcAddress(
"glGenTextures");
403 glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)getProcAddress(
"glGenVertexArrays");
404 glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)getProcAddress(
"glGetActiveAttrib");
405 glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)getProcAddress(
"glGetActiveUniform");
406 glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)getProcAddress(
"glGetActiveUniformBlockiv");
407 glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)getProcAddress(
"glGetActiveUniformBlockName");
408 glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)getProcAddress(
"glGetActiveUniformsiv");
409 glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)getProcAddress(
"glGetAttachedShaders");
410 glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)getProcAddress(
"glGetAttribLocation");
411 glGetError = (PFNGLGETERRORPROC)getProcAddress(
"glGetError");
412 glGetFloatv = (PFNGLGETFLOATVPROC)getProcAddress(
"glGetFloatv");
413 glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)getProcAddress(
"glGetFramebufferAttachmentParameteriv");
414 glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)getProcAddress(
"glGetIntegeri_v");
415 glGetIntegerv = (PFNGLGETINTEGERVPROC)getProcAddress(
"glGetIntegerv");
416 glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)getProcAddress(
"glGetInternalformativ");
417 glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)getProcAddress(
"glGetProgramInfoLog");
418 glGetProgramiv = (PFNGLGETPROGRAMIVPROC)getProcAddress(
"glGetProgramiv");
419 glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)getProcAddress(
"glGetShaderInfoLog");
420 glGetShaderiv = (PFNGLGETSHADERIVPROC)getProcAddress(
"glGetShaderiv");
421 glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)getProcAddress(
"glGetShaderSource");
422 glGetString = (PFNGLGETSTRINGPROC)getProcAddress(
"glGetString");
423 glGetStringi = (PFNGLGETSTRINGIPROC)getProcAddress(
"glGetStringi");
424 glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)getProcAddress(
"glGetUniformBlockIndex");
425 glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)getProcAddress(
"glGetUniformLocation");
426 glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)getProcAddress(
"glInvalidateFramebuffer");
427 glIsEnabled = (PFNGLISENABLEDPROC)getProcAddress(
"glIsEnabled");
428 glLinkProgram = (PFNGLLINKPROGRAMPROC)getProcAddress(
"glLinkProgram");
429 glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)getProcAddress(
"glMapBufferRange");
430 glPixelStorei = (PFNGLPIXELSTOREIPROC)getProcAddress(
"glPixelStorei");
431 glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)getProcAddress(
"glPolygonOffset");
432 glReadBuffer = (PFNGLREADBUFFERPROC)getProcAddress(
"glReadBuffer");
433 glReadPixels = (PFNGLREADPIXELSPROC)getProcAddress(
"glReadPixels");
434 glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)getProcAddress(
"glRenderbufferStorage");
435 glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)getProcAddress(
"glRenderbufferStorageMultisample");
436 glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)getProcAddress(
"glSamplerParameterf");
437 glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)getProcAddress(
"glSamplerParameterfv");
438 glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)getProcAddress(
"glSamplerParameteri");
439 glScissor = (PFNGLSCISSORPROC)getProcAddress(
"glScissor");
440 glShaderSource = (PFNGLSHADERSOURCEPROC)getProcAddress(
"glShaderSource");
441 glTexImage2D = (PFNGLTEXIMAGE2DPROC)getProcAddress(
"glTexImage2D");
442 glTexParameteri = (PFNGLTEXPARAMETERIPROC)getProcAddress(
"glTexParameteri");
443 glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)getProcAddress(
"glTexStorage2D");
444 glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)getProcAddress(
"glTexStorage3D");
445 glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)getProcAddress(
"glTexSubImage2D");
446 glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)getProcAddress(
"glTexSubImage3D");
447 glUniform1f = (PFNGLUNIFORM1FPROC)getProcAddress(
"glUniform1f");
448 glUniform1fv = (PFNGLUNIFORM1FVPROC)getProcAddress(
"glUniform1fv");
449 glUniform1i = (PFNGLUNIFORM1IPROC)getProcAddress(
"glUniform1i");
450 glUniform1iv = (PFNGLUNIFORM1IVPROC)getProcAddress(
"glUniform1iv");
451 glUniform2fv = (PFNGLUNIFORM2FVPROC)getProcAddress(
"glUniform2fv");
452 glUniform3fv = (PFNGLUNIFORM3FVPROC)getProcAddress(
"glUniform3fv");
453 glUniform4fv = (PFNGLUNIFORM4FVPROC)getProcAddress(
"glUniform4fv");
454 glUniform4iv = (PFNGLUNIFORM4IVPROC)getProcAddress(
"glUniform4iv");
455 glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)getProcAddress(
"glUniformBlockBinding");
456 glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)getProcAddress(
"glUniformMatrix4fv");
457 glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)getProcAddress(
"glUnmapBuffer");
458 glUseProgram = (PFNGLUSEPROGRAMPROC)getProcAddress(
"glUseProgram");
459 glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)getProcAddress(
"glVertexAttribDivisor");
460 glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)getProcAddress(
"glVertexAttribIPointer");
461 glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)getProcAddress(
"glVertexAttribPointer");
462 glViewport = (PFNGLVIEWPORTPROC)getProcAddress(
"glViewport");
463 glWaitSync = (PFNGLWAITSYNCPROC)getProcAddress(
"glWaitSync");
465#if defined(COGS_OPENGLES30)
466 if (version.has_GL_KHR_debug) {
468 if (platform == GLContextBase::Platform::ES3) {
469 glDebugMessageCallbackKHR = (PFNGLDEBUGMESSAGECALLBACKKHRPROC)getProcAddress(
"glDebugMessageCallbackKHR");
470 glDebugMessageControlKHR = (PFNGLDEBUGMESSAGECONTROLKHRPROC)getProcAddress(
"glDebugMessageControlKHR");
471 glDebugMessageInsertKHR = (PFNGLDEBUGMESSAGEINSERTKHRPROC)getProcAddress(
"glDebugMessageInsertKHR");
472 glObjectLabelKHR = (PFNGLOBJECTLABELKHRPROC)getProcAddress(
"glObjectLabelKHR");
475 glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKKHRPROC)getProcAddress(
"glDebugMessageCallback");
476 glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLKHRPROC)getProcAddress(
"glDebugMessageControl");
477 glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTKHRPROC)getProcAddress(
"glDebugMessageInsert");
478 glObjectLabel = (PFNGLOBJECTLABELKHRPROC)getProcAddress(
"glObjectLabel");
482 if (version.has_GL_OCULUS_multiview) {
483 glFramebufferTextureMultisampleMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC)getProcAddress(
"glFramebufferTextureMultisampleMultiviewOVR");
484 glFramebufferTextureMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)getProcAddress(
"glFramebufferTextureMultiviewOVR");
486 else if (version.has_GL_OVR_multiview) {
487 glFramebufferTextureMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)getProcAddress(
"glFramebufferTextureMultiviewOVR");
490 if (version.has_GL_EXT_clip_control) {
491 glClipControl = (PFNGLCLIPCONTROLEXTPROC)getProcAddress(
"glClipControlEXT");
501bool Cogs::getGLFuncPointers()
504 if (!bootstrap(version))
return false;
506 glActiveTexture = (PFNGLACTIVETEXTUREPROC)getProcAddress(
"glActiveTexture");
507 glAttachShader = (PFNGLATTACHSHADERPROC)getProcAddress(
"glAttachShader");
508 glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)getProcAddress(
"glBindBufferBase");
509 glBindBuffer = (PFNGLBINDBUFFERPROC)getProcAddress(
"glBindBuffer");
510 glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)getProcAddress(
"glBindBufferRange");
511 glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)getProcAddress(
"glBindFramebuffer");
512 glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)getProcAddress(
"glBindImageTexture");
513 glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)getProcAddress(
"glBindRenderbuffer");
514 glBindSampler = (PFNGLBINDSAMPLERPROC)getProcAddress(
"glBindSampler");
515 glBindTexture = (PFNGLBINDTEXTUREPROC)getProcAddress(
"glBindTexture");
516 glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)getProcAddress(
"glBindVertexArray");
517 glBlendColor = (PFNGLBLENDCOLORPROC)getProcAddress(
"glBlendColor");
518 glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)getProcAddress(
"glBlendEquationSeparate");
519 glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)getProcAddress(
"glBlendFuncSeparate");
520 glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)getProcAddress(
"glBlitFramebuffer");
521 glBufferData = (PFNGLBUFFERDATAPROC)getProcAddress(
"glBufferData");
522 glBufferSubData = (PFNGLBUFFERSUBDATAPROC)getProcAddress(
"glBufferSubData");
523 glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)getProcAddress(
"glCheckFramebufferStatus");
524 glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)getProcAddress(
"glClearBufferData");
525 glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)getProcAddress(
"glClearBufferfv");
526 glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)getProcAddress(
"glClearBufferiv");
527 glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)getProcAddress(
"glClearBufferuiv");
528 glClearColor = (PFNGLCLEARCOLORPROC)getProcAddress(
"glClearColor");
529 glClearDepthf = (PFNGLCLEARDEPTHFPROC)getProcAddress(
"glClearDepthf");
530 glClearDepth = (PFNGLCLEARDEPTHPROC)getProcAddress(
"glClearDepth");
531 glClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC)getProcAddress(
"glClearNamedBufferData");
532 glClear = (PFNGLCLEARPROC)getProcAddress(
"glClear");
533 glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)getProcAddress(
"glClientWaitSync");
534 glClipControl = (PFNGLCLIPCONTROLPROC)getProcAddress(
"glClipControl");
535 glCompileShader = (PFNGLCOMPILESHADERPROC)getProcAddress(
"glCompileShader");
536 glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)getProcAddress(
"glCompressedTexImage2D");
537 glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)getProcAddress(
"glCompressedTexSubImage2D");
538 glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)getProcAddress(
"glCopyBufferSubData");
539 glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)getProcAddress(
"glCopyImageSubData");
540 glCopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC)getProcAddress(
"glCopyNamedBufferSubData");
541 glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)getProcAddress(
"glCopyTexSubImage2D");
542 glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)getProcAddress(
"glCopyTexSubImage3D");
543 glCreateProgram = (PFNGLCREATEPROGRAMPROC)getProcAddress(
"glCreateProgram");
544 glCreateShader = (PFNGLCREATESHADERPROC)getProcAddress(
"glCreateShader");
545 glCullFace = (PFNGLCULLFACEPROC)getProcAddress(
"glCullFace");
546 glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)getProcAddress(
"glDebugMessageCallback");
547 glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)getProcAddress(
"glDebugMessageControl");
548 glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)getProcAddress(
"glDebugMessageInsert");
549 glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)getProcAddress(
"glDeleteBuffers");
550 glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)getProcAddress(
"glDeleteFramebuffers");
551 glDeleteProgram = (PFNGLDELETEPROGRAMPROC)getProcAddress(
"glDeleteProgram");
552 glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)getProcAddress(
"glDeleteRenderbuffers");
553 glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)getProcAddress(
"glDeleteSamplers");
554 glDeleteShader = (PFNGLDELETESHADERPROC)getProcAddress(
"glDeleteShader");
555 glDeleteSync = (PFNGLDELETESYNCPROC)getProcAddress(
"glDeleteSync");
556 glDeleteTextures = (PFNGLDELETETEXTURESPROC)getProcAddress(
"glDeleteTextures");
557 glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)getProcAddress(
"glDeleteVertexArrays");
558 glDepthFunc = (PFNGLDEPTHFUNCPROC)getProcAddress(
"glDepthFunc");
559 glDepthMask = (PFNGLDEPTHMASKPROC)getProcAddress(
"glDepthMask");
560 glDisablei = (PFNGLDISABLEIPROC)getProcAddress(
"glDisablei");
561 glDisable = (PFNGLDISABLEPROC)getProcAddress(
"glDisable");
562 glDisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC)getProcAddress(
"glDisableVertexArrayAttrib");
563 glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)getProcAddress(
"glDisableVertexAttribArray");
564 glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)getProcAddress(
"glDispatchCompute");
565 glDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)getProcAddress(
"glDrawArraysInstancedBaseInstance");
566 glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)getProcAddress(
"glDrawArraysInstanced");
567 glDrawArrays = (PFNGLDRAWARRAYSPROC)getProcAddress(
"glDrawArrays");
568 glDrawBuffer = (PFNGLDRAWBUFFERPROC)getProcAddress(
"glDrawBuffer");
569 glDrawBuffers = (PFNGLDRAWBUFFERSPROC)getProcAddress(
"glDrawBuffers");
570 glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)getProcAddress(
"glDrawElementsBaseVertex");
571 glDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)getProcAddress(
"glDrawElementsInstancedBaseInstance");
572 glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)getProcAddress(
"glDrawElementsInstanced");
573 glDrawElements = (PFNGLDRAWELEMENTSPROC)getProcAddress(
"glDrawElements");
574 glEnablei = (PFNGLENABLEIPROC)getProcAddress(
"glEnablei");
575 glEnable = (PFNGLENABLEPROC)getProcAddress(
"glEnable");
576 glEnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC)getProcAddress(
"glEnableVertexArrayAttrib");
577 glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)getProcAddress(
"glEnableVertexAttribArray");
578 glFenceSync = (PFNGLFENCESYNCPROC)getProcAddress(
"glFenceSync");
579 glFinish = (PFNGLFINISHPROC)getProcAddress(
"glFinish");
580 glFlush = (PFNGLFLUSHPROC)getProcAddress(
"glFlush");
581 glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)getProcAddress(
"glFramebufferRenderbuffer");
582 glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)getProcAddress(
"glFramebufferTexture2D");
583 glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)getProcAddress(
"glFramebufferTextureLayer");
584 glFramebufferTextureMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)getProcAddress(
"glFramebufferTextureMultiviewOVR");
585 glFrontFace = (PFNGLFRONTFACEPROC)getProcAddress(
"glFrontFace");
586 glGenBuffers = (PFNGLGENBUFFERSPROC)getProcAddress(
"glGenBuffers");
587 glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)getProcAddress(
"glGenerateMipmap");
588 glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)getProcAddress(
"glGenFramebuffers");
589 glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)getProcAddress(
"glGenRenderbuffers");
590 glGenSamplers = (PFNGLGENSAMPLERSPROC)getProcAddress(
"glGenSamplers");
591 glGenTextures = (PFNGLGENTEXTURESPROC)getProcAddress(
"glGenTextures");
592 glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)getProcAddress(
"glGenVertexArrays");
593 glGetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)getProcAddress(
"glGetActiveAtomicCounterBufferiv");
594 glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)getProcAddress(
"glGetActiveAttrib");
595 glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)getProcAddress(
"glGetActiveUniformBlockiv");
596 glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)getProcAddress(
"glGetActiveUniformBlockName");
597 glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)getProcAddress(
"glGetActiveUniformName");
598 glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)getProcAddress(
"glGetActiveUniform");
599 glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)getProcAddress(
"glGetActiveUniformsiv");
600 glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)getProcAddress(
"glGetAttachedShaders");
601 glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)getProcAddress(
"glGetAttribLocation");
602 glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)getProcAddress(
"glGetBufferSubData");
603 glGetError = (PFNGLGETERRORPROC)getProcAddress(
"glGetError");
604 glGetFloatv = (PFNGLGETFLOATVPROC)getProcAddress(
"glGetFloatv");
605 glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)getProcAddress(
"glGetFramebufferAttachmentParameteriv");
606 glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)getProcAddress(
"glGetIntegeri_v");
607 glGetIntegerv = (PFNGLGETINTEGERVPROC)getProcAddress(
"glGetIntegerv");
608 glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)getProcAddress(
"glGetInternalformativ");
609 glGetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC)getProcAddress(
"glGetNamedBufferSubData");
610 glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)getProcAddress(
"glGetProgramInfoLog");
611 glGetProgramiv = (PFNGLGETPROGRAMIVPROC)getProcAddress(
"glGetProgramiv");
612 glGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)getProcAddress(
"glGetProgramResourceIndex");
613 glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)getProcAddress(
"glGetProgramResourceiv");
614 glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)getProcAddress(
"glGetShaderInfoLog");
615 glGetShaderiv = (PFNGLGETSHADERIVPROC)getProcAddress(
"glGetShaderiv");
616 glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)getProcAddress(
"glGetShaderSource");
617 glGetStringi = (PFNGLGETSTRINGIPROC)getProcAddress(
"glGetStringi");
618 glGetString = (PFNGLGETSTRINGPROC)getProcAddress(
"glGetString");
619 glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)getProcAddress(
"glGetUniformBlockIndex");
620 glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)getProcAddress(
"glGetUniformLocation");
621 glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)getProcAddress(
"glInvalidateFramebuffer");
622 glIsEnabled = (PFNGLISENABLEDPROC)getProcAddress(
"glIsEnabled");
623 glLinkProgram = (PFNGLLINKPROGRAMPROC)getProcAddress(
"glLinkProgram");
624 glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)getProcAddress(
"glMapBufferRange");
625 glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)getProcAddress(
"glMemoryBarrier");
626 glNamedBufferData = (PFNGLNAMEDBUFFERDATAPROC)getProcAddress(
"glNamedBufferData");
627 glNamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)getProcAddress(
"glNamedFramebufferDrawBuffer");
628 glObjectLabel = (PFNGLOBJECTLABELPROC)getProcAddress(
"glObjectLabel");
629 glPixelStorei = (PFNGLPIXELSTOREIPROC)getProcAddress(
"glPixelStorei");
630 glPolygonMode = (PFNGLPOLYGONMODEPROC)getProcAddress(
"glPolygonMode");
631 glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)getProcAddress(
"glPolygonOffset");
632 glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)getProcAddress(
"glPopDebugGroup");
633 glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)getProcAddress(
"glPushDebugGroup");
634 glReadBuffer = (PFNGLREADBUFFERPROC)getProcAddress(
"glReadBuffer");
635 glReadPixels = (PFNGLREADPIXELSPROC)getProcAddress(
"glReadPixels");
636 glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)getProcAddress(
"glRenderbufferStorageMultisample");
637 glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)getProcAddress(
"glRenderbufferStorage");
638 glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)getProcAddress(
"glSamplerParameterf");
639 glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)getProcAddress(
"glSamplerParameterfv");
640 glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)getProcAddress(
"glSamplerParameteri");
641 glScissor = (PFNGLSCISSORPROC)getProcAddress(
"glScissor");
642 glShaderSource = (PFNGLSHADERSOURCEPROC)getProcAddress(
"glShaderSource");
643 glTexImage2D = (PFNGLTEXIMAGE2DPROC)getProcAddress(
"glTexImage2D");
644 glTexParameteri = (PFNGLTEXPARAMETERIPROC)getProcAddress(
"glTexParameteri");
645 glTexStorage1D = (PFNGLTEXSTORAGE1DPROC)getProcAddress(
"glTexStorage1D");
646 glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)getProcAddress(
"glTexStorage2DMultisample");
647 glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)getProcAddress(
"glTexStorage2D");
648 glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)getProcAddress(
"glTexStorage3DMultisample");
649 glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)getProcAddress(
"glTexStorage3D");
650 glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)getProcAddress(
"glTexSubImage1D");
651 glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)getProcAddress(
"glTexSubImage2D");
652 glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)getProcAddress(
"glTexSubImage3D");
653 glTextureView = (PFNGLTEXTUREVIEWPROC)getProcAddress(
"glTextureView");
654 glUniform1f = (PFNGLUNIFORM1FPROC)getProcAddress(
"glUniform1f");
655 glUniform1fv = (PFNGLUNIFORM1FVPROC)getProcAddress(
"glUniform1fv");
656 glUniform1i = (PFNGLUNIFORM1IPROC)getProcAddress(
"glUniform1i");
657 glUniform1iv = (PFNGLUNIFORM1IVPROC)getProcAddress(
"glUniform1iv");
658 glUniform2fv = (PFNGLUNIFORM2FVPROC)getProcAddress(
"glUniform2fv");
659 glUniform3fv = (PFNGLUNIFORM3FVPROC)getProcAddress(
"glUniform3fv");
660 glUniform4fv = (PFNGLUNIFORM4FVPROC)getProcAddress(
"glUniform4fv");
661 glUniform4iv = (PFNGLUNIFORM4IVPROC)getProcAddress(
"glUniform4iv");
662 glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)getProcAddress(
"glUniformBlockBinding");
663 glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)getProcAddress(
"glUniformMatrix4fv");
664 glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)getProcAddress(
"glUnmapBuffer");
665 glUseProgram = (PFNGLUSEPROGRAMPROC)getProcAddress(
"glUseProgram");
666 glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)getProcAddress(
"glVertexAttribDivisor");
667 glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)getProcAddress(
"glVertexAttribIPointer");
668 glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)getProcAddress(
"glVertexAttribPointer");
669 glViewport = (PFNGLVIEWPORTPROC)getProcAddress(
"glViewport");
670 glWaitSync = (PFNGLWAITSYNCPROC)getProcAddress(
"glWaitSync");
Log implementation class.
Provides a weakly referenced view over the contents of a string.
constexpr Log getLogger(const char(&name)[LEN]) noexcept
constexpr size_t hash() noexcept
Simple getter function that returns the initial value for fnv1a hashing.