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