// Copyright (C) 2025 kbz_8 // This file is part of "Pulse" // For conditions of distribution and use, see copyright notice in LICENSE // No header guards #ifndef PULSE_OPENGL_FUNCTION #error "You must define PULSE_OPENGL_FUNCTION before including this file" #endif #ifndef PULSE_OPENGL_GL_GLES_FUNCTION #define PULSE_OPENGL_GL_GLES_FUNCTION(glVer, glesVer, name, sig) PULSE_OPENGL_FUNCTION(name, sig) #endif // OpenGL core PULSE_OPENGL_FUNCTION(glActiveTexture, PFNGLACTIVETEXTUREPROC) PULSE_OPENGL_FUNCTION(glAttachShader, PFNGLATTACHSHADERPROC) PULSE_OPENGL_FUNCTION(glBeginQuery, PFNGLBEGINQUERYPROC) PULSE_OPENGL_FUNCTION(glBindAttribLocation, PFNGLBINDATTRIBLOCATIONPROC) PULSE_OPENGL_FUNCTION(glBindBuffer, PFNGLBINDBUFFERPROC) PULSE_OPENGL_FUNCTION(glBindBufferRange, PFNGLBINDBUFFERRANGEPROC) PULSE_OPENGL_FUNCTION(glBindRenderbuffer, PFNGLBINDRENDERBUFFERPROC) PULSE_OPENGL_FUNCTION(glBindSampler, PFNGLBINDSAMPLERPROC) PULSE_OPENGL_FUNCTION(glBindTexture, PFNGLBINDTEXTUREPROC) PULSE_OPENGL_FUNCTION(glBlendEquationSeparate, PFNGLBLENDEQUATIONSEPARATEPROC) PULSE_OPENGL_FUNCTION(glBlendFuncSeparate, PFNGLBLENDFUNCSEPARATEPROC) PULSE_OPENGL_FUNCTION(glBufferData, PFNGLBUFFERDATAPROC) PULSE_OPENGL_FUNCTION(glBufferSubData, PFNGLBUFFERSUBDATAPROC) PULSE_OPENGL_FUNCTION(glClear, PFNGLCLEARPROC) PULSE_OPENGL_FUNCTION(glClearBufferfi, PFNGLCLEARBUFFERFIPROC) PULSE_OPENGL_FUNCTION(glClearBufferfv, PFNGLCLEARBUFFERFVPROC) PULSE_OPENGL_FUNCTION(glClearBufferuiv, PFNGLCLEARBUFFERUIVPROC) PULSE_OPENGL_FUNCTION(glClearDepthf, PFNGLCLEARDEPTHFPROC) PULSE_OPENGL_FUNCTION(glClearStencil, PFNGLCLEARSTENCILPROC) PULSE_OPENGL_FUNCTION(glCompileShader, PFNGLCOMPILESHADERPROC) PULSE_OPENGL_FUNCTION(glCompressedTexSubImage2D, PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) PULSE_OPENGL_FUNCTION(glCompressedTexSubImage3D, PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) PULSE_OPENGL_FUNCTION(glCopyBufferSubData, PFNGLCOPYBUFFERSUBDATAPROC) PULSE_OPENGL_FUNCTION(glCopyTexSubImage2D, PFNGLCOPYTEXSUBIMAGE2DPROC) PULSE_OPENGL_FUNCTION(glCreateProgram, PFNGLCREATEPROGRAMPROC) PULSE_OPENGL_FUNCTION(glCreateShader, PFNGLCREATESHADERPROC) PULSE_OPENGL_FUNCTION(glDeleteBuffers, PFNGLDELETEBUFFERSPROC) PULSE_OPENGL_FUNCTION(glDeleteProgram, PFNGLDELETEPROGRAMPROC) PULSE_OPENGL_FUNCTION(glDeleteQueries, PFNGLDELETEQUERIESPROC) PULSE_OPENGL_FUNCTION(glDeleteSamplers, PFNGLDELETESAMPLERSPROC) PULSE_OPENGL_FUNCTION(glDeleteShader, PFNGLDELETESHADERPROC) PULSE_OPENGL_FUNCTION(glDeleteTextures, PFNGLDELETETEXTURESPROC) PULSE_OPENGL_FUNCTION(glDisable, PFNGLDISABLEPROC) PULSE_OPENGL_FUNCTION(glEnable, PFNGLENABLEPROC) PULSE_OPENGL_FUNCTION(glEndQuery, PFNGLENDQUERYPROC) PULSE_OPENGL_FUNCTION(glFinish, PFNGLFINISHPROC) PULSE_OPENGL_FUNCTION(glFlush, PFNGLFLUSHPROC) PULSE_OPENGL_FUNCTION(glGenBuffers, PFNGLGENBUFFERSPROC) PULSE_OPENGL_FUNCTION(glGenQueries, PFNGLGENQUERIESPROC) PULSE_OPENGL_FUNCTION(glGenSamplers, PFNGLGENSAMPLERSPROC) PULSE_OPENGL_FUNCTION(glGenTextures, PFNGLGENTEXTURESPROC) PULSE_OPENGL_FUNCTION(glGetActiveUniform, PFNGLGETACTIVEUNIFORMPROC) PULSE_OPENGL_FUNCTION(glGetActiveUniformsiv, PFNGLGETACTIVEUNIFORMSIVPROC) PULSE_OPENGL_FUNCTION(glGetActiveUniformBlockiv, PFNGLGETACTIVEUNIFORMBLOCKIVPROC) PULSE_OPENGL_FUNCTION(glGetActiveUniformBlockName, PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) PULSE_OPENGL_FUNCTION(glGetBooleanv, PFNGLGETBOOLEANVPROC) PULSE_OPENGL_FUNCTION(glGetBufferParameteriv, PFNGLGETBUFFERPARAMETERIVPROC) PULSE_OPENGL_FUNCTION(glGetError, PFNGLGETERRORPROC) PULSE_OPENGL_FUNCTION(glGetFloatv, PFNGLGETFLOATVPROC) PULSE_OPENGL_FUNCTION(glGetInteger64i_v, PFNGLGETINTEGER64I_VPROC) PULSE_OPENGL_FUNCTION(glGetInteger64v, PFNGLGETINTEGER64VPROC) PULSE_OPENGL_FUNCTION(glGetIntegeri_v, PFNGLGETINTEGERI_VPROC) PULSE_OPENGL_FUNCTION(glGetIntegerv, PFNGLGETINTEGERVPROC) PULSE_OPENGL_FUNCTION(glGetProgramBinary, PFNGLGETPROGRAMBINARYPROC) PULSE_OPENGL_FUNCTION(glGetProgramInfoLog, PFNGLGETPROGRAMINFOLOGPROC) PULSE_OPENGL_FUNCTION(glGetProgramiv, PFNGLGETPROGRAMIVPROC) PULSE_OPENGL_FUNCTION(glGetQueryObjectuiv, PFNGLGETQUERYOBJECTUIVPROC) PULSE_OPENGL_FUNCTION(glGetQueryiv, PFNGLGETQUERYIVPROC) PULSE_OPENGL_FUNCTION(glGetShaderInfoLog, PFNGLGETSHADERINFOLOGPROC) PULSE_OPENGL_FUNCTION(glGetShaderSource, PFNGLGETSHADERSOURCEPROC) PULSE_OPENGL_FUNCTION(glGetShaderiv, PFNGLGETSHADERIVPROC) PULSE_OPENGL_FUNCTION(glGetString, PFNGLGETSTRINGPROC) PULSE_OPENGL_FUNCTION(glGetStringi, PFNGLGETSTRINGIPROC) PULSE_OPENGL_FUNCTION(glGetTexParameterfv, PFNGLGETTEXPARAMETERFVPROC) PULSE_OPENGL_FUNCTION(glGetTexParameteriv, PFNGLGETTEXPARAMETERIVPROC) PULSE_OPENGL_FUNCTION(glGetUniformLocation, PFNGLGETUNIFORMLOCATIONPROC) PULSE_OPENGL_FUNCTION(glGetUniformfv, PFNGLGETUNIFORMFVPROC) PULSE_OPENGL_FUNCTION(glGetUniformiv, PFNGLGETUNIFORMIVPROC) PULSE_OPENGL_FUNCTION(glGetUniformBlockIndex, PFNGLGETUNIFORMBLOCKINDEXPROC) PULSE_OPENGL_FUNCTION(glIsEnabled, PFNGLISENABLEDPROC) PULSE_OPENGL_FUNCTION(glLinkProgram, PFNGLLINKPROGRAMPROC) PULSE_OPENGL_FUNCTION(glMapBufferRange, PFNGLMAPBUFFERRANGEPROC) PULSE_OPENGL_FUNCTION(glPixelStorei, PFNGLPIXELSTOREIPROC) PULSE_OPENGL_FUNCTION(glPolygonOffset, PFNGLPOLYGONOFFSETPROC) PULSE_OPENGL_FUNCTION(glProgramBinary, PFNGLPROGRAMBINARYPROC) PULSE_OPENGL_FUNCTION(glProgramParameteri, PFNGLPROGRAMPARAMETERIPROC) PULSE_OPENGL_FUNCTION(glReadPixels, PFNGLREADPIXELSPROC) PULSE_OPENGL_FUNCTION(glRenderbufferStorage, PFNGLRENDERBUFFERSTORAGEPROC) PULSE_OPENGL_FUNCTION(glSamplerParameterf, PFNGLSAMPLERPARAMETERFPROC) PULSE_OPENGL_FUNCTION(glSamplerParameterfv, PFNGLSAMPLERPARAMETERFVPROC) PULSE_OPENGL_FUNCTION(glSamplerParameteri, PFNGLSAMPLERPARAMETERIPROC) PULSE_OPENGL_FUNCTION(glSamplerParameteriv, PFNGLSAMPLERPARAMETERIVPROC) PULSE_OPENGL_FUNCTION(glShaderBinary, PFNGLSHADERBINARYPROC) PULSE_OPENGL_FUNCTION(glShaderSource, PFNGLSHADERSOURCEPROC) PULSE_OPENGL_FUNCTION(glTexImage2D, PFNGLTEXIMAGE2DPROC) PULSE_OPENGL_FUNCTION(glTexImage3D, PFNGLTEXIMAGE3DPROC) PULSE_OPENGL_FUNCTION(glTexParameterf, PFNGLTEXPARAMETERFPROC) PULSE_OPENGL_FUNCTION(glTexParameterfv, PFNGLTEXPARAMETERFVPROC) PULSE_OPENGL_FUNCTION(glTexParameteri, PFNGLTEXPARAMETERIPROC) PULSE_OPENGL_FUNCTION(glTexParameteriv, PFNGLTEXPARAMETERIVPROC) PULSE_OPENGL_FUNCTION(glTexStorage2D, PFNGLTEXSTORAGE2DPROC) PULSE_OPENGL_FUNCTION(glTexStorage3D, PFNGLTEXSTORAGE3DPROC) PULSE_OPENGL_FUNCTION(glTexSubImage2D, PFNGLTEXSUBIMAGE2DPROC) PULSE_OPENGL_FUNCTION(glTexSubImage3D, PFNGLTEXSUBIMAGE3DPROC) PULSE_OPENGL_FUNCTION(glUniform1f, PFNGLUNIFORM1FPROC) PULSE_OPENGL_FUNCTION(glUniform1fv, PFNGLUNIFORM1FVPROC) PULSE_OPENGL_FUNCTION(glUniform1i, PFNGLUNIFORM1IPROC) PULSE_OPENGL_FUNCTION(glUniform1iv, PFNGLUNIFORM1IVPROC) PULSE_OPENGL_FUNCTION(glUniform2fv, PFNGLUNIFORM2FVPROC) PULSE_OPENGL_FUNCTION(glUniform2iv, PFNGLUNIFORM2IVPROC) PULSE_OPENGL_FUNCTION(glUniform3fv, PFNGLUNIFORM3FVPROC) PULSE_OPENGL_FUNCTION(glUniform3iv, PFNGLUNIFORM3IVPROC) PULSE_OPENGL_FUNCTION(glUniform4fv, PFNGLUNIFORM4FVPROC) PULSE_OPENGL_FUNCTION(glUniform4iv, PFNGLUNIFORM4IVPROC) PULSE_OPENGL_FUNCTION(glUniformBlockBinding, PFNGLUNIFORMBLOCKBINDINGPROC) PULSE_OPENGL_FUNCTION(glUniformMatrix4fv, PFNGLUNIFORMMATRIX4FVPROC) PULSE_OPENGL_FUNCTION(glUnmapBuffer, PFNGLUNMAPBUFFERPROC) PULSE_OPENGL_FUNCTION(glUseProgram, PFNGLUSEPROGRAMPROC) PULSE_OPENGL_FUNCTION(glValidateProgram, PFNGLVALIDATEPROGRAMPROC) // OpenGL 4.2 - OpenGL ES 3.1 PULSE_OPENGL_GL_GLES_FUNCTION(420, 310, glBindImageTexture, PFNGLBINDIMAGETEXTUREPROC) PULSE_OPENGL_GL_GLES_FUNCTION(420, 310, glGetBooleani_v, PFNGLGETBOOLEANI_VPROC) PULSE_OPENGL_GL_GLES_FUNCTION(420, 310, glMemoryBarrier, PFNGLMEMORYBARRIERPROC) PULSE_OPENGL_GL_GLES_FUNCTION(420, 310, glMemoryBarrierByRegion, PFNGLMEMORYBARRIERBYREGIONPROC) // OpenGL 4.3 - OpenGL ES 3.1 PULSE_OPENGL_GL_GLES_FUNCTION(430, 310, glDispatchCompute, PFNGLDISPATCHCOMPUTEPROC) PULSE_OPENGL_GL_GLES_FUNCTION(430, 310, glGetProgramInterfaceiv, PFNGLGETPROGRAMINTERFACEIVPROC) PULSE_OPENGL_GL_GLES_FUNCTION(430, 310, glGetProgramResourceiv, PFNGLGETPROGRAMRESOURCEIVPROC) PULSE_OPENGL_GL_GLES_FUNCTION(430, 310, glGetProgramResourceIndex, PFNGLGETPROGRAMRESOURCEINDEXPROC) PULSE_OPENGL_GL_GLES_FUNCTION(430, 310, glGetProgramResourceLocation, PFNGLGETPROGRAMRESOURCELOCATIONPROC) PULSE_OPENGL_GL_GLES_FUNCTION(430, 310, glGetProgramResourceName, PFNGLGETPROGRAMRESOURCENAMEPROC) PULSE_OPENGL_GL_GLES_FUNCTION(430, 310, glCreateShaderProgramv, PFNGLCREATESHADERPROGRAMVPROC) // OpenGL 4.3 - OpenGL ES 3.2 PULSE_OPENGL_GL_GLES_FUNCTION(430, 320, glDebugMessageCallback, PFNGLDEBUGMESSAGECALLBACKPROC) PULSE_OPENGL_GL_GLES_FUNCTION(430, 320, glDebugMessageControl, PFNGLDEBUGMESSAGECONTROLPROC) PULSE_OPENGL_GL_GLES_FUNCTION(430, 320, glDispatchComputeIndirect, PFNGLDISPATCHCOMPUTEINDIRECTPROC)