nvidia - 强制 DirectX 11 VSync,即使在 Nvidia 控制面板中关闭
问题描述
我的 DirectX 11 应用程序的一些用户抱怨帧速率在 1000-2000 fps 之间,我完全理解。遇到这个问题的人非常少。我能够复制它的唯一方法是在 Nvidia 控制面板中禁用“垂直同步”,我怀疑用户可能篡改了这些设置,也许是为了更早解决其他应用程序的问题(或者 Nvidia 应用程序决定这是最适合应用?)。
我目前遍历DisplayModeList
fromIDXGIOutput::GetDisplayModeList
以找到最适合RefreshRate
分配给DXGI_SWAP_CHAIN_DESC
before call D3D11CreateDeviceAndSwapChain()
。
swapChainDesc.BufferDesc.RefreshRate.Numerator = numerator;
swapChainDesc.BufferDesc.RefreshRate.Denominator = denominator;
虽然,即使我将分子和分母分别设置为 0 和 1,驱动程序仍将使用 VSync 并以适当的帧速率(监视器帧速率)运行应用程序。这是使用 Nvidia 控制面板中的默认设置。
似乎没有视频显示模式或交换链创建设置可以忽略在 Nvidia 控制面板中禁用 VSync 的事实。使用 GLFW 的 OpenGL 中的相同问题。
一种解决方法是在 delta 时间非常小时让应用程序休眠,但不能保证休眠准确,并且会导致 fps 抖动和屏幕撕裂。
我有什么方法可以覆盖 Nvidia 控制面板中的设置吗?
解决方案
推荐阅读
- python - 从迷你数据框中获取数据创建数据框的最简单方法是什么?
- angular - mat-divider 没有出现在 mat-toolbar-row 之间
- pytorch - 关于pytorch占用GPU内存
- php - 如何不在查询中显示不需要的行?
- flutter - Flutter:容器在滑入时卡在中途?
- python - 如何为类键入注释装饰器?
- jquery - 如何在控制器的 laravel 存储功能中进行保存和打印?
- mysql - 如何使用我的 sql 使用 getdate() 使用 DOB fomat dd/mm/yyyy 计算儿童年龄
- python - 在 Vscode 内的 git-bash 控制台中渲染 ANSI 代码
- php - $monthlyInvoices 变量有问题吗?