QGLWidget :: makecurrent (): сбой GetDC (). Неверная ручка окна - PullRequest
1 голос
/ 14 мая 2010

У меня есть требование, чтобы сохранить изображения за пределами экрана . Я использовал QGLwidget :: grabframebuffer, чтобы сделать это. Хотя он отлично работает на MAC, он завершается с ошибкой «QGLWidget :: makecurrent (): Ошибка GetDC (). Неверный дескриптор окна» в Windows 7. В процессе создается только один контекст opengl. Но я заметил, что если я добавлю QGLWidget в главное окно, я смогу сохранить сохраненные изображения. Мне не нужно делать это на MAC, чтобы получить фотографии. Я не уверен, что могло пойти не так.

спасибо !!

1 Ответ

1 голос
/ 28 марта 2011

Это потому, что в MacOS контекст OpenGL всегда присоединен к корневому окну многооконного приложения. (это не видно с какао, но это было с Agl / Cgl) В окнах вы можете создать контекст с любым окном (в котором есть флаг popup, child и еще один, который я забыл), а затем привязать его к любому окну с помощью MakeCurrent. чтобы ожидать, что он будет работать нормально, вам нужно только убедиться, что у вас есть только один поток и один контекст во всем приложении. спецификация говорит иначе, но на практике это никогда не работает. (хотя вы можете не увидеть его в небольшом приложении, а просто увидеть редкий случайный сбой)

также, я не знаю в QT, как работает захват кадрового буфера, с readpixels или с ужасным взломом копирования GDI, если он последний, то нормально, что он не работает, он может сделано на поверхностях экрана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...