/* static */ bool wxGLCanvasBase::IsExtensionSupported(const char *extension) { static const char *s_extensionsList = (char *)wxUIntPtr(-1); if ( s_extensionsList == (char *)wxUIntPtr(-1) ) { typedef const char * (WINAPI *wglGetExtensionsStringARB_t)(HDC hdc); wxDEFINE_WGL_FUNC(wglGetExtensionsStringARB); if ( wglGetExtensionsStringARB ) { s_extensionsList = wglGetExtensionsStringARB(wglGetCurrentDC()); } else { typedef const char * (WINAPI * wglGetExtensionsStringEXT_t)(); wxDEFINE_WGL_FUNC(wglGetExtensionsStringEXT); if ( wglGetExtensionsStringEXT ) { s_extensionsList = wglGetExtensionsStringEXT(); } else { s_extensionsList = NULL; } } } return s_extensionsList && IsExtensionInList(s_extensionsList, extension); }
/* static */ bool wxGLCanvasBase::IsExtensionSupported(const char *extension) { Display * const dpy = wxGetX11Display(); return IsExtensionInList(glXQueryExtensionsString(dpy, DefaultScreen(dpy)), extension); }
bool wxGLCanvasBase::IsExtensionSupported(const char *extension) { // we need a valid context to query for extensions. WXGLPixelFormat fmt = WXGLChoosePixelFormat(NULL); WXGLContext ctx = WXGLCreateContext(fmt, NULL); if ( !ctx ) return false; WXGLContext ctxOld = WXGLGetCurrentContext(); WXGLSetCurrentContext(ctx); wxString extensions = wxString::FromAscii(glGetString(GL_EXTENSIONS)); WXGLSetCurrentContext(ctxOld); WXGLDestroyPixelFormat(fmt); WXGLDestroyContext(ctx); return IsExtensionInList(extensions.ToAscii(), extension); }