Iphone 纹理图集应具有的最大尺寸是多少?

Iphone 纹理图集应具有的最大尺寸是多少?,iphone,ios,ipad,cocoa-touch,opengl-es,Iphone,Ios,Ipad,Cocoa Touch,Opengl Es,我正在创建一个OpenGL游戏,它将使用纹理地图集来加载大量的艺术品 纹理地图集很好,因为你只需加载一次图像,然后从中剪切精灵。如果文件是独立的,则可以节省从磁盘加载所有文件所需的时间,并且可以节省内存来存储图像。但在我看来,超过某一点,这种好处就不会那么真实了,对吧?我的想法是,如果纹理图集非常大,您将浪费大量内存来存储它,并且可能其中的一些精灵不会经常使用 最好的方法是什么?分成多个精灵?一个关卡的精灵还是什么 无论如何,我的问题是:atlas的最大值对应的像素大小应该是多少?最新的iOS设

我正在创建一个OpenGL游戏,它将使用纹理地图集来加载大量的艺术品

纹理地图集很好,因为你只需加载一次图像,然后从中剪切精灵。如果文件是独立的,则可以节省从磁盘加载所有文件所需的时间,并且可以节省内存来存储图像。但在我看来,超过某一点,这种好处就不会那么真实了,对吧?我的想法是,如果纹理图集非常大,您将浪费大量内存来存储它,并且可能其中的一些精灵不会经常使用

最好的方法是什么?分成多个精灵?一个关卡的精灵还是什么

无论如何,我的问题是:atlas的最大值对应的像素大小应该是多少?最新的iOS设备(iPhone 4S及更高版本、iPad 2及更高版本)最多支持4096*4096像素的纹理。以前的所有设备,除了前两部已经过时的iphone,都支持2048*2048px,所以你不可能无限延伸


iOS设备在处理一些最大大小的纹理时不会遇到问题,但实际的纹理大小在很大程度上取决于您的内容。例如,如果用户一次只能扮演多个玩家角色中的一个,那么在一个最大尺寸的纹理图集上浪费内存是没有意义的,该图集包含多个玩家角色的精灵。因此,我想对于您的问题没有通用的答案。

如果您实际使用了纹理中的所有区域,因此不担心内存空间浪费,那么转到2048x2048不会有任何特定的性能损失

问题在于,如果采样时过滤不足(例如,将512*512纹理区域投影到屏幕的较小区域),则可能会导致大量额外内存获取。如果您正在编写一个2D游戏,其中精灵的绘制比例大多为1:1(可能是较小的缩放或旋转),那么这并不重要


类似地,如果您正在进行3D渲染,并且有mipmap,则mipmap将处理欠过滤情况。

没有经验法则。您必须分析自己的应用程序以确定性能权衡。好的,我知道,我说的是常识。常识要求您将尺寸保持在支持的最大纹理尺寸之下<代码>总图最大纹理大小x
总图最大纹理大小
。一个非常现实的问题是,纹理不能“部分驻留”在OpenGL ES中(顺便说一句,您将此问题标记为错误的GL版本),因此您不希望使用最大大小的纹理并将90%的内存浪费在空白空间上,或者强制几乎从未被引用的纹理保持驻留状态,仅仅因为其他更常见的纹理总是被引用。在这一点上,您开始撤销单个纹理缓存的好处。好的,谢谢您的解释。我怀疑,超过某一点,它将不会对应用程序带来好处。谢谢