66 lines
1.9 KiB
C
66 lines
1.9 KiB
C
|
/************************************************************//**
|
||
|
*
|
||
|
* @file: win32_gl_loader.h
|
||
|
* @author: Martin Fouilleul
|
||
|
* @date: 01/08/2022
|
||
|
* @revision:
|
||
|
*
|
||
|
*****************************************************************/
|
||
|
|
||
|
#define WIN32_LEAN_AND_MEAN
|
||
|
#include<windows.h>
|
||
|
#include<GL/gl.h>
|
||
|
#include"GL/glext.h"
|
||
|
#include"GL/wglext.h"
|
||
|
|
||
|
#include"macro_helpers.h"
|
||
|
|
||
|
#define GL_PROC_LIST \
|
||
|
GL_PROC(WGLCHOOSEPIXELFORMATARB, wglChoosePixelFormatARB) \
|
||
|
GL_PROC(WGLCREATECONTEXTATTRIBSARB, wglCreateContextAttribsARB) \
|
||
|
GL_PROC(WGLMAKECONTEXTCURRENTARB, wglMakeContextCurrentARB) \
|
||
|
GL_PROC(WGLSWAPINTERVALEXT, wglSwapIntervalEXT) \
|
||
|
GL_PROC(GLCREATESHADER, glCreateShader) \
|
||
|
GL_PROC(GLCREATEPROGRAM, glCreateProgram) \
|
||
|
GL_PROC(GLATTACHSHADER, glAttachShader) \
|
||
|
GL_PROC(GLCOMPILESHADER, glCompileShader) \
|
||
|
GL_PROC(GLGETSHADERIV, glGetShaderiv) \
|
||
|
GL_PROC(GLGETSHADERINFOLOG, glGetShaderInfoLog) \
|
||
|
GL_PROC(GLSHADERSOURCE, glShaderSource) \
|
||
|
GL_PROC(GLLINKPROGRAM, glLinkProgram) \
|
||
|
GL_PROC(GLGETPROGRAMIV, glGetProgramiv) \
|
||
|
GL_PROC(GLGETPROGRAMINFOLOG, glGetProgramInfoLog) \
|
||
|
GL_PROC(GLUSEPROGRAM, glUseProgram) \
|
||
|
GL_PROC(GLGENVERTEXARRAYS, glGenVertexArrays) \
|
||
|
GL_PROC(GLBINDVERTEXARRAY, glBindVertexArray) \
|
||
|
GL_PROC(GLGENBUFFERS, glGenBuffers) \
|
||
|
GL_PROC(GLBINDBUFFER, glBindBuffer) \
|
||
|
GL_PROC(GLBUFFERDATA, glBufferData) \
|
||
|
GL_PROC(GLUNIFORMMATRIX4FV, glUniformMatrix4fv) \
|
||
|
GL_PROC(GLVERTEXATTRIBPOINTER, glVertexAttribPointer) \
|
||
|
GL_PROC(GLENABLEVERTEXATTRIBARRAY, glEnableVertexAttribArray)
|
||
|
|
||
|
#ifdef WIN32_GL_LOADER_API
|
||
|
//NOTE: pointer declarations
|
||
|
#define GL_PROC(type, name) extern _cat3_(PFN, type, PROC) name;
|
||
|
GL_PROC_LIST
|
||
|
#undef GL_PROC
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#ifdef WIN32_GL_LOADER_IMPL
|
||
|
#define GL_PROC(type, name) _cat3_(PFN, type, PROC) name = 0;
|
||
|
GL_PROC_LIST
|
||
|
#undef GL_PROC
|
||
|
|
||
|
void mp_gl_load_procs()
|
||
|
{
|
||
|
#define GL_PROC(type, name) name = (_cat3_(PFN, type, PROC))wglGetProcAddress( #name );
|
||
|
GL_PROC_LIST
|
||
|
#undef GL_PROC
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#undef GL_PROC_LIST
|