According to the QWGLNativeContext documentation and some online examples, I set up this little function to try and initialize a QOpenGLContext from an existing and already initialized SDL2 context: void QtHooks::initQtOpenGlContext(SDL_Window *screen) { assert(screen); QOpenGLContext *context = new QOpenGLContext; SDL_SysWMinfo sysInfo; SDL_VERSION(&sysInfo.version); SDL_GetWindowWMInfo(screen, &sysInfo); HGLRC currentContext = wglGetCurrentContext(); HWND currentWindow = sysInfo.info.win.window; assert(currentContext); assert(currentWindow); QWGLNativeContext nativeContext(currentContext, currentWindow); context->setNativeHandle(QVariant::fromValue(nativeContext)); assert(qtContext->isValid()); // <<-- this line always fails context->create(); // if i remove the previous assert, this line kills the application very badly } This little example always fails in the last two lines. Am I missing something?