Прозрачное окно над OpenGL

В моем приложении есть OpenGL Engine в окне, размещенном на WPF. Я создал полупрозрачный виджет (как объект Window), который должен отображать содержимое над окном OpenGL. Иногда, когда приложение обрабатывает данные, фон виджетов становится черным (см. прикрепленное изображение). Кто-нибудь знает, что это такое. Как я могу решить эту проблему.введите здесь описание изображения


person Adam D    schedule 28.02.2012    source источник
comment
Насколько я знаю, прозрачность работает только между элементами WPF, поэтому я удивлен, что иногда это работает для вас.   -  person Ignacio Soler Garcia    schedule 28.02.2012
comment
Окно OpenGL не прозрачно, но окно wpf прозрачно. Это работает очень хорошо, но эта проблема возникает, когда происходит асинхронный рендеринг, я думаю (мое мнение)   -  person Adam D    schedule 28.02.2012
comment
Насколько я знаю, окна WPF прозрачны только для других окон WPF. Вы не можете поместить прозрачный элемент управления WPF в элемент управления Windows Forms и ожидать, что они будут работать.   -  person Ignacio Soler Garcia    schedule 28.02.2012
comment
См. это: khason.net/blog/   -  person Ignacio Soler Garcia    schedule 28.02.2012
comment
Здесь есть интересный пост, возможно, это именно то, что вы ищете.   -  person karlphillip    schedule 19.03.2012


Ответы (2)


Поскольку Vista Windows поддерживает новый флаг PIXELFORMATDESCRIPTOR: PFD_SUPPORT_COMPOSITION. Если этот флаг установлен, создаваемый контекст OpenGL будет интегрироваться в систему композиции рабочего стола:

http://msdn.microsoft.com/en-us/library/cc231189(v=prot.10).aspx

person datenwolf    schedule 28.02.2012

Это не гарантирует работу вообще. Окна OpenGL не объединены с прозрачностью WPF ни ниже, ни выше. Иногда это может работать, но это не обязательно.

person Nicol Bolas    schedule 28.02.2012
comment
Композитинг может быть включен для композитинга. Это делается с помощью нового флага PIXELFORMATDESCRIPTOR. - person datenwolf; 28.02.2012
comment
Во-первых, это только композиты с вещами позади него, а не поверх него. Во-вторых, я не вижу эквивалента в wglChoosePixelFormatARB, который откуда большинство людей берут свои пиксельные форматы. В противном случае вы не могли бы использовать кадровые буферы sRGB или мультисэмплинг. - person Nicol Bolas; 28.02.2012
comment
@datenwolf: И в-третьих, нет гарантии, что PFD_SUPPORT_COMPOSITION не отключит аппаратное ускорение или принудительно использует драйвер Microsoft GL. Нет никакой гарантии, что это произойдет, но я хотел бы получить больше информации, прежде чем пытаться внести такое изменение. - person Nicol Bolas; 28.02.2012