如何在 UWP 中禁用 vsync?

How can I disable vsync in UWP?

大约一年前,您现在可以解锁 UWP 应用程序(或游戏)的帧率,但我无法在任何地方找到它的文档。只有 100 个网站说您可以做到。

我正尝试在 C# UWP 应用程序中使用 monogame 和 sharpdx 作为我的 directx 包装器。

这是如何启用的?

文档在哪里?

我手边没有 C# SharpDX/MonoGame 解决方案,但我已经在我的 C++ DeviceResources 中实现了这个功能,您可以尝试借鉴。

  1. 您首先要确认是否支持撕裂。获取 DXGI 1.5 接口(如果可用),并为 DXGI_FEATURE_PRESENT_ALLOW_TEARING 调用 CheckFeatureSupport。如果它 returns false 或任何这些步骤失败,则 system/driver 不支持 FreeSync/G-Sync.
  2. 如果支持撕裂,则使用标志 DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING 创建 DXGI 交换链。请注意,您还需要在调用 ResizeBuffers.
  3. 时提供此标志
  4. 当您调用 Present 时使用间隔 0 并传递标志 DXGI_PRESENT_ALLOW_TEARING

文档位于 MSDN