Unity-- Gfx.WaitForPresentOnGfxThread占用CPU过高导致帧率低

一个新建的URP项目,里面只有几个测试模型,结果在3070的笔记本电脑上,只能运行到20帧!FPS=20! 这实在受不了,开始Profiler分析原因。发现Gfx.WaitForPresentOnGfxThread占用较高。应该是它导致了帧率这么低。

死磕了一下午,终于找到原因,解决了。下面详细说明一下:

Unity-- Gfx.WaitForPresentOnGfxThread占用CPU过高导致帧率低_第1张图片

Unity-- Gfx.WaitForPresentOnGfxThread占用CPU过高导致帧率低_第2张图片

Gfx.WaitForPresentOnGfxThread 这个东西,是CPU已经准备好绘制下一帧,但是GPU还没准备好,应用程序等待 GPU 所花费的时间。

附一个官网的说明:

https://docs.unity3d.com/Manual/profiler-markers.htmlhttps://docs.unity3d.com/Manual/profiler-markers.html

那就说明,卡在GPU的性能上了。但是我电脑是3070啊!然后打开任务管理器,发现GPU最高只跑到10%。冷静,把所有能影响GPU性能的全部列出来,挨个试验:

(1)Unity版本问题。当前使用的Unity2022。换2021 LTS版本,情况依旧。结论:无效。

(2) URP带来的问题。关闭了所有URP耗性能相关的设置,情况未有好转。结论:无效。

(3)项目质量设置问题。降低并统一了各个平台的默认质量设置。甚至删除了多质量设置。情况好转一点。多个几帧可以。结论:无效。

(4) 显卡驱动导致。关闭显卡的最大帧率限制。结论:可能有效。

Unity-- Gfx.WaitForPresentOnGfxThread占用CPU过高导致帧率低_第3张图片 

 (5) NVDIA控制设置。按Youtube的一个哥们建议,直接点【恢复】。结论:可能有效。

Unity-- Gfx.WaitForPresentOnGfxThread占用CPU过高导致帧率低_第4张图片

 (6) 笔记本电脑的系统设置。有些笔记本电脑,是有系统设置的,可以直接影响GPU的渲染能力。切换为【性能】设置,释放GPU能力。结论:直接有效!

Unity-- Gfx.WaitForPresentOnGfxThread占用CPU过高导致帧率低_第5张图片

 

再看一下运行后的FPS:轻松上到100+了。

Unity-- Gfx.WaitForPresentOnGfxThread占用CPU过高导致帧率低_第6张图片

 

你可能感兴趣的:(Unity,unity,游戏引擎)