渲染和 CPU 是不是忽略了屏幕外动画?

Posted

技术标签:

【中文标题】渲染和 CPU 是不是忽略了屏幕外动画?【英文标题】:Are offscreen animations ignored by rendering and CPU?渲染和 CPU 是否忽略了屏幕外动画? 【发布时间】:2012-02-23 04:57:08 【问题描述】:

只是想知道 Cocos 如何为屏幕外的 CCSprite(包括动画中间的那些)管理 CPU 周期和图形引擎。如果您有许多动画精灵在屏幕上出现和离开,我可以检查并在每个动画离开屏幕时停止它,然后在它即将重新打开时重新启动它,但我想知道这是否有必要?

假设您有一个包含一堆图层的图层,并且您使图层不可见,但不要停止精灵动画。他们还会使用 CPU 时间吗?

【问题讨论】:

【参考方案1】:

我刚刚做了一个快速测试(好问题:)),在一个游戏中,我可以在一个大地图上滑动屏幕,其中包含执行“空闲”动画的士兵图像。它们在屏幕外时继续运行(我将 CCCallFunc 以一个永远重复的顺序添加到一个简单的记录选择器中)。

我怀疑当对象不可见时它们也会运行。这有点道理,尤其是对于动画。如果你看看我的用例,如果动画被停止,如果用户将士兵滑入和滑出视野,可能会导致认知脱节,尤其是当士兵在地图上散步时——他实际上可以走进去用户未与屏幕进行任何交互的视图。

【讨论】:

有趣;因此 CPU 可能正在处理这些动画,即使它们不在屏幕上。但我认为图形引擎根本不参与,除非它们在屏幕上,对吧 @andrewx : 我偶然发现的新线程,很多关于 GPU 的有趣内容,精灵的处理成本等。***.com/questions/9502586/…

以上是关于渲染和 CPU 是不是忽略了屏幕外动画?的主要内容,如果未能解决你的问题,请参考以下文章

iOS离屏渲染

iOS动画原理--模型树和呈现树

将 webbrowser 控件渲染到屏幕外(或隐藏)

离屏渲染

高性能Web动画和渲染原理系列——渲染管线和CPU渲染

线条不会在具有完全黑色纹理的屏幕外帧缓冲区上渲染