wglGetProcAddress возвращает NULL
Я пытался использовать WGL_ARB_pbuffer для закадрового рендеринга с OpenGL,
но я потерпел неудачу во время инициализации.Вот мой кодwglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) wglGetProcAddress("wglGetExtensionsStringARB");
if(!wglGetExtensionsStringARB) return;
const GLubyte* extensions = (const GLubyte*) wglGetExtensionsStringARB(wglGetCurrentDC());
Так что на самом деле это заканчивается на 2-й строке, потому что wglGetExtensionsStringARB получил NULL.
Я понятия не имею, почему wglGetProcAddress не работает.Я включил "wglext.h", а также я определил, как показано ниже в заголовке.PFNWGLGETEXTENSIONSSTRINGARBPROC pwglGetExtensionsStringARB = 0;
#define wglGetExtensionsStringARB pwglGetExtensionsStringARB
Почему я не могу использовать wglGetProcAddress, как я и предполагал??
1 ответ
Решение
wglGetProcAddress
требуется контекст рендеринга OpenGL; вам нужно позвонить wglCreateContext
а также wglMakeCurrent
до звонка wglGetProcAddress
, Если вы еще не настроили контекст OpenGL, wglGetProcAddress
всегда вернется NULL
, Если вы не уверены, что у вас есть контекст OpenGL (например, если вы используете стороннюю платформу / библиотеку), позвоните wglGetCurrentContext
и убедитесь, что он не возвращается NULL
,