1
0
Fork 0
2019-ecs/Source/Graphics/GlLoader.cpp

60 lines
2.6 KiB
C++

#include "GlLoader.hpp"
#include <cassert>
PFNGLCREATESHADERPROC glCreateShader = nullptr;
PFNGLSHADERSOURCEPROC glShaderSource = nullptr;
PFNGLCOMPILESHADERPROC glCompileShader = nullptr;
PFNGLGETSHADERIVPROC glGetShaderiv = nullptr;
PFNGLGETSHADERSOURCEPROC glGetShaderInfo = nullptr;
PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog = nullptr;
PFNGLCREATEPROGRAMPROC glCreateProgram = nullptr;
PFNGLATTACHSHADERPROC glAttachShader = nullptr;
PFNGLLINKPROGRAMPROC glLinkProgram = nullptr;
PFNGLGETPROGRAMIVPROC glGetProgramiv = nullptr;
PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog = nullptr;
PFNGLDELETESHADERPROC glDeleteShader = nullptr;
PFNGLGENBUFFERSPROC glGenBuffers = nullptr;
PFNGLBINDBUFFERPROC glBindBuffer = nullptr;
PFNGLBUFFERDATAPROC glBufferData = nullptr;
PFNGLGENVERTEXARRAYSPROC glGenVertexArrays = nullptr;
PFNGLBINDVERTEXARRAYPROC glBindVertexArray = nullptr;
PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer = nullptr;
PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray = nullptr;
PFNGLUSEPROGRAMPROC glUseProgram = nullptr;
PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation = nullptr;
PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv = nullptr;
PFNGLUNIFORM3FVPROC glUniform3fv = nullptr;
#define LOAD_GL_FUNCTION(type, name) \
(name) = (PFN##type##PROC) glXGetProcAddress((unsigned char *) #name); \
assert(name && "GL function not found");
void LoadGlFunctions()
{
LOAD_GL_FUNCTION(GLCREATESHADER, glCreateShader)
LOAD_GL_FUNCTION(GLSHADERSOURCE, glShaderSource)
LOAD_GL_FUNCTION(GLCOMPILESHADER, glCompileShader)
LOAD_GL_FUNCTION(GLGETSHADERIV, glGetShaderiv)
LOAD_GL_FUNCTION(GLGETSHADERSOURCE, glGetShaderInfo)
LOAD_GL_FUNCTION(GLGETSHADERINFOLOG, glGetShaderInfoLog)
LOAD_GL_FUNCTION(GLCREATEPROGRAM, glCreateProgram)
LOAD_GL_FUNCTION(GLATTACHSHADER, glAttachShader)
LOAD_GL_FUNCTION(GLLINKPROGRAM, glLinkProgram)
LOAD_GL_FUNCTION(GLGETPROGRAMIV, glGetProgramiv)
LOAD_GL_FUNCTION(GLGETPROGRAMINFOLOG, glGetProgramInfoLog)
LOAD_GL_FUNCTION(GLDELETESHADER, glDeleteShader)
LOAD_GL_FUNCTION(GLGENBUFFERS, glGenBuffers)
LOAD_GL_FUNCTION(GLBINDBUFFER, glBindBuffer)
LOAD_GL_FUNCTION(GLBUFFERDATA, glBufferData)
LOAD_GL_FUNCTION(GLGENVERTEXARRAYS, glGenVertexArrays)
LOAD_GL_FUNCTION(GLBINDVERTEXARRAY, glBindVertexArray)
LOAD_GL_FUNCTION(GLVERTEXATTRIBPOINTER, glVertexAttribPointer)
LOAD_GL_FUNCTION(GLENABLEVERTEXATTRIBARRAY, glEnableVertexAttribArray)
LOAD_GL_FUNCTION(GLUSEPROGRAM, glUseProgram)
LOAD_GL_FUNCTION(GLGETUNIFORMLOCATION, glGetUniformLocation)
LOAD_GL_FUNCTION(GLUNIFORMMATRIX4FV, glUniformMatrix4fv)
LOAD_GL_FUNCTION(GLUNIFORM3FV, glUniform3fv)
}