Cocos2d纹理内存使用情况

时间:2012-01-02 22:59:55

标签: iphone xcode cocos2d-iphone opengl-es-2.0

我正在使用cocos2d并拥有一个1024x1024 spritesheet。

我以RGBA4444格式加载纹理,它消耗2MB标记为'gfxAllocateTextureLevel'。

然后当我从spritesheet创建CCSprites时,它会立即消耗额外的4MB内存,标记为glsmLoadTextureLevelBuffer。

总共6MB,相对于我的应用而言相当多。这是预期的吗?是否需要为每个spritesheet甚至CCSpriteBatchNode创建这样的缓冲区?感谢。

2 个答案:

答案 0 :(得分:1)

OpelGLES1.1 Spec州:

  

" GL将生成的纹理与其自己选择的内部组件分辨率"

一起存储

=> GPU /驱动程序可能会根据GPU的需要将像素转换为大小(GPU可能只能在某些像素格式上运行,因此任何不会被制作成一个像素格式的东西),所以我认为你有2MB的RGBA4444和4MB的相同精灵表的RGBA8888。

答案 1 :(得分:0)

我有同样的问题! 我以RGBA8888格式加载纹理,它消耗4MB标记为'gfxAllocateTextureLevel'。

然后当我从spritesheet创建CCSprites时,它会立即消耗额外的4MB内存,标记为glsmLoadTextureLevelBuffer。