我正在创建一个OpenGL游戏,它将使用纹理图集来加载大量艺术作品。
纹理地图集非常好,因为您只需加载一次图像,然后从中剪切精灵。您可以节省从磁盘加载所有文件所需的时间,如果它们是独立的,则可以节省内存来存储图像。但在我看来,超越某一点这个好处就不会那么真,对吧?我的想法是,如果纹理图集非常庞大,你将浪费大量内存来存储它,也许它上面的一些精灵不会经常使用。
最好的方法是什么?分成多个精灵?等级的精灵还是什么?
无论如何,我的问题是:像素的大小(对应于最大值)是什么应该被认为是一种好处?
答案 0 :(得分:5)
最新的iOS设备(iPhone 4S及更高版本,iPad 2及更高版本)支持最多4096 * 4096像素纹理。以前的所有设备除了前两个现在已经过时的iPhone都支持2048 * 2048像素,所以它不像你可以去无限远以及更远。
iOS设备在处理一些最大尺寸纹理时不会有问题,但实际应该走多远取决于您的内容。例如,如果用户一次只能作为其中一个玩家角色,那么在最大尺寸纹理图集上浪费内存就没有意义,因为它可以保存多个玩家角色的精灵。所以我想你的问题没有普遍的答案。
答案 1 :(得分:0)
如果您实际使用纹理中的所有区域,因此不关心浪费的内存空间,那么转到2048x2048没有任何特定的性能损失。
如果您在采样时最终过滤不足(例如,将512 * 512纹理区域投影到屏幕的更小区域),则可能会导致大量额外的内存提取。如果你正在编写一个2D游戏,精灵大部分是以1:1的比例绘制的(可能是轻微的缩放或旋转),那么这不是一个问题。
同样,如果您正在进行3D渲染并使用mipmap,那么mipmap将处理不完整的情况。