wglGetProcAddress返回NULL

phr*_*ust 4 c++ opengl wgl

我试图使用WGL_ARB_pbuffer进行OpenGL的屏幕外渲染,

但我在初始化期间失败了.

这是我的代码.

wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) wglGetProcAddress("wglGetExtensionsStringARB");
if(!wglGetExtensionsStringARB) return;
const GLubyte* extensions = (const GLubyte*) wglGetExtensionsStringARB(wglGetCurrentDC());
Run Code Online (Sandbox Code Playgroud)

实际上这结束于第二行,因为wglGetExtensionsStringARB得到NULL.

我不知道为什么wglGetProcAddress不起作用.

我包括"wglext.h",我也在标题中定义如下.

PFNWGLGETEXTENSIONSSTRINGARBPROC    pwglGetExtensionsStringARB = 0;
#define wglGetExtensionsStringARB   pwglGetExtensionsStringARB
Run Code Online (Sandbox Code Playgroud)

为什么我不能像我想的那样使用wglGetProcAddress?

Mr.*_*ith 13

wglGetProcAddress需要一个OpenGL渲染上下文; 你需要你的电话wglCreateContext,并wglMakeCurrent在调用wglGetProcAddress.如果您尚未设置OpenGL上下文,wglGetProcAddress将始终返回NULL.如果您还不确定是否还有OpenGL上下文(例如,如果您使用的是第三方框架/库),请致电wglGetCurrentContext并检查以确保它没有返回NULL.