gpt4 book ai didi

ios - cocos2d闪烁

转载 作者:行者123 更新时间:2023-11-29 13:26:39 25 4
gpt4 key购买 nike

我在两个数组 displayGrid1 和 displayGrid2 中都有一个编号为 1200 的 CCSprite 池。在显示墙壁或地板时,我将它们变为可见或不可见。地板有许多不同的纹理并且不依赖于 z 顺序。墙壁也有多种纹理,并且依赖于 z 顺序。

我在移动时得到大约 6-7 帧,这没关系,因为它是一个基于回合的等距流氓类游戏。但是,我也遇到了少量闪烁,我认为这与性能有关,因为模拟器上没有闪烁。

我想提高性能。我正在考虑为地板使用不依赖于 z 顺序的数组 CCSpriteBatchNodes,但我担心在该数组的元素之间频繁添加和删除 Sprite 的成本,我认为这是必要的。

有人可以建议我如何提高性能吗?

最佳答案

如评论中所述,您正在使用多个单独加载的小 Sprite 文件,这可能会导致性能问题,因为浪费内存用于存储每个单独 Sprite 周围的多余像素数据。出于性能原因,OpenGL 纹理中的每一行像素数据必须具有总计 2 的幂的字节数。虽然我相信 iOS 下的 OpenGL ES 会自动执行此操作,但它会带来很大的性能影响。将 sprite 分组到一个大小正确的纹理中可以极大地提高渲染性能。

您可以使用像 Zwoptex 这样的应用程序将所有这些较小的 Sprite 文件分组到一个更大、更易于管理的 Sprite 表/纹理图集中,并为每个 Sprite 表/纹理图集使用一个 CCSpriteBatchNode。

Cocos2D 对使用带有纹理图集的 Sprite 表有很好的支持,并且可以轻松地将您的代码转换为使用这些而不是单个文件。从纹理图集创建单个 Sprite 很容易,您只需按名称而不是从文件中调用 Sprite 即可。

CCSpriteBatchNodes 将 OpenGL 对其 sprite 的调用组合在一起,这一过程称为批处理,这会导致操作系统和 OpenGL 不得不减少与 GPU 的往返次数,这大大提高了性能。不幸的是,CCSpriteBatchNode 仅限于为支持它们的纹理绘制 Sprite (输入 Sprite 表/纹理图集)。

关于ios - cocos2d闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12959817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com