gpt4 book ai didi

Android:Canvas.DrawBitmap VS Drawable.Draw - 巨大的性能提升

转载 作者:IT老高 更新时间:2023-10-28 23:35:41 28 4
gpt4 key购买 nike

我刚刚发现了一些东西,我想知道如何以及为什么。我正在为 Android 开发一款小型街机游戏。我决定忽略 OpenGL 并使用标准的 SurfaceView 和 Drawables 来完成它,因为它应该很轻(大约 10 个 Sprite )。我有我加载的可绘制对象,我使用方法 Draw 并将它们传递给我的 Canvas 。这就是每个 Sprite 被绘制到屏幕上的方式。事实证明,在非全新手机型号上绘制 4-5 个大 Sprite (200X400 左右)需要很长时间。足够长的时间让我的游戏无法玩。我们正在谈论使用此方法绘制单个帧需要 50-60 毫秒。除了画画,我真的什么都不做,我无处可以削减成本。所以我决定尝试使用位图。然而,在这里,我需要预先设置大小,因为位图中没有“setBounds”方法。没问题,我在加载时调整它们的大小以适应我当前的屏幕,问题解决了。

好的。所以我得到了位图。我现在使用 Canvas.DrawBitmap 进行绘制。我对新的绘制方法进行了基准测试.. 我得到了惊人的 400% 性能提升! 整个绘制循环现在需要 8-12 毫秒,而不是 50-60 毫秒。 什么鬼??为了排除它,我也对 setBounds 进行了计时,它需要 <1 毫秒,所以这不是罪魁祸首。真正的 Drawable.Draw 会减慢速度。

对我来说这是个好消息,因为我真的不想学习 OpenGL 来让我的游戏可玩,但我不禁想知道 - 可以吗?我的方法有问题吗?为什么在任何地方都没有提到它?

最佳答案

CanvasSurfaceView 是为了在您应该不断迭代而 Drawable 不用于此目的时使用。

关于Android:Canvas.DrawBitmap VS Drawable.Draw - 巨大的性能提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4296441/

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