1 #ifndef opengl_compat_h
2 #define opengl_compat_h
3 
4 #define GL_GLEXT_PROTOTYPES
5 #include <SDL_opengl.h>
6 #include <SDL_video.h>
7 
8 #ifndef __APPLE__
9 #define GL_COMPAT_NAME(func) gl_compat_##func
10 
11 #define GL_COMPAT_WRAPPER(func) \
12 ({  extern typeof(func) *GL_COMPAT_NAME(func); \
13 if (!GL_COMPAT_NAME(func)) GL_COMPAT_NAME(func) = SDL_GL_GetProcAddress(#func); \
14     GL_COMPAT_NAME(func); \
15 })
16 
17 #define glCreateShader GL_COMPAT_WRAPPER(glCreateShader)
18 #define glGetAttribLocation GL_COMPAT_WRAPPER(glGetAttribLocation)
19 #define glGetUniformLocation GL_COMPAT_WRAPPER(glGetUniformLocation)
20 #define glUseProgram GL_COMPAT_WRAPPER(glUseProgram)
21 #define glGenVertexArrays GL_COMPAT_WRAPPER(glGenVertexArrays)
22 #define glBindVertexArray GL_COMPAT_WRAPPER(glBindVertexArray)
23 #define glGenBuffers GL_COMPAT_WRAPPER(glGenBuffers)
24 #define glBindBuffer GL_COMPAT_WRAPPER(glBindBuffer)
25 #define glBufferData GL_COMPAT_WRAPPER(glBufferData)
26 #define glEnableVertexAttribArray GL_COMPAT_WRAPPER(glEnableVertexAttribArray)
27 #define glVertexAttribPointer GL_COMPAT_WRAPPER(glVertexAttribPointer)
28 #define glCreateProgram GL_COMPAT_WRAPPER(glCreateProgram)
29 #define glAttachShader GL_COMPAT_WRAPPER(glAttachShader)
30 #define glLinkProgram GL_COMPAT_WRAPPER(glLinkProgram)
31 #define glGetProgramiv GL_COMPAT_WRAPPER(glGetProgramiv)
32 #define glGetProgramInfoLog GL_COMPAT_WRAPPER(glGetProgramInfoLog)
33 #define glDeleteShader GL_COMPAT_WRAPPER(glDeleteShader)
34 #define glUniform2f GL_COMPAT_WRAPPER(glUniform2f)
35 #define glActiveTexture GL_COMPAT_WRAPPER(glActiveTexture)
36 #define glUniform1i GL_COMPAT_WRAPPER(glUniform1i)
37 #define glBindFragDataLocation GL_COMPAT_WRAPPER(glBindFragDataLocation)
38 #define glDeleteProgram GL_COMPAT_WRAPPER(glDeleteProgram)
39 #define glShaderSource GL_COMPAT_WRAPPER(glShaderSource)
40 #define glCompileShader GL_COMPAT_WRAPPER(glCompileShader)
41 #define glGetShaderiv GL_COMPAT_WRAPPER(glGetShaderiv)
42 #define glGetShaderInfoLog GL_COMPAT_WRAPPER(glGetShaderInfoLog)
43 #endif
44 
45 #endif /* opengl_compat_h */
46