Вы указали свой код для загрузки расширений следующим образом:
PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB;
PFNGLACTIVETEXTUREARBPROC glActiveTexture;
glActiveTexture = (PFNGLACTIVETEXTUREARBPROC) wglGetProcAddress((LPCSTR)"glActiveTextureARB");
glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC) wglGetProcAddress((LPCSTR)"glMultiTexCoord2fARB");
Это очень проблематично, поскольку, возможно, оно переопределяет уже существующие символы.(Динамический) компоновщик в конечном итоге отключится.Например, может случиться так, что присвоение переменной-указателю glActiveTexture идет в какое-то место, но всякий раз, когда вызывается функция с тем же именем, она вызывает что-то, связанное откуда-то еще.
В C вы обычно используете комбинациюмакросов препроцессора и пользовательского префикса, чтобы избежать этой проблемы, без необходимости настраивать большие части кода.
PFNGLMULTITEXCOORD2FARBPROC myglMultiTexCoord2fARB;
#define glMultiTexCoord2fARB myglMultiTexCoord2fARB
PFNGLACTIVETEXTUREARBPROC myglActiveTexture;
#define glActiveTexture myglActiveTexture
glActiveTexture = (PFNGLACTIVETEXTUREARBPROC) wglGetProcAddress((LPCSTR)"glActiveTextureARB");
glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC) wglGetProcAddress((LPCSTR)"glMultiTexCoord2fARB");
Я действительно не знаю ни одной другой причины, по которой вещи могут потерпеть неудачу, если у вас есть действительный контекст рендерингаактивные и поддерживаемые расширения.