一、硬件层面

硬件厂商一般都会针对自己的硬件产品提供特定的优化,如提高纹理上传速度、数据读取、计算优化。引擎开发商会和他们合作,针对不同硬件进行特殊处理,使用一些特殊的GL扩展库,这些工作由引擎开发商完成。

二、程序层面

  • 设计资源管理方案
    • 预加载,避免临时动态加载。
    • 释放不再使用的资源,减少内存占用。
    • 引用计数方案: cocos2dx_资源管理方案
  • 适当使用多级纹理(glGenerateMipmap)
    • 根据设备分辨率和资源分辨率使用合适级别的纹理,减少低分辨率设备内存浪费
    • 减少纹理上传频率,减少带宽占用。
    • 这是动态生成多级纹理,可以减小纹理资源大小(多分辨率资源),会牺牲一些计算性能,多一些内存占用。
    • 相关知识:cocos2dx_多级纹理(mipmapping)
  • 使用alpha预乘(alpha pre-multiplied)
    • 减少纹理在场景混合时的计算量。
  • 逐帧加载纹理

    • 按从大到小顺序加载。

      三、资源层面

  • 使用合适的像素格式

    • 16bit纹理比32bit纹理,品质查不了太多,但是内存少一半
    • RGB565代替RGB888
    • alpha通道简单的图像,使用RGB5A1
    • 设置合适的defaultAlphaPixelFormat
      • cocos默认纹理都转换成RGB888/RGBA8888格式,压缩纹理不被设备支持时也会被解压成RGB888/RGBA8888格式。
      • 很多场景可以使用16位的RGB代替,大大减少内存占用。
  • 小纹理合成大纹理
    • 减少绘制次数提升渲染性能,TexturePaker打包大图
  • 工具生成多级纹理资源
  • 使用压缩纹理,可以明显改善性能。
    • 减少资源文件大小
    • 减少纹理内存占用
    • 减少带宽占用(GPU直接解压纹理)
    • 提升纹理读取速度
  • 权衡图片压缩质量
    • 在单个图像的压缩质量可以适当做出牺牲,只要场景整体画质OK就可以。