我试图使用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?
答案 0 :(得分:12)
wglGetProcAddress
需要OpenGL渲染上下文;在致电wglCreateContext
之前,您需要致电wglMakeCurrent
和wglGetProcAddress
。如果您尚未设置OpenGL上下文,wglGetProcAddress
将始终返回NULL
。如果您还不确定是否还有OpenGL上下文(例如,如果您使用的是第三方框架/库),请致电wglGetCurrentContext
并检查以确保它没有返回NULL
。