В моем приложении есть OpenGL Engine в окне, размещенном на WPF. Я создал полупрозрачный виджет (как объект Window), который должен отображать содержимое над окном OpenGL. Иногда, когда приложение обрабатывает данные, фон виджетов становится черным (см. прикрепленное изображение). Кто-нибудь знает, что это такое. Как я могу решить эту проблему.
Прозрачное окно над OpenGL
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
Композитинг может быть включен для композитинга. Это делается с помощью нового флага PIXELFORMATDESCRIPTOR.
- person datenwolf; 28.02.2012
Во-первых, это только композиты с вещами позади него, а не поверх него. Во-вторых, я не вижу эквивалента в wglChoosePixelFormatARB, который откуда большинство людей берут свои пиксельные форматы. В противном случае вы не могли бы использовать кадровые буферы sRGB или мультисэмплинг.
- person Nicol Bolas; 28.02.2012
@datenwolf: И в-третьих, нет гарантии, что PFD_SUPPORT_COMPOSITION не отключит аппаратное ускорение или принудительно использует драйвер Microsoft GL. Нет никакой гарантии, что это произойдет, но я хотел бы получить больше информации, прежде чем пытаться внести такое изменение.
- person Nicol Bolas; 28.02.2012