gpt4 book ai didi

Android drawBitmap 对大量位图的性能?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:09 28 4
gpt4 key购买 nike

我正在编写一款 Android 游戏,我似乎遇到了在 Canvas 上绘图的性能问题。我的游戏有多个关卡,每个关卡中(显然)有不同数量的对象。

奇怪的是,在一个包含 45 张图像的关卡中,运行完美(几乎 60 fps)。然而,另一个包含 81 张图像的关卡几乎没有运行(11 fps);它几乎无法播放。除了我之外,其他人觉得这很奇怪吗?

我使用的所有图像都是 .png 格式,上述级别之间的唯一区别是图像的数量。

这是怎么回事? Canvas 可以不在每个游戏循环中绘制这么多图像吗?你们会如何建议我改进此性能?

提前致谢。

最佳答案

我也觉得奇怪。我也在开发一个游戏,很多关卡,我可以很容易地在屏幕上显示 100 个游戏对象,还没有看到类似的问题。

如果使用得当,drawbitmap确实应该很快;它只不过是一个复制命令。我什至不会画圆圈;我有预渲染圆圈的位图。

但是,Android 中位图的性能对您的操作方式非常敏感。创建位图可能非常昂贵,因为默认情况下 Android 可以自动缩放 png,这是 CPU 密集型的。所有这些都需要在渲染循环之外只完成一次。

我怀疑你找错地方了。如果您以相同的方式创建和使用相同类型的图像,那么将屏幕图像的数量加倍不应将性能降低 4 倍以上。最多应该是线性的(2 倍)。

我的第一个怀疑是您的大部分 CPU 时间都花在了碰撞检测上。与绘制位图不同,这通常随着交互对象数量的平方而增加,因为每个对象都必须测试是否与其他对象发生碰撞。您将游戏对象的数量增加了一倍,但您的性能下降到四分之一,即根据对象数量的平方。如果是这种情况,请不要绝望;有一些碰撞检测方法不会随着对象数量的平方增长。

与此同时,我会进行基本测试。如果您实际上不绘制一半的对象会怎样?游戏运行速度更快吗?如果不是,则与绘图无关。

关于Android drawBitmap 对大量位图的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981707/

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