Unity Profiler PostLateUpdate.PresentAfterDraw

Posted

技术标签:

【中文标题】Unity Profiler PostLateUpdate.PresentAfterDraw【英文标题】: 【发布时间】:2018-03-02 14:48:47 【问题描述】:

所以我最近发布了我的 android 应用程序,在我的手机上一切正常,但在我朋友的旧手机上它滞后,所以我使用 Unity 的分析器来确定性能瓶颈,并发现一个叫做:“PostLateUpdate. PresentafterDraw" 导致 CPU 上的性能峰值。遗憾的是,没有关于该线程的描述(?),我在互联网上能找到的唯一可能原因是着色器太昂贵,但我并没有真正使用任何着色器。这也出现在我的开始屏幕中,除了开始按钮的大小扩大和缩小之外,实际上什么都没有发生,而且当我实际玩游戏时也是如此。谁能告诉我还有什么其他原因可能导致这些尖峰?非常感谢提前

问候比约恩

https://i.stack.imgur.com/4oVN4.png

【问题讨论】:

【参考方案1】:

“Present”是用于将渲染结果呈现(或交换或复制)到帧缓冲区以供显示的 GPU 命令。通常,当您看到它需要很长时间时,这意味着渲染线程已完成向 GPU 发出命令(绘制调用),它只是在等待 GPU 完成渲染它们。

所以是的,它通常表示渲染时间很长。如果您的游戏是垂直同步的,那么您的主线程也可能比平时花费更长的时间,因此渲染开始较晚,并且您错过了垂直同步,因此存在必须等待另一帧。考虑到你捕获的时间,我怀疑这里的情况。

但实际上,这些信息还不够,您甚至没有说明您在什么设备上运行(ios、Android?),您应该尝试从 Instruments (iOS) 或 Traceview 获得更好的分析信息(Android) 或类似的。 至少,向我们展示下钻取的细节,或者例如 PlayerUpdateTime 内部发生的事情。

【讨论】:

我不关心 playerupdate 时间或任何事情,我可以清楚地看到 PostLateUpdate.presentafterdraw 会导致这些性能峰值,所以这就是我想要修复的,但我会尝试 traceview

以上是关于Unity Profiler PostLateUpdate.PresentAfterDraw的主要内容,如果未能解决你的问题,请参考以下文章

Unity记一次Profiler补捉到的粒子性能优化

通过profiler对unity进行针对性优化

记一次基于Unity的Profiler性能分析

unity性能分析之Profiler工具的使用

Unity Profiler Memory

如何用好Unity自带的Profiler