CCLayer缩放后FPS掉的很低

  • 本帖最后由 fernando 于 2012-8-16 10:25 编辑 *

我现在有个CCLayer上放置了一个超级大的sprite(8640px * 5760 px),该sprite使用一张小的图片(256px * 256px)拼成。未缩放时FPS为30左右,缩放到0.3时,FPS掉到13左右,缩放到最小(1/9)时,FPS掉到15。 我希望Layer缩小后,FPS不要降低太多,这个问题如何解决啊?
调试环境: iTouch4 + cocos2d-x 0.12.0

— Begin quote from ____

skoky 发表于 2012-8-16 10:40 url

2D 绘制是很吃效率的东西。所以屏蔽掉不需要显示到屏幕上的sprite能大大的加快速度,因为没有显示到屏幕 …

— End quote

您说的不错。但是我现在缩小Layer的目的就是为了将整个地图上的单位都显示出来。
我刚试了一下,Layer上除了背景sprite,不添加任何其它sprite,未缩放时FPS为60, 缩小到(1/9)时FPS掉到19-20。
我准备再试一下,使用不同尺寸的小图片拼接那张大背景图,看有什么影响。

— Begin quote from ____

fernando 发表于 2012-8-16 10:57 url

您说的不错。但是我现在缩小Layer的目的就是为了将整个地图上的单位都显示出来。
我刚试了一下,Layer上 …

— End quote

图形的放大缩小是会有缩放算法的,至于里面具体要消耗多少效率这个我没研究过。

我之前做过的游戏都是只显示里面的一部分。

你是不是在android模拟器上跑? 还是在其他平台跑?

— Begin quote from ____

skoky 发表于 2012-8-16 11:00 url

图形的放大缩小是会有缩放算法的,至于里面具体要消耗多少效率这个我没研究过。

我之前做过的游戏都是只 …

— End quote

我直接使用的CCLayer的setScale(float scale)函数来缩放Layer。
我的调试环境是iTouch4 + cocos2d-x 0.12.0

— Begin quote from ____

fernando 发表于 2012-8-16 10:22 url

我的描述有点不准确,我之前说的Layer大小指的是上面放置的一张背景sprite的大小,该背景sprite使用一张 …

— End quote

2D 绘制是很吃效率的东西。所以屏蔽掉不需要显示到屏幕上的sprite能大大的加快速度,因为没有显示到屏幕上的图也会跑绘制逻辑,消耗很多不必要的cpu

— Begin quote from ____

skoky 发表于 2012-8-16 08:55 url

会吗? 这个你缩放后显示的东西更多了吧? 不然怎么可能降低那么多效率呢。

空的CCLayer管你多大,都是一 …

— End quote

我的描述有点不准确,我之前说的Layer大小指的是上面放置的一张背景sprite的大小,该背景sprite使用一张小的图片(256px * 256 px)拼接而成。layer上目前显示的东西不是很多(30个左右的sprites加一个小的tilemap),我看别人的一些养成游戏,背景地图超级大,上面显示的东西超级多,但是也很流畅。不知道他们是怎么做到的?

会吗? 这个你缩放后显示的东西更多了吧? 不然怎么可能降低那么多效率呢。

空的CCLayer管你多大,都是一个数值而已。