Here are all the WGL functions The function of interest is 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.