Окна не рисуют над окнами OpenGL - PullRequest
1 голос
/ 09 июля 2009

У меня есть приложение с окном OpenGL в качестве дочернего окна главного окна.

Когда я отображаю диалоговое окно над окном OpenGL, оно не отображается. Как будто он не получает WM_PAINT сообщений. Если я могу угадать положение строки заголовка диалогового окна, я могу перетащить его, и оно все равно будет отзывчивым.

Я понимаю, что это может быть расплывчатым вопросом, но мне было интересно, видел ли кто-нибудь еще такое поведение раньше и знал ли решение?

Мне было интересно, изменится ли дескриптор формата пикселя - у меня было PFD_DRAW_TO_WINDOW, но изменение на PDF_DRAW_TO_BITMAP не имело никакого значения. Я не уверен, на что еще я должен смотреть?

Ответы [ 4 ]

1 голос
/ 06 сентября 2009

Bugger. Должен был дать все детали. Я работал под управлением Windows на виртуальной машине в Mac OS X, используя Parallels. Я обновляю Parallels 3 до 4, и теперь все работает нормально. Я подозреваю, что проблема с драйвером видео Parallels.

Спасибо всем, кто ответил с предложениями.

0 голосов
/ 09 июля 2009

Возможно, вам придется отключить оверлей. Это можно сделать с помощью принудительного копирования метода представления буфера вместо замены.

Используйте wglChoosePixelFormatARB, и один из параметров должен быть

WGL_SWAP_METHOD_ARB со значением WGL_SWAP_COPY_ARB

0 голосов
/ 09 июля 2009

Это может показаться глупым, но вы уверены, что ваше окно OpenGL не помечено как "topmost"?

Диалоговое окно исчезает также за границами вашего окна или сразу за прямоугольником рендеринга OpenGL?

0 голосов
/ 09 июля 2009

Ваше окно opengl постоянно рендерится. Возможно, что 3D-оборудование просто рендерится в оверлей, который перекрывает ваше диалоговое окно. Если вы расположите диалоговое окно так, чтобы оно перекрывало ваше главное окно, можете ли вы его увидеть?

Попробуйте приостановить рендеринг на главном экране, чтобы увидеть, влияет ли он на результаты.

Вам также необходимо убедиться, что ваш стиль окна гарантирует, что результаты обрезаны ...

cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN ;

Вам следует проверить все элементы, упомянутые в этой статье MSDN, так как она охватывает множество основ правильного отображения рендеринга opengl в окне.

http://msdn.microsoft.com/en-us/library/ms970745.aspx

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