В классе все работает, но такой вариант мне не подходит, разве что если поля и методы статическими задать, но это не получается
class t {
public:
bool mygl_Init(const char *);
void mygl_Quit();
void glClear(GLbitfield mask);
void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
private:
std::function < void (GLbitfield) > _glClear;
std::function < void (GLclampf, GLclampf, GLclampf, GLclampf) > _glClearColor;
};
typedef void ( * PGLCLEARPROC ) (GLbitfield mask);
typedef void ( * PGLCLEARCOLORPROC ) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
bool t::mygl_Init(const char *str)
{
if (SDL_GL_LoadLibrary(str) < 0)
{
return false;
}
return true;
}
void t::mygl_Quit()
{
SDL_GL_UnloadLibrary();
}
void t::glClear ( GLbitfield mask)
{
if( !_glClear )
_glClear = (PGLCLEARPROC) SDL_GL_GetProcAddress( "glClear" );
else
_glClear (mask);
}
void t::glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
if( !_glClearColor )
_glClearColor = ( PGLCLEARCOLORPROC ) SDL_GL_GetProcAddress( "glClearColor" );
else
_glClearColor ( red, green, blue, alpha );
}