Как нарисовать контент OpenGL при изменении размера окна Win32 - PullRequest
8 голосов
/ 06 июля 2011

При изменении размера окна win32, с контекстом OpenGL, оно только показывает черный на недавно открытой области.Я получаю сообщение WM_PAINT при изменении размера, и я пытаюсь отобразить новый контент, но кажется, что SwapBuffers ничего не делает при изменении размера."содержимое при изменении размера?

1 Ответ

7 голосов
/ 06 июля 2011

Это обычно происходит, если у вас настроена кисть фона для класса вашего окна (см. Структуру WNDCLASS или WNDCLASSEX). Если есть кисть, система очистит окно сразу после каждого шага перерисовки, а затем отправит WM_PAINT. В случае V-Synced SwapBuffers ваше изображение могло быть перезаписано на следующем шаге изменения размера до того, как произошла перестановка буфера, или сразу после него, но до того, как эта часть экрана была отправлена ​​на устройство отображения.

В любом случае, решение состоит в том, чтобы установить кисть фона окна в NULL. Также обработка результатов обработки сообщения WM_ERASEBKGND может дать результаты.

РЕДАКТИРОВАТЬ из-за комментария

Если содержимое последнего кадра остается видимым, вы, вероятно, просто не реагируете на изменение размера с перерисовкой. Самым простым решением этого является вызов функции рисования из обработчика сообщений WM_SIZING (или WM_SIZE, просто попробуйте оба).

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