Это неправильный способ доступа к расширениям OpenGL. Правильный способ немного сложен, так как вы не должны переопределять символы, которые могут быть импортированы из библиотек. В Windows нет большой проблемы, поскольку экспортируются только символы OpenGL-1.1. Но практически во всех других ОС есть дополнительные символы, экспортируемые библиотекой OpenGL.
Я настоятельно советую использовать библиотеку загрузчика расширений, поскольку простая загрузка расширений утомительна. Так что просто получите GLEW от http://glew.sourceforge.net и покончите с этим. Или используйте некоторую платформу OpenGL, которая также обеспечивает управление расширениями, например GLFW.
Просто посмотрите, как правильно загрузить расширения OpenGL, чтобы понять, почему:
typedef GLAPI void APIENTRY (*__MYGLEXTFP_GLGENERATEMIPMAPS)(GLenum);
__MYGLEXTFP_GLGENERATEMIPMAP __myglextGenerateMipmaps;
#define glGenerateMipmaps __myglextGenerateMipmaps;
и позже при инициализации расширения:
#ifdef WIN32
#define __MYGLEXT_GetProcAddress wglGetProcAddress
#endif
#ifdef GLX
#define __MYGLEXT_GetProcAddress glXGetProcAddress
#endif
__myglGenerateMipmap =
(__MYGLEXTFP_GLGENERATEMIPMAPS) __MYGLEXT_GetProcAddress("glGenerateMipmaps");
Выглядит довольно грязно, вы согласны? Однако это единственный чистый способ сделать это. Он становится еще более сложным, если в Windows используется несколько контекстов OpenGL, так как указатели функций функций расширения Windows OpenGL могут отличаться в зависимости от контекста.