Here are all the WGL functions https://docs.microsoft.com/en-us/windows/win32/opengl/wgl-functions The function of interest is wglMakeCurrent https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-wglmakecurrent The line of interest is "A thread must set a current rendering context before calling any OpenGL functions. Otherwise, all OpenGL calls are ignored." so, what I recommend is to call wglMakeCurrent(NULL, NULL); (or whatever the Qt equivalent is.) from your GUI thread. Then, in your other thread, make a context current by calling. wglMakeCurrent(hdc, glcontext); (or whatever the Qt equivalent is.) and now, you can make gl funciton calls. When you are finished, call wglMakeCurrent(NULL, NULL); then, release the GL context, destroy the GL context and all that stuff.