2.拼图 不知道大家是否有过这样的一个疑问,为什么要把场景中小图片都拼接成一个大图片呢?这个问题我们在使用精灵表的时候简单说了一下,这一节我们详细介绍一下它原因。 如果把多个小图拼接称为一个大图(纹理图或精灵表),可以减少IO操作。并且使用散图每次都要针对一个图,创建精灵添加到纹理缓存,如果很频繁而大量创建,对于CPU和内存的开销很高。而使用大图,则一次性将创建精灵帧缓存,并把它们纹理添加到纹理缓存中,这样会明显地提高效率。 在进行图片拼接的时候,如果能够满足用户保真度情况下,大图越小当然是越好。我们可以通过TexturePacker等纹理拼图工具,设置纹理支持NPOT,这些工具的使用大家可以参考我们的(《Cocos2d-x实战(卷Ⅳ):工具详解》)。 那么什么是NPOT呢?NPOT是“non power of two”的缩写,意思是非2的N次幂。在OpenGL ES1.1时候纹理图片要求是2的N次幂(即,POT),否则纹理无法创建。POT要求下使用纹理工具拼接成的大图,可以会有很多的空白区域。如下图所示,右下角还有一些空白区域,造成了浪费,也会同时增加图片的大小,下图所示的图片大小是2048KB。