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