windows - DirectX 12 "Full Screen Exclusive Windows"是否强制以与 DWM 相同的刷新率运行?

标签 windows winapi directx dwm dxgi

我最近读了一篇article前面提到的DirectX 12独有的全屏窗口本质上是无边框全屏窗口,受DWM的控制。鉴于 DWM 根据显示设置中选择的刷新率运行,这是否意味着无法在 DirectX 12 中使用与显示设置不同的刷新率配置交换链?

检查后DirectX12 sample来自微软,我注意到他们没有指定全屏转换的刷新率。这让我假设全屏窗口使用 DWM 的刷新率。有人可以验证一下吗?

最佳答案

Given that DWM operates based on the refresh rate chosen in the display settings, does this mean it's not possible to configure a swapchain in DirectX 12 with a different refresh rate from the display setting?

否,DWM 将以 DXGI_SWAP_CHAIN_FULLSCREEN_DESC 指定的刷新率运行传递至CreateSwapChainForHwnd

After examining this DirectX12 sample from microsoft

该示例未使用全屏独占/优化。它只是无边框窗口(将使用 DWM 刷新率)。

您可以通过传递有效指针而不是 nullptr here 来使其成为 FSE。在桌面示例中。

编辑:实际上,如果m_tearingSupport为假,那么它将使用FSE(即FSE=SetFullscreenState,Borderless Windowed=SetWindowPos),刷新率可能就是您所说的 DWM 的刷新率。这取决于它采取哪条路径 here .

对于 UWP,我不知道 ApplicationView::TryEnterFullScreenMode 是否执行 FSE,并且无论如何也看不到配置刷新率。

关于windows - DirectX 12 "Full Screen Exclusive Windows"是否强制以与 DWM 相同的刷新率运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77119334/

相关文章:

linux - 有没有办法在 Windows 中获取有关进程的详细信息?

c# - 如何在 C# 中使用 CreateFile 打开目录以检查已删除的条目?

c++ - 我可以在记录错误时让 DirectX(任何版本)回调吗?

windows - 内存映射文件 : how to monitor memory usage

windows - 备用数据流文件在 Windows 10 上消失

asp.net - 如何识别 ASP.NET/IIS/SQL Server 网站上的性能和并发问题

c++ - NVIDA 的 CUDA '__syncthreads()' 在传统 C++ 中的等价物是什么。如何专业地同步线程?

c++ - 窗口名称未打印

java - Java 中 DirectX 程序的全屏捕获(Javacv?)

c++ - Web 开发中使用 C++ 的 DirectX