我尝试使用WGL_ARB_pbuffer来实现OpenGL的离屏渲染,
wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) wglGetProcAddress("wglGetExtensionsStringARB");
if(!wglGetExtensionsStringARB) return;
const GLubyte* extensions = (const GLubyte*) wglGetExtensionsStringARB(wglGetCurrentDC());
实际上,这个在第二行结束,因为wglGetExtensionsStringARB得到了NULL。
PFNWGLGETEXTENSIONSSTRINGARBPROC pwglGetExtensionsStringARB = 0;
#define wglGetExtensionsStringARB pwglGetExtensionsStringARB
ARB
表示这是一个不一定在所有硬件上都支持的函数。引用自https://www.opengl.org/registry/specs/ARB/wgl_extensions_string.txt - “应用程序应调用wglGetProcAddress来查看是否支持wglGetExtensionsStringARB。如果支持,则可以使用它来确定设备支持哪些WGL扩展。” - enhzflepwglGetProcAddress
调用返回 NULL,意味着它不受支持 - 这是您检查卡/驱动程序支持的方法。看起来您没有它。 :( 是否尝试过wglGetExtensionString
,就像这里回答中提到的那样:http://stackoverflow.com/questions/11315053/how-to-read-windows-specific-extensions? - enhzflep