我尝试使用WS_EX_LAYERED样式窗口创建无边框窗口。目标是使用DirectX将图形直接渲染到桌面,使用alpha混合到当前桌面窗口。
现在在我的系统上,这种技术似乎完美无缺。我可以设置各种alpha级别并实现不同级别的透明度。不幸的是,有几个用户报告了严重的性能问题和低帧率,使得这种技术无法使用。
代码设置如下:
然后在渲染循环期间:
我的问题是:我做错了吗?有没有办法提高窗口更新的性能。我尝试了各种各样的事情,比如锁定渲染目标并手动将这些位复制到DIB部分以显示在窗口区域中,但没有成功。
答案 0 :(得分:0)
你的窗户有多大?注意MSDN在http://msdn.microsoft.com/en-us/library/windows/desktop/ms633556%28v=vs.85%29.aspx上的文档说"为了通过分层窗口和任何底层窗口获得最佳绘图性能,分层窗口应该尽可能小。"
如果启用了合成(Aero),您可能会获得性能提升。如果Windows已经在合成,那么它不必为绘制分层窗口做更多的额外工作。
如果您根据合成没有看到任何性能上的差异,那么我可能完全不在这里。