2017-01-01 52 views
0

我正在尝试使用cocos2dx来恢复旧游戏。 我所做的是读取遗留二进制文件并提取位图文件,其中有68k位图文件。 因此,现在我已经读取文件,解压缩字节,将位图从RGB8转换为RGBA8888,然后生成位图作为纹理并创建精灵。 但由于它是一个等距游戏,所以有一个地图,并由许多瓦片组成。因此,使用不同纹理(每个位图作为单独纹理)绘制地图会花费大量的glcalls。我所做的就是试图重用纹理,并通过本地zorder对它们进行分组,以尝试使用自动批处理。如何提高位图纹理渲染在cocos2dx中的性能

对于角色的动画,现在我已经创建了127个单独的位图纹理,并尝试在它上面逐个创建精灵框架。

所有的GL绘制调用减少从800到50,但unluckyly的FPS仍然太慢作品后(下降到10-20,它应该是60)

该试验在iPhone上运行模拟器,虽然它没有任何GPU,但这仍然是一个正常的FPS?(有近13k的vert)

并且FPS受到我角色动画纹理数量的影响吗?

我应该尝试在运行时打包纹理吗?例如结合纹理以在运行时在内存中创建更大的纹理并通过偏移量加载它们。

+0

你的真正意思是什么?它对FPS有什么影响?你还每个帧都调用glTexImage2D()吗? – Sung

+0

这是由cocos2dx调试的消息,所以我明白应该是gl绘制调用?而且fps应该与gl绘制电话相关或不相关?而且我还没有真正直接使用opengl调用,所以我把它全部留给了cocos2dx引擎来完成。那么你是否建议我应该进入opengl例程而不是使用cocos2dx? –

+0

你真的知道你的瓶颈是什么吗? 50个绘制调用和13K个vert都不算什么,所以听起来并不像OpenGL层实际上是你的问题。你有没有尝试分析你的应用程序?您使用的是什么设备GPU? – solidpixel

回答

1

甚至不要看模拟器上的性能。这是完全不相关的和非代表性的。

目前所有的iOS设备都可以处理50个绘制调用和13k个垂直线,除非您还有其他一些瓶颈(您只能通过设备运行才能找到),那么您肯定会以60fps的速度运行。