就是喜欢折腾。前段时间新搞了个3A大作,别人都吹DX12牛逼,帧数直接起飞,说能把老显卡的潜力都榨出来。我寻思我的显卡也不算差,那必须得打开试试。结果?那叫一个心凉透了,感觉自己被骗了。
一开DX12,游戏画面刚进去还没打两分钟,帧数那叫一个上蹿下跳,平均帧比我之前用DX11还低了十来帧不说,那卡顿,简直能把我气出内伤,走两步路就像踩了香蕉皮一样,一滑一卡的。我当时的第一反应就是:驱动是不是没更新?立马去NVIDIA官网下载了最新的驱动,装重启,再试。结果还是一样,该卡继续卡,帧数还是低,一点变化都没有。
我当时真的快崩溃了,开始怀疑是不是我显卡体质不行,或者是不是我CPU太老了,带不动DX12这种高级玩意儿。要知道,我上次这么较真,还是因为我爸非要让我帮他装一个“加速球”,结果装完电脑慢得跟蜗牛一样,我花了半个下午才把那些流氓软件全卸干净。这回折腾DX12,感觉比卸流氓软件还费劲。
折腾了三天,终于发现问题出在细节上
我盯着那个性能监视器看了快三天,什么游戏设置都试了一遍,从最低特效拉到最高特效,数据波动依然巨大。我发现了一个非常关键但又容易被忽略的问题:DX11下我的GPU占用几乎是满的,CPU负载正常;但切到DX12,GPU占用总是跳动,而且CPU占用忽高忽低,更恐怖的是,VRAM(显存)的占用量一下子暴涨了一大截。我这才意识到,DX12对硬件的调度逻辑跟DX11完全不是一回事,它更依赖系统和用户自己去进行微调。

既然不是硬件的锅,那就是软件设置的锅了。我马上开始排查那些平时根本不注意的小角落,果然,问题就出在这几个地方,它们在暗中给我拖后腿:
- 显卡驱动里的缓存设置:
这个我之前一直没管。DX12是把很多渲染编译的工作丢给CPU/GPU即时处理的,特别吃缓存。如果驱动程序里的“着色器缓存大小”还是默认设置得太小,它每次加载新场景或者换个角度看东西,都要重新编译大量的着色器,自然就卡得要死。我直接给它改成了“无限制”(或者设置为更大的容量),重启游戏,卡顿肉眼可见地少了,帧数也稳定了不少。这是解决随机卡顿的关键。
- Windows系统里的“硬件加速GPU计划”:
这个功能是微软后来推的,理论上能把一些调度工作交给GPU做,减轻CPU负担,让CPU有更多精力去处理游戏逻辑。我之前觉得是玄学优化,一直关着的。但打开这个功能后,再配上DX12的异步计算特性,CPU的负载一下子就下来了,帧数也平稳了很多。但要注意,这个功能打开后需要重启电脑才生效,而且老显卡或者老版本的Windows不一定支持,我的机器是新卡,打开后效果立竿见影。
- 电源管理模式和游戏内部设置:
这是个老生常谈的问题,但我还是犯了错。我的电源模式不知道什么时候被系统偷偷改成了“平衡”,导致显卡在高负载时不能稳定跑在最高频率。赶紧改回了“高性能”。我也检查了游戏内部的DX12特定设置,特别是那些关于“异步渲染”或者“渲染队列”的开关,确保它们是打开的。DX12最大的优势就是多线程和异步,如果游戏里把这个关了,DX12就白开了。
那三天我真的魔怔了,差点把电脑都拆了。我甚至怀疑是不是我显卡有问题,跑去问了好多论坛里的大佬,结果大家给的建议都比较泛,什么重装系统,换电源,听得我心烦。还是靠自己一点点摸索,才把这些细节给揪出来。
DX12这东西,不是说你开了就万事大吉。它更像是一个工具箱,能让你发挥出显卡更多的潜力,但前提是你得会用,得知道它想要什么。如果你只是简单打开,却不配合相应的设置,它只会给你找麻烦。因为它把很多原本系统帮你做的事情,又丢回给了游戏和用户自己去管理了。
当我把上面那三项都设置好之后,再进游戏,帧数表现就完全不一样了。平均帧数直接跳到了比DX11高出20%的水平,而且最关键的,卡顿完全消失了,画面那个丝滑,流畅得让人舒服。我当时看着屏幕,心想:总算搞定了,我的头发也少了几根。这回的教训就是,遇到问题别着急怪硬件,先看看那些隐藏在角落里的设置是不是在拖后腿。
所以兄弟们,如果你们开启DX12也遇到了帧数暴跌或者卡顿的情况,别急着骂游戏厂商或者骂显卡。把上面那几个地方赶紧掏出来检查一遍。特别是那个显卡驱动里的着色器缓存和Windows的GPU计划,这两个往往是最大的陷阱,也是DX12发挥性能的关键。省得像我一样,浪费了两天时间,把自己气得不行。
