在OpenGL上方创建透明窗口

3

我的应用程序在一个WPF托管窗口中有OpenGL引擎。我创建了一个半透明的小部件(作为窗口对象),应该显示在OpenGL窗口之上。有时候当应用程序处理数据时,小部件的背景会变成黑色(请参见附图)。有人知道这是什么问题吗?我该如何解决这个问题。enter image description here


据我所知,透明度仅在WPF项目之间起作用,所以我很惊讶它有时对您起作用。 - Ignacio Soler Garcia
OpenGL 窗口不透明,但 WPF 窗口是透明的。它运行得非常好,但当异步渲染发生时,我认为会出现这些问题(我的观点)。 - Adam D
据我所知,WPF窗口只对其他WPF窗口透明。您不能将WPF透明控件放在Windows Forms控件上并期望它们能正常工作。 - Ignacio Soler Garcia
请查看此链接:http://khason.net/blog/transparent-wpf-control-over-unmanaged-window-handle/ - Ignacio Soler Garcia
这里有一篇有趣的帖子,它可能正是你正在寻找的。 - karlphillip
2个回答

3

0

不能保证完全可行。OpenGL 窗口无法与 WPF 透明度混合,无论是在下方还是上方。有时可能会起作用,但不一定。


合成可以通过新的PIXELFORMATDESCRIPTOR标志启用。 - datenwolf
首先,只有复合物后面才能跟着其他东西,而不是在其上面。其次,在wglChoosePixelFormatARB中我没有看到相应的内容,这是大多数人获取像素格式的地方。否则,您将无法使用sRGB帧缓冲区或多重采样。 - Nicol Bolas
@datenwolf:第三,不能保证PFD_SUPPORT_COMPOSITION不会关闭硬件加速或强制使用Microsoft GL驱动程序。也不能保证它不会这样做,但在尝试进行此类更改之前,我需要更多的信息。 - Nicol Bolas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接