TiledMap 地图优化

现在遇到tiledMap一个问题,我直接用的tests那一套绘制地图,如果地图大了导致帧数比较低。不知道大家是否有优化的方法,请大大们给我讲讲。感激涕零!!!!!

顶??顶

顶一顶:(

你遇到帧率严重下降,那么应该地图块数量很多,导致渲染占用太多的时间。我在做cocos2d-html5引擎的时候,有遇到类似的问题(地图由5k个地图块构成,帧率严重下降),解决的方法是将地图块缓存起来,作为一个图片,这样渲染和刷新的速度就上去了:P:。

— Begin quote from ____

linshun 发表于 2012-4-30 16:38 url

你遇到帧率严重下降,那么应该地图块数量很多,导致渲染占用太多的时间。我在做cocos2d-html5引擎的时候, …

— End quote

cocos2d-x底层没做优化吗?我还没看这部分源码。
按道理来说,只应该绘制能在屏幕上显示的那部分tile

— Begin quote from ____

linshun 发表于 2012-4-30 16:38 url

你遇到帧率严重下降,那么应该地图块数量很多,导致渲染占用太多的时间。我在做cocos2d-html5引擎的时候, …

— End quote

大大,我菜鸟一个。刚接触,请教下怎样实现缓存哦?

— Begin quote from ____

老G 发表于 2012-4-30 18:58 url

cocos2d-x底层没做优化吗?我还没看这部分源码。
按道理来说,只应该绘制能在屏幕上显示的那部分tile …

— End quote

open gl 有自带这个优化功能,只绘制出显示区域的部分,超出显示区域的不绘制。
canvas没有这个功能,但是我们有做软件优化,实现类似功能。

但是讨论的问题是另外一个层面的,举一个例子,有一个测试例,就是将tilemap的瓦片地图,先缩小,然后拼接显示,显示区域里面就有5k个,我说的是这种情况。

— Begin quote from ____

linshun 发表于 2012-5-2 10:18 url

open gl 有自带这个优化功能,只绘制出显示区域的部分,超出显示区域的不绘制。
canvas没有这个功能,但 …

— End quote

如果是这样的话,确实需要用缓冲算法了。如果地图不滚动的话,只需要在加载后绘制一次即可。
如果地图是滚动的,还需要用可更新的动态缓冲算法,比如carmack scroll之类

— Begin quote from ____

cocos2dxlijiang 发表于 2012-5-1 19:52 url

大大,我菜鸟一个。刚接触,请教下怎样实现缓存哦?

— End quote

具体的功能是在CCRenderTexture里面,可以参考测试例RenderTextureTest的第四个case,里面有一个save image的功能,具体实现就是将open gl 画下来的东西当成一个新的纹理存储下来,也可以当成图片存下来。具体实现你可以看代码。

— Begin quote from ____

linshun 发表于 2012-5-2 10:18 url

open gl 有自带这个优化功能,只绘制出显示区域的部分,超出显示区域的不绘制。
canvas没有这个功能,但 …

— End quote

大大,请问下,怎样将地图块缓存?

— Begin quote from ____

linshun 发表于 2012-5-2 10:37 url

具体的功能是在CCRenderTexture里面,可以参考测试例RenderTextureTest的第四个case,里面有一个save ima …

— End quote

谢谢大大了。

有一种地图绘制,叫做卡马克卷轴。。。。

你遇到帧率严重下降,那么应该地图块数量很多,导致渲染占用太多的时间。我在做cocos2d-html5引擎的时候,有遇到类似的问题(地图由5k个地图块构成,帧率严重下降),解决的方法是将地图块缓存起来,作为一个图片,这样渲染和刷新的速度就上去了:P:。

— Begin quote from ____

老G 发表于 2012-4-30 18:58 url

cocos2d-x底层没做优化吗?我还没看这部分源码。
按道理来说,只应该绘制能在屏幕上显示的那部分tile …

— End quote

open gl 有自带这个优化功能,只绘制出显示区域的部分,超出显示区域的不绘制。
canvas没有这个功能,但是我们有做软件优化,实现类似功能。

但是讨论的问题是另外一个层面的,举一个例子,有一个测试例,就是将tilemap的瓦片地图,先缩小,然后拼接显示,显示区域里面就有5k个,我说的是这种情况。

— Begin quote from ____

cocos2dxlijiang 发表于 2012-5-1 19:52 url

大大,我菜鸟一个。刚接触,请教下怎样实现缓存哦?

— End quote

具体的功能是在CCRenderTexture里面,可以参考测试例RenderTextureTest的第四个case,里面有一个save image的功能,具体实现就是将open gl 画下来的东西当成一个新的纹理存储下来,也可以当成图片存下来。具体实现你可以看代码。

有一种地图绘制,叫做卡马克卷轴。。。。

mark
mark
mark
mark
mark
mark
mark

mark

mark

反正地图就显示指定区域, 完全可以自己写个算法. 用tieldMap制作, 然后自己解析.
官方的代码太多, 我都不清楚是干什么用的,