You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DirectX12全屏模式FPS骤降问题及合法修复方案咨询

Direct2D Flip Model全屏模式性能异常问题分析与咨询

问题现象

  • 窗口模式:使用Direct2D Flip Model渲染两张图片,交换链配置为3个缓冲、无VSync、Present(0,0)双帧队列,Nvidia Exp Overlay统计帧率约3000FPS,GPU负载60%。
  • 全屏模式:无论是调用IDXGISwapChain::SetFullscreenState还是调整窗口样式/尺寸实现全屏,帧率骤降至500-600FPS,帧时间仍维持0.1-0.2ms,但GPU负载从60%骤降至17%。

临时解决技巧

技巧1:偏移无边框全屏窗口

通过修改窗口样式为无边框,再将窗口偏移1像素并增大1像素尺寸,可维持3000FPS:

SetWindowLong(mainWinHandle, GWL_STYLE, ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE |
              WS_MAXIMIZE | WS_SYSMENU | WS_VSCROLL | WS_HSCROLL));

MoveWindow(mainWinHandle, -1, -1, monitorRes.cx + 1, monitorRes.cy + 1, true);

推测此操作是通过欺骗DWM,绕过其对无边框全屏窗口的优化(已尝试禁用DWM优化但无效)。

技巧2:结合SetFullscreenState与窗口调整

调用SetFullscreenState(true, NULL)后再调整窗口(即使坐标尺寸设为0,0及真实分辨率也有效),不仅修复性能下降问题,还将GPU使用率拉满至100%,帧率提升至6000FPS:

swapChain->SetFullscreenState(true, NULL);
MoveWindow(mainWinHandle, -1, -1, monitorRes.cx + 1, monitorRes.cy + 1, true);

咨询问题

  1. 上述现象的根本原因是什么?
  2. 如何合法合规地修复全屏模式下的性能下降问题,而非依赖这类"欺骗"DWM的技巧?
  3. 为何默认调用IDXGISwapChain::SetFullscreenState会导致性能大幅下降?

内容的提问来源于stack exchange,提问作者Fun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 13:07:06