Я полагаю, что это связано с довольно старой проблемой из списка рассылки Qt, как описано здесь . Короче говоря, если поток, вызывающий makeCurrent (), не равен потоку, в котором был получен контекст устройства, вызывается GetDC (). Как указано в связанном потоке, проблема заключается в том, что ReleaseDC () не вызывается соответствующим образом, что приводит к утечке дескриптора и заставляет Windows возвращать NULL при вызове GetDC () в некоторый момент, что приводит к сбою wglMakeCurrent (). Однако я не знаю, почему GetLastError () в этом случае заявляет: «Операция завершена успешно».